Bhunter — botnet csomópontok feltörése

A vírusanalitikusok és a számítógépes biztonsági kutatók azon dolgoznak, hogy minél több mintát gyűjtsenek az új botnetekből. Céljaik eléréséhez honeypotokat használnak.… De mi van, ha valós körülmények között szeretnénk megfigyelni a kártékony szoftvert? Hogy kockáztassuk a saját szerverünket vagy routerünket? Mi van, ha nincs megfelelő eszközünk? Ezek a kérdések ösztönöztek arra, hogy létrehozzam a bhunter-t — egy eszközt a botnetek csomópontjaihoz való hozzáférés megszerzésére.

Bhunter — botnet csomópontok feltörése

A fő ötlet

Számos mód létezik a kártékony szoftverek elterjesztésére a botnetek bővítése érdekében: a phishingtől kezdve a 0-day sebezhetőségek kihasználásáig. De a legelterjedtebb módszer továbbra is a SSH jelszavak brute force támadása.

Az ötlet nagyon egyszerű. Ha egy botnet csomópont jelszó próbálkozást végez a szerverén, akkor valószínű, hogy az adott csomópontot egyszerű jelszavak brute force támadásával foglalták el. Ezért a hozzáférés megszerzéséhez egyszerűen viszonozni kell a támadást.

A bhunter pontosan így működik. Figyeli a 22-es portot (SSH szolgáltatás) és gyűjti az összes bejelentkezési kísérletet és jelszót, amellyel próbálnak csatlakozni hozzá. Ezután a begyűjtött jelszavakat felhasználva próbál csatlakozni a támadó csomópontokhoz.

Működési algoritmus

A programot lényegében két fő részre oszthatjuk, amelyek külön szálakon futnak. Az első rész a honeypot. Kezeli a bejelentkezési kísérleteket, gyűjti az egyedi bejelentkezéseket és jelszavakat (ebben az esetben a bejelentkezési+jelszó pár egy egységként van kezelve), valamint a csatlakozni próbáló IP-címeket a további támadás érdekében a sorba állítja.

A második rész közvetlenül a támadásért felel. A támadás két módban zajlik: BurstAttack (sorozattámadás) — az általános listából származó bejelentkezések és jelszavak brute force próbálkozása, és SingleShotAttack (egytámadás) — a támadott csomópont által használt, de még nem az általános listára hozzáadott jelszavak brute force próbálkozása.

Ahhoz, hogy a program indításakor legyen valamilyen bejelentkezési és jelszó adatbázis, a bhunter a "/etc/bhunter/defaultLoginPairs" fájlból inicializálódik.

Felület

Több lehetőség van a bhunter indítására:

Egyszerű parancs segítségével

sudo bhunter

Ezzel a módszerrel lehetőség van a bhunter irányítására a szöveges menüjén keresztül: hozzáadhatók bejelentkezések és jelszavak a támadáshoz, exportálható a bejelentkezések és jelszavak adatbázisa, megadható a támadás célja. Az összes feltört csomópont megtalálható a "/var/log/bhunter/hacked.log" fájlban.

Tmux használatával

sudo bhunter-ts # a bhunter indítása tmux-on  
sudo tmux attach -t bhunter # csatlakozás a bhunter által futtatott sessionhöz

A Tmux egy terminál multiplexor, amely rendkívül hasznos eszköz. Lehetővé teszi, hogy egy terminál keretein belül több ablakot hozzunk létre, és az ablakokat panelekre osszuk. Használatával kiléphetünk a terminálból, majd beléphetünk anélkül, hogy megszakítanánk a futó folyamatokat.

A bhunter-ts script létrehoz egy tmux session-t és három panelre osztja az ablakot. Az első panel a legnagyobb, itt található a szöveges menü. A jobb felső panelben a honeypot naplói találhatók, ahol láthatjuk a honeypotra történő belépési kísérletek üzeneteit. Az alsó jobb panel pedig a botnetekkel kapcsolatos támadások folyamatáról és a sikeres feltörésekről nyújt információt.

