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.

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 bhunterEzzel 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 .
Szolgáltatásként
systemctl enable bhunter
systemctl start bhunterEbben 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:

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: .
Forrás: habr.com
