IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Botnety - Mechanizmy

V minulom dieli sme si urobili úvod do teórie okolo botnetov. V dnešnom článku sa budeme venovať mechanizmom takého siete.

Mechanizmy

Komunikačné protokoly

Komunikácia v mojom botnet prebieha na základe HTTP požiadaviek a sťahovaním súborov s príkazmi a dodatočnými údajmi.

Odosielanie dát hosťovi

Dáta sú odosielané pomocou HTTP požiadavky GET. Program používa Powershell (Batch) a WebClient (C #) na odoslanie. Následná implementácia URL prebieha v zostavení formáte "kam chcem odoslať + údaje" napr. http://stránka.com/index.php?data=ahoj. V PowerShell sa vytvorí skript v jazyku VBS, ktorý sa prenesie do súboru poslat.vbs. Tento súbor sa spustí a po odoslaní požadovaných dát sa sám odstráni. V prípade C# som vyhotovil elegantnejšie riešenie vyberaním hostí, ktorí sú dostupní a modulovania veličín na túto adresu, kedy nie je nutný žiadny súbor, len funkcia, ktorá prijíma dáta a odosiela ich.

Prijímanie údajov od klienta

prebieha na princípe požiadaviek GET a POST, ktoré sú odosielané na webový server (host). Pri prijatí tejto požiadavky sa overí heslo a dáta, ktoré sa posielajú a vložená do súboru, odkiaľ si ich spracuje stránka podľa naprogramovania. Názorný príklad: $promenna=GET['id']; všetky dáta pod kľúčom id budú odovzdaná do premennej $promenna a ďalej spracovaná. Bohužiaľ požiadavky majú určité obmedzenia a sú u nich limity znakov. Posielanie súborov je vyhotovené pomocou požiadaviek POST. Posielanie správ napr. O stave je pomocou GET.

Odosielanie dát klientovi

prebieha sťahovaním súborov s dátami určenými na spracovanie. Dáta v súbore sú oddelené riadky a klient si vyberie vždy len riadok, ktorý potrebuje získať. Hosť zapíše do tohto určeného súboru dáta na určené miesta a vyčkáva na ich stiahnutie a následnú správu od klienta o vykonaní.

Prijímanie dát od hosťa

Klient sťahuje v stanovenej frekvencii (2Hz) súbor s dátami, po jeho stiahnutí sa prečítajú riadky s príkazmi a ďalšími argumentmi. Host príkazy a argumenty spracuje a použije podľa inštrukcií, akonáhle sú spracované pošle serveru správu o stave. Dátový tok je v rozmedzí 50-500bitů za sekundu.

Prijímanie dát od hosťa botnetov - Sieťové technológie

Vykonávanie príkazov

Selektívne vykonávanie príkazov

Všetci klienti môžu vykonávať rovnaký príkaz, alebo je možné vykonávať tieto príkazy aj selektívne tzv. Len pre cieľových klientov. Po prvom spustení sa každému BOTovi vytvorí jeho jedinečné ID, pomocou ktorého môžeme určiť, že iba tento vykoná náš príkaz a ID požadovaného Topánka je uložené v stiahnutom súbore a prečítané.

Hromadné vykonávanie príkazov

Klienti môžu vykonávať hromadné príkazy tzv. Bez udavatele ID. Tieto príkazy budú vykonané všetkými klientmi, ktorí sú online a počúvajú. Po vykonaní nasleduje ďalší príkaz.

Štruktúra

Klient

Chrbticovej programy

Tvorí najvýznamnejšiu časť klienta, ktorá je zodpovedná za odosielanie, prijímanie a vyhodnocovanie dát. Ďalej spúšťa podprogramy a nami definované funkcie, ktoré by taky mohli byť definované v externej knižnici "dll". Vzhľadom k obfuskaci kódu toto nie je tak ľahko realizovateľné a nie je to tak ľahko maskovatelné ako sú vnútorné funkcie. Kód je tiež vďaka tomuto odolný voči dekompiláciu a reversnímu inžinierstva, takže hľadanie riešení, ako sa tohto programu zbaviť, bude komplikované a časovo náročné pre výrobcov antivírusov. Chrbticovej štruktúru tvorí len hlavné programy, v tomto prípade 1 program, ktorý si dokáže v prípade potreby stiahnuť dodatočné súbory, ktoré postráda k činnosti. Chrbticovej program nesmie byť nikdy ukončený, pretože by sa stratil kontakt s počítačom, takže musí byť ošetrený a patrične odladený, aby nezlyhal alebo nevytvoril nejakú chybu.

Je nutné zvoliť takú frekvenciu obnovenia, aby sme server nezaťažovali viac, než je potrebné, a nevytvárali tak zbytočne veľký dátový tok. Ak napr. Zvolíme prehnanú frekvenciu obnovenia 100 / s ~ 20Mb / s, používateľ si to všimne, spomalí sa prenos dát a žiadny zadarmo poskytovaný server nemá dostatočné Traffic limity. Toto je úplne zbytočné ak by sme zadávali príkazy manuálne. Pri strojovej komunikácii by sme museli voliť iný spôsob, pretože platené servery budú vodítkom k našej osobe a budeme stíhaní za činnosť. Bežný limit sa vyskytuje od 3GB ~ 30GB / mesiac, čo nie je moc a je nutné počítať s nedostatkom limitu. V prípade nedostatočného limitu sa program prepojí na inú stránku.

Podmienky pre chrbticovej program sú kompatibilita, bezchybnosť, optimalizácia, umelá inteligencia, sieťová komunikácia a schopnosť rozhodovať na základe dostupných dát. Tieto podmienky je nutné dodržať z mnohých dôvodov, napr. Keď ho nainštalujeme na nejakom počítači, ktorému chýba určité knižnice, nemôžeme očakávať, že program bude bez problémov fungovať. Bezchybnosť musí byť zachovaná už len kvôli zhode náhod a aspoň náš čistý kód musí byť natoľko bezchybný, aby sa sám neukončil a neprestal pracovať. Optimalizácia je nutná pre plynulý chod a nenáročnosť nášho programu. Ak budeme zbytočne preťažovať služby alebo miesto na disku tak by sa mohol program aj počítač spomaliť a dôjsť k reinštaláciu systému. Umelá inteligencia je tu pre tie prípady, že niektorý zo zavádzačov alebo podprogramov zlyhá a naruší integritu aj v tomto prípade je nutná náprava.

Sieťová komunikácia slúži na výmenu dát medzi klientom a serverom a je nutná jej celková diagnostika v prípadoch, keď vypadne internet alebo služba samotná. V týchto prípadoch je nutné definovať správanie klienta. Náročnosť komunikácia na objeme dát závisí na rýchlosti. Preto je nutné prenosy dát robiť častejšie po menších dieloch než po obrovskom objeme dát. Prílišná frekvencia odosielania dát vedie k nechcenému DDOS útoku a nie je možné ju podceňovať, pretože by sme si pri väčšom počte klientov zahltili vlastné službu. Schopnosť rozhodovať je tu myslená skôr z hľadiska príkazov serverom vydaných a schopnosť uskutočňovanie pokročilých funkcií bezchybne alebo nahlásenie chyby a spracovanie bez zásahu užívateľa.

Pomocné súbory

tvoria programy, ktoré vykonávajú služby nemožné uskutočniť samotným chrbtovým súborom. Je to Aktualizačná služba a Služba úplného odstránenia. Tieto súbory sú nutné z dôvodu odstraňovania samotného chrbticového súboru lebo sa nedokáže sám prepisovať. Služba Update slúži k obnoveniu verzie na aktuálne, ak sme vykonali zmeny. Je vybavená podmienkami, ktoré zamedzí aktualizáciu aktuálnej verzie. Služba úplného odstránenia vymaže všetky súbory a stopy zanechané v systéme používateľa a potom sa sama odstráni. Služby sú reprezentované v jazyku Batch. Sú v základnom archíve pre injekciu s chrbtovým súborom, nie zvlášť.

Zavádzača

sú programy, ktoré sa starajú o jednorazovú injekciu do systému a prvé spustenie. Skladajú sa z viacerých súborov, ktoré sa podľa odhalených možností vhodne zvolí. Injekcie sa týka iba základných súborov, ako je celok okrem Zavádzače (viď obr. Nižšie). Po dokončení injekcie sa odstráni a spustí chrbticovej súbor, ktorý dokončí inicializáciu pre daný stroj. Z tohto programu sa zostaví všetky bloky.

Podprogramy

Zriaďujú takzvaný funkčný blok nadväzujúce na požadované úlohy od servera, ktoré sú vykonávané. Úlohy môžu byť externé alebo interné, závisí to od ich veľkosti a komplikovanosti. Chrbticovej súbor je schopný nahrádzať chýbajúce externé súbory stiahnutím z hosťa. Ak je však problém interný, je potrebná aktualizácia celého celku. Podprogramy sú sťahované až v prídavných súboroch, ktoré obstaráva chrbticovej súbor a rozbalené z archívu.

Podprogramy pre botnety - Sieťové technológie

Chyba

Ak je vyvolaná výnimka (chyba), je odoslaná na spracovanie do bloku odoslania a následne vyriešená. Po každej chybe je program povinný odoslať informáciu o vzniknutej chybe. Tieto chyby sa na hosťovi ukladajú do súboru s id každého klienta a sú načítané do bloku pre čítanie správcom servera. Chyby sa delia na maskovatelné, ignorovatelné a kritické. Maskovatelné sú chyby, ktoré vznikli z meniaceho sa prostredia neexistujúcich súborov zdrojov alebo repozitára, bývajú často ľahko autonómne vyriešené zmenou hosťa. Ignorovatelné sú tie chyby, ktoré nemusíme sledovať, pretože sú vytvorené z banálnych dôvodov napr. Čítanie riadku, ktorý neexistuje, v tomto prípade sa aj využíva táto chyba ako ukazovateľ prázdnoty hodnoty. Kritické sú chyby, ktoré zapríčiní chybu programu alebo v horšom prípade jeho pád. Vznikajú v prípadoch neošetrené výnimky.

Bezpečnosť z viacerých uhlov

Bezpečnosť je nutná už len z dôvodu vývoja programu, kradnutie kódu od známych antivírusových firiem alebo len testovanie programu bezpečným spôsobom, aby neuškodil nášmu počítaču.

Bezpečnosť pred antivírusovými firmami

Pri vývoji programu som sa stretol so zákernosťou antivírusových firiem, ktoré sa mi snažili pokaziť moju prácu a vzhľadom k tomuto nebezpečenstvu chránim programy obfuskací, čo je zašifrovanie alebo upravenie kódu, aby nebolo možné reverzne odhaliť jeho činnosť alebo niektoré jeho statické hodnoty. Bol mi odcudzený kód botnet verzie 4.4-4.5, ktorý bol označený za novú bezpečnostnú výnimku v Oblasti MSIL / Agent.ASP. Testovanie vykonali firmy Microsoft a ESET. Vzhľadom k spúšťanie počítačov na ich zariadeniach mi dochádzali správy o virtuálnych počítačoch nachádzajúcich sa vo firmách napr. Microsoft. Vyššie spomínané firmy sa dohodli na blokáciu stránok a riešenie bezpečnostného rizika. Našťastie vďaka ochrane kódu škody neboli tak rozsiahle a firmy zablokovali len jedného hosťa a obfuskovaný kód, ktorý som bol nútený prepísať. Celkový program som upravil, aby sa nedal tak ľahko opäť získať a pri narušení od firiem sa len odhalí jeden program a maximálne jeden hosť. Pri tejto možnosti som zaviedol blokovania a dvojnásobné šifrovanie RSA a Xcrypt. Povolenie pre BOTA k vysielanie je zavedené na osobné povolenie pre určitú adresu BOTA s kľúčom.

Možnosti bezpečného testovanie Programu

Testovanie programu môže byť ošemetné už len z toho dôvodu, že si nechceme zaniesť vlastný počítač, preto používame Virtuálne počítače. Testovanie môjho programu prebehlo na zhruba 20 počítačoch Mendelovej Univerzity a Firiem ESET, Microsoft, VirusTotal a dobrovoľníkov. V tomto prípade bola na počítači nahraná záloha alebo bol nastavený pasívny režim programu, ktorý počítaču neškodil. Program používa verziu NetFramework 4.5.2+, vzhľadom k tomu musela byť doinštalovania dáta na starších počítačoch, ale nové počítače už sú týmito programami vybavené. Pre testovanie programu bola zvolená verzia programu s grafickým rozhraním takzvaným GUI. Alebo Visual Studio.

Prevencia proti zneužitiu

Kvôli krádeži kódu a jeho zneužitie je program zaistený už niekoľkými spôsobmi: Zašifrujte, Obmedzeným zásobníkom hostí a Obfuskací.

Šifrovanie

Týmto spôsobom sú ošetrené takmer všetky časti programu: archívy, programy, databázy, prístup a komunikácia. Keďže všetky prostriedky, čo si program sťahuje, sú početnejšie, je potreba ich vložiť do archívu, ktorý je heslovaný a zašifrovaný. Programy v archíve sú obfuskovány a ošetrené proti reverznému inžinierstva. Databázy sú ukladané vo vnútri programu, ktorý je už zašifrovaný. Prístup k webovému ovládanie je tiež ošetrený heslom, aby sa dovnútra dostal iba oprávnený človek. Komunikácia medzi serverom a klientom je šifrovaná tiež pomocou rôznych šifrovacích algoritmov.

Obmedzený zásobník hostí

Sú v ňom uloženia hostia, ktoré môže BOT skúšať, ak niektorý z nich nefunguje.

Zásobník je editovateľný iba priamou kompilácií, iným spôsobom nie je možný upraviť.

Obfuskace

Je proces, ktorým sa znemožňuje reverzácie kódu a činnosti. Väčšina programov v tomto projekte je týmto ošetrená. Obfuskace je viac druhov ako kryptografické tak prevod do nezmyselných znakov. Všetky tieto spôsoby sa úžitkovosťou líšia a ich eskaláciou sa zvyšuje možnosti odhaľovania obfuskace a úpravy programu. Obfuskace sa dá indikovať ako škodlivý program.

Nabudúce sa budeme venovať už programovania klienta.


 

Všetky články v sekcii
Sieťové technológie
Článok pre vás napísal Jiri Otoupal
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje Zabezpečení Softwaru, Inovaci v sítích , Správa Serverů,Malware,Exploiting, Penetration Testing
Aktivity