Ennek a módszernek az előnye, hogy nyugodtan bezárhatjuk a terminált, és később visszatérhetünk hozzá, anélkül, hogy a bhunter leállítaná a működést. Akik kevésbé ismerik a tmux-ot, ajánlom ezt a segédletet.

Szolgáltatásként

systemctl enable bhunter
systemctl start bhunter

Ebben az esetben engedélyezzük a bhunter automatikus indítását a rendszer indulásakor. Ebben a módszerben a bhunterrel való interakció nem tervezett, és a feltört csomópontok listáját a /var/log/bhunter/hacked.log-ból lehet megkapni.

Hatékonyság

A bhunterrel végzett munka során különféle eszközökhöz sikerült hozzáférést szerezni: raspberry pi, routerek (különösen mikrotik), web szerverek, és egyszer egy bányász farmhoz (sajnos a hozzáférés napközben volt, így érdekes történetet nem tudok mesélni). Íme egy képernyőkép a programról, amelyen a feltört csomópontok listája látható néhány napos munka után:

Bhunter — botnet csomópontok feltörése

Sajnos ennek az eszköznek a hatékonysága nem érte el az elvárásaimat: a bhunter napokig is képes a jelszavak brute force-ozására anélkül, hogy eredményt hozna, de akár több célpontot is feltörhet néhány óra alatt. De az új botnet példák rendszeres áramlásához ez elegendő.

A hatékonyságra olyan tényezők hatnak, mint: az a ország, ahol a bhunter szerver található, a hosting és az IP-cím kiadásához tartozó tartomány. A tapasztalatom alapján olyan eset is volt, hogy két virtuális szervert béreltem ugyanattól a szolgáltatótól, és az egyik kétszer annyiszor volt kitéve botnet támadásoknak, mint a másik.

A hibák, amelyeket eddig még nem javítottam

Fertőzött csomópontok támadása során bizonyos esetekben nem lehet egyértelműen megállapítani, hogy a jelszó helyes volt-e vagy sem. Az ilyen esetek naplózása a /var/log/debug.log fájlban történik.

A Paramiko modul, amelyet az SSH kezelésére használnak, néha helytelenül működik: végtelen várakozásba esik a csomópont válaszára, amikor próbál csatlakozni hozzá. Kísérleteztem időzítőkkel, de a kívánt eredményeket nem sikerült elérnem.

Mivel érdemes még dolgozni?

Szolgáltatás neve

A RFC-4253 szerint a kliens és a szerver a kapcsolat létrehozása előtt kicserélik az SSH protokollt megvalósító szolgáltatások neveit. Ez a név a „SERVICE NAME” mezőben található, amely mind a kliens, mind a szerver által küldött válaszban szerepel. Ez egy sztring, és az értékét a wireshark vagy nmap segítségével lehet megtudni. Íme egy példa az OpenSSH-ra:

$ nmap -p 22 ***.**.***.** -sV
Nmap indítása ...
PORT   ÁLLAPOT SZOLGÁLTATÁS VERZIÓ
22/tcp nyitott  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protokoll 2.0)
Nmap kész: 1 IP cím (1 elérhető host) beolvasva 0,47 másodperc alatt

A Paramiko esetében azonban ez a mező olyan sztringet tartalmaz, mint például „Paramiko Python sshd 2.4.2”, ami elriaszthatja azokat a botneteket, amelyekbe beépítették a csapdák elkerülését. Ezért szükségesnek tartom, hogy ezt a sztringet valami semlegesebbre cseréljük.

Egyéb vektorok

Az SSH nem az egyetlen távoli vezérlési eszköz. Van még telnet, rdp. Érdemes őket is megfontolni.

Kiterjesztés

Jó lenne, ha több csapda lenne különböző országokban, és központosítva gyűjtenénk a bejelentkezéseket, jelszavakat és feltört csomópontokat egy közös adatbázisba.

Hol lehet letölteni?

A cikk írásának idején csak a tesztverzió érhető el, amelyet innen lehet letölteni: a Github tárolóból.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster