IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - BOTNET - Úvod

V rámci obohacení témat na ITnetwork jsem se rozhodl publikovat svoji práci BOTNET, aneb projekt S.A.N.D. Toto jméno dostal projekt od zabudování takzvané schopnosti "přežívat". Doufám, že toto bude pro některé z vás inspirace. Zdrojový kód mohu poskytnout pouze na požádání. Tento program byl označen společností ESET s.r.o. za bezpečnostní hrozbu s Exploitací PowerShell a ZIP archivy, které nebyly uveřejněny. V ukázkách nejsou uvedeny kompletní zdrojové kódy a neslouží jako návod! Pouze pro vzdělávací účely. V práci jsou uvedeny způsoby komunikace mezi boty, servery a veškerá funkce bloků v programu. Ze začátku seriálu uvedu do kontextu základní pojmy. Pro ty zkušenější, nenechte se znechutit a ze začátku to vydržte. Děkuji :)

Úvod

Definice pojmů a úvod do problematiky

Bot je takzvaný klient sítě BOTNET, odesílající data na server nebo jiného klienta. Response je odezva bota serveru nebo jinému botu o stavu příkazu, činnosti, procesu a dalšího. BOTNET, aneb síť počítačů, která je kontrolovaná z centra, většinou bývá označovaná za takzvaný škodlivý software, kterým je ovládán systém oběti bez jejího vědomí. V některých případech ale nemusí být nutně tento software škodlivý. Tento software nemusí být nutně v programové verzi jak si většina uživatelů myslí například Google používá tzv. BOTNET, pomocí kterého vám zobrazuje reklamy. Tento BOTNET je založen pouze na webových klientech, kteří pomocí vyhledávání jsou takzvaní klienti a i když si myslíme, že nás toto neovlivňuje, tak se ve většině případů mýlíme, jelikož služby Google jsou skoro všude. Například služby Google Analytics:

Ukázka Google analytics - Botnet

V této práci se, ale zaměříme na program, který bude na počítači a bude běžet jako proces v počítači, nikoli prohlížeči jako webový skript.

Historie

Začátky BOTNETu jako takového se začaly vyskytovat kolem roku 2000. Některé z prvních byly: Marina BOTNET s počtem okolo 6,215,000 botů, Bagle(2004) s počtem okolo 230,000 botů. Tyto sítě se aktivně používaly pro posílání spam emailů, DDOS a dalších služeb, které si zadavatelé vymysleli. Většina těchto sítí vznikla jen za účelem komerčního zisku. Bylo z nich možné profitovat například vyhrožováním určitým společnostem DDOS útokem nebo rozesílání reklamních emailů. Legálně se tyto sítě používaly k propojení a kontrole více počítačů za účelem splnění úkolů, na kterém pracovaly všechny společně tak, aby nebyla potřeba více lidí k zadávání příkazů. Bohužel historie BOTNETU je spíše nelegální a lidé si s ním spojují kriminální činnost.

Ilustrace Botnetu - Botnet

Vývoj topologií

Topologie Klient-Server

Tato topologie spočívá v jednom nebo více poskytovatelích (serverech), kteří sdílejí službu pro klienta/y. Tyto role se v této topologii nemění nebo se mění velice málo. V tomto případě Boti odesílají data na příslušný server za účelem předání informace o jejich stavu. Server tvoří záchytný bod, který všichni boti znají nebo znají jeden z mnoha bodů, kde si mohou odebírat data o jejich úkolech a dalších postupech. Nekomunikují však vzájemně, pouze přes zprostředkovatele (bod). Grafické znázornění Topologie:

Ukázka topologie klient-server - Botnet

Příklad komunikace klienta se serverem v našem BOTNETU by vypadal následujícím způsobem:

  • Server zadá požadavek k činnosti bota „Kolik je hodin na tvém místě?“.
  • Klient si tento požadavek převezme ke zpracování a na základě požadavku vykoná interní funkci.
  • Návratová hodnota bude doručena serveru prostřednictvím internetu, bude to odpověď klienta, například „4:00:09 AM GMT +1“.
  • Server za podmínky, že klient a server je stále připojen k internetu, odpověď zpracuje.
  • Server může zaslat klientovi, že jeho informace dorazila v pořádku dalším požadavkem. Pokud se informace rovná té, kterou odeslal klient, pokračuje v další úloze. Pokud ne, klient zkontroluje své internetové připojení a zkusí odeslat znovu.
  • Server zobrazí informaci, kterou jsme si zažádali, tedy „4:00:09 AMGMT + 1“.
  • Po ukončení tohoto cyklu klient odešle serveru odpověď o stavu, např. připraven nebo chyba.
  • Klient je připraven k dalšímu požadavku a server opět může zadávat nové úlohy klientovi.

Další topologie typu klient-server jsou hvězda, multi-server, hierarchická.

Hvězda

V této topologii jsou boti soustředěni kolem centrálního serveru jednoho z hostů (Obrázek s obrácením Odpověď Požadavek).

Multi Server

V této topologii jsou klienti servery a server je klient. Server chová jako klient a zadává požadavky ostatním a dostává odpovědi.

Hierarchická

V této topologii jsou boti organizováni do skupin, aby se zlepšila spolehlivost. Tyto skupiny mohou tvořit například státy, v kterých boti operují. Tato topologie je oblíbená z důvodu pronajímatelnosti těchto skupin a větší bezpečnosti v ohledu odhalení dotyčných botů.

Ukázka hierarchické topologie - Botnet

Topologie Klient-Klient (Peer to Peer)

Sestává z klientů připojených pomocí P2P, aneb klient připojený ke klientovi. Dělí se na další pod-topologie, ale vzhledem k cílům této práce je nebudu uvádět. Používá se například jako tzv.FailSafe BOTNETu, tzn., že pokud vypadne hlavní server, tak se boti dokáží přeformovat v plně funkční P2P síť a jejich „server“ bude jeden z nich, který vydá příkaz například s heslem. Bohužel většina DNS serverů a NAT připojení již blokuje P2P a tak si bot musí najít cestu k předání informace jiným způsobem. Těmi jsou například Teredo, který posílá vaši informaci přes celý internet, aby obešel všechna omezení a je tu značné zpoždění. Jsou tu i jiné možnosti jako je VPN a další, ale v této práci nebudeme sestavovat BOTNET z P2P.

Ukázka síťové topologie peer to peer - Botnet

Programovací jazyky

V této práci budeme používat více programových jazyků. Hypertextové, objektové a skripty ve vzájemné souhře a spolupráci. Tyto programy v různých jazycích jsou nastaveny tak, aby dokázaly mezi sebou sdílet důležité informace a proměnné.

Hypertextové jazyky

Programovací jazyk PHP a značkovací jazyk HTML budou použity pro tvorbu Hosta, který bude zadávat příkazy botům. Přidá se k nim jazyk JS (Javascript), který bude použit k ulehčení zadávání příkazů a adres botů. Host je WWW stránka na webostingu Endora, v případě výpadku je zde více hostů a program se dokáže mezi nimi přepínat na základě odezvy ze stažených souborů. CSS je použit pro tzv. vzhled stránky veškeré barvy, pozadí a designová stránka práce. Z těchto jazyků jsou v této práci nezbytné jen PHP a HTML, jelikož by host bez nich nefungoval. Ostatní jsou jen designové prvky nebo zjednodušení pro nás.

PHP

Jazyk používaný pro takzvaný backend proces ze strany serveru. Tento jazyk nevidí uživatel, je pouze na straně serveru. Je využit k zápisu, čtení příkazů, přihlašování, formátování tabulek a automatizaci procesu. Přebírá http požadavky ze strany botů (klientů), zapisuje příkazy do souborů, je nezbytný pro veškeré zpracování. Tvoří 50% z celé webové stránky.

HTML

Slouží jako hlavní tzv. nosný prvek při konstrukci stránek. Formuláře a páteřní struktura, kam se budou vkládat skripty, formátování a kam budeme generovat výstup na backendu. Tvoří 10% z webové stránky.

CSS

Tento jazyk je zodpovědný za formátování designové stránky hosta. Designové prvky jako je pozadí, okraje tabulek a veškeré viditelné prvky jsou nadefinované v tomto jazyku. Tvoří 20% z celkové webové stránky.

JS

Slouží k zprostředkování, v tomto případě zjednodušení, jako je automatické vyplnění údajů po kliknutí na odkaz a automatické obnovení stránky po přihlášení. Tvoří zbývajících 20% z celkové stránky.

Desktopové jazyky

C# .NET

Tento jazyk bude tvořit páteřní konstrukci klientů (botů), byl použit z důvodu nižší složitosti kódu, jelikož nemá tolik chybových stavů a není tak náchylný na chybovost. Bohužel se nedá použít na všechno a tak na jednoduší operace je využit jazyk Batch.

Jazyk se používá i pro konstrukci grafických aplikací. Zde je použit v konzolových aplikacích. Zpracování tohoto programu musí být prováděno kompilací a samotné programování v tomto jazyce bylo uskutečněno ve vývojovém prostředí Visual Studio. Bohužel v některých situacích by bylo jeho použití zbytečně složité, proto je použit skriptovací jazyk Batch. Jmenné prostory, třídy, metody jsou vrstvy programu. Pomocí volání metod v určité třídě můžeme snadno oddělit metody podle oboru činnosti, např.: souborové, diagnostické a další.

Skriptovací jazyky

Batch

Tento jazyk je ve operačním systému Windows použit k zprostředkování jednoduchých operací jako je kopírování, spouštění programů a dalších funkcí. V této práci jsem použil tento jazyk z důvodu jednoduchosti řešení, například mazání, a lepšímu přístupu k systémovým funkcím. Je použit pro službu Updater, Injector a jeho slave. Jednorázových příkazů (quickie), Remover (Odstranění všech souborů, které byly vytvořeny od BOTNETu.

VBScript

Zkratka pro „Visual Basic Scripting Edition“. Tento jazyk je velmi oblíbený u hackerů, jelikož se pomocí malého skriptu dá přistupovat k velkému množství programů a dat. Použití v této práci je na bázi skrytí našich činností a odesílání dat na našeho hosta. V případě, že bychom chtěli šířit náš program do dalších počítačů bez vědomosti uživatele, tak bychom tímto jazykem udělali rozhraní na kopírování emailových adres uložených v uživatelově emailu. Poté bychom na všechny tyto emaily odeslali nějakou výzvu z emailu, který by byl např. „developers@mi­crosoft.com“ se správou „Dobrý den $jméno$, nepodařila se aktualizace vašeho systému, aktualizujte programem přiloženým v příloze. V případě ignorování výzvy může dojít ke ztrátě vašich dat.“. Tento skript by nebylo těžké také vložit na stránku, kde by se automaticky spustil a ukázala by se uživateli např. koťátka.

Rozšiřování BOTNETu

Sociální sítě

Použití hlouposti lidí za účelem spuštění programů nebo navštívení stránek. Toto se většinou používá, jelikož jsou uživatelé zvědaví a kliknou nebo udělají něco, o čem nic neví. Např. Malware emaily, použití sociálních sítí (Facebook), použití komunikačních služeb (Skype, Teamspeak). Universální způsob jak se tyto věci dělají je využití zvídavosti, např. zvolení nějakého titulku, který uživatele zajímá. Po kliknutí se spustí skript a počítač je infikován, program může zasílat dalším lidem tento skript pod nějakou zprávou např. „Ahoj našel jsem úžasnou hru, stáhni si ji zde www.hra.cz“.

Bez použití uživatele

V tomto případě předpokládáme, že uživatel tento soubor nestáhne a nespustí. Je nutno použít jiných způsobů k dosažení svých cílů. Způsoby jsou např. vytvořit program, který v dané síti dokáže vkládat soubory do ostatních počítačů a spouštět na nich příkazy, ten nazýváme Exploit. V případě, že se rozhodneme pro tuto možnost, je nutné uvědomovat si všechny závislosti v sítích a dokázat svůj program naprogramovat tak, aby se přizpůsobil. V některých případech je možno použít konvenční exploity pro Windows XP, jelikož většina firem tyto operační systémy stále používá. Avšak daleko snazší je v sítích uplatňovat pravidlo „Need Admin“, což znamená, že se pokusíte získat práva administrátora a poté rozšíříte pomocí jeho práv všechny soubory do všech PC.

Využití chyb samotných operačních systémů Windows

V tomto případě předpokládáme, že uživatel a administrátoři provedli vynikající práci a k počítačům se nedá přistupovat Exploity a jinými konvenčními způsoby. V tento moment přichází poslední způsob jak si vytvořit vlastní přístup do systému a to je “ATOM Bomb“. Technika spočívající ve využívání systémových „Atomů“ ke spouštění příkazů na nejmenší bázi, které může vykonávat kdokoliv bez oprávnění, a tím obejdeme všechna oprávnění.

Děkuji za přečtení.

V příští lekci, BOTNET - Mechanismy, se podíváme na Mechanismy, které se týkají komunikačních protokolů tak i vykonávání příkazů.


 

Všechny články v sekci
Botnet
Přeskočit článek
(nedoporučujeme)
BOTNET - Mechanismy
Článek pro vás napsal Jiri Otoupal
Avatar
Uživatelské hodnocení:
29 hlasů
Autor se věnuje Zabezpečení Softwaru, Inovaci v sítích , Správa Serverů,Malware,Exploiting, Penetration Testing
Aktivity