Analytici virů a výzkumníci počítačové bezpečnosti se snaží shromáždit co nejvíce vzorků nových botnetů. K tomu využívají honeypoty.... Ale co když chcete pozorovat škodlivý software v reálných podmínkách? Nasazení vlastního serveru nebo routeru může být riskantní. A co když nemáte vhodné zařízení? Tyto otázky mě přiměly vytvořit bhunter — nástroj pro získání přístupu k uzlům botnetů.

Hlavná myšlienka
Existuje mnoho způsobů šíření škodlivého softwaru pro rozšiřování botnetů: počínaje phishingem po exploataci 0-day zranitelností. Ale nejrozšířenějším metodou stále zůstává prolomení hesel k SSH.
Myšlenka je velmi jednoduchá. Pokud z nějakého uzlu botnetu dochází k pokusům o prolomení hesel k vašemu serveru, pravděpodobně tento uzel byl také komprimován jednoduchými hesly. To znamená, že abyste k němu získali přístup, musíte mu prostě "vrátit stejnou mincí".
Takto funguje bhunter. Naslouchá portu 22 (služba SSH) a shromažďuje všechny přihlašovací jména a hesla, se kterými se snaží připojit. Poté se pokouší pomocí shromážděných hesel připojit k útočným uzlům.
Algoritmus práce
Program můžeme v zásadě rozdělit na 2 hlavní části, které pracují v samostatných vláknech. První část — honeypot. Zpracovává pokusy o přihlášení, shromažďuje unikátní přihlašovací jména a hesla (v tomto případě pár přihlašovací jméno + heslo se považuje za celek) a také přidává do fronty pro další útok IP adresy, které se pokoušely připojit.
Druhá část se skutečně zaměřuje na útok. A co víc, útok probíhá ve dvou režimech: BurstAttack (útok frontou) — prolomení přihlašovacích jmen a hesel z celkového seznamu a SingleShotAttack (útok jednotlivými výstřely) — prolomení hesel, která byla použita útočným uzlem, ale ještě nebyla přidána do celkového seznamu.
Aby měla bhunter nějakou základní databázi přihlašovacích jmen a hesel ihned po spuštění, inicializuje se seznamem z souboru /etc/bhunter/defaultLoginPairs.
Rozhranie
Je předpokládáno několik způsobů spuštění bhunter:
Jednoduše příkazem
sudo bhunterPři tomto spuštění máte možnost spravovat bhunter prostřednictvím jeho textového menu: přidávat přihlašovací jména a hesla pro útok, exportovat databázi přihlašovacích jmen a hesel, určit cíl pro útok. Všechny napadené uzly můžete vidět v souboru /var/log/bhunter/hacked.log
Použitím tmux
sudo bhunter-ts # príkaz na spustenie bhunter cez tmux
sudo tmux attach -t bhunter # pripojíme sa k relácii, v ktorej je spustený bhunter
Tmux je terminálový multiplexor, veľmi užitočný nástroj. Umožňuje v rámci jedného terminálu vytvárať viac okien a okná rozdeľovať na panely. Pomocou neho môžete opustiť terminál a neskôr sa pripojiť bez prerušenia bežiacich procesov.
Skript bhunter-ts vytvára tmux reláciu a rozdeľuje okno na tri panely. V prvej – najväčšej, sa nachádza textové menu. Horný pravý panel obsahuje logy honeypotu, tu môžete vidieť správy o pokusoch o prihlásenie do honeypotu. V dolnom pravom paneli sa zobrazuje informácia o priebehu útoku na uzly botnetov a o úspešných hackoch.
Výhoda tohto spôsobu oproti prvému je, že môžeme bez obáv zatvoriť terminál a vrátiť sa k nemu neskôr, pričom bhunter neprestaví svoju činnosť. Tým, ktorí sú málo oboznámení s tmux, odporúčam .
Ako služba
systemctl enable bhunter
systemctl start bhunterV tomto prípade zapíname autoštart bhunter pri spustení systému. V tomto spôsobe interakcia s bhunter nie je predpokladaná, a zoznam napadnutých uzlov je možné získať z /var/log/bhunter/hacked.log
Efektivita
Počas práce na bhunteri sa mi podarilo nájsť a získať prístup k veľmi rôznym zariadeniam: raspberry pi, smerovače (najmä mikrotik), webové servery, a raz aj farmu na ťažbu (bohužiaľ, prístup k nej bol počas dňa, takže zaujímavý príbeh nevznikol). Tu je snímka programu, na ktorej je vidieť zoznam napadnutých uzlov po niekoľkých dňoch práce:

Žiaľ, efektivita tohto nástroja nenaplnila moje očakávania: bhunter môže skúšať heslá na uzloch niekoľko dní bez výsledku, alebo môže hacknúť niekoľko cieľov za pár hodín. Ale pre pravidelný príval nových vzoriek botnetov je to dostatočné.
Na efektivitu vplývajú také parametre ako: krajina, v ktorej sa nachádza server s bhunterom, hosting, a rozsah, z ktorého je pridelená ip adresa. Na mojej skúsenosti bol prípad, keď som si prenajal dva virtuálne servery od jedného hostiteľa, a jeden z nich bol napádaný ze strany botnetov 2-krát častejšie.
Bugs, ktoré som zatiaľ neopravoval
Pri útoku na infikované uzly v niektorých situáciách nie je možné jednoznačne určiť, či heslo bolo správne alebo nie. Zaznamenávanie takýchto prípadov sa vykonáva v súbore /var/log/debug.log.
Modul Paramiko, ktorý sa používa na prácu so SSH, niekedy vykazuje nesprávne správanie: vstupuje do nekonečného čakania na odpoveď od uzla, keď sa pokúša k nemu pripojiť. Experimentoval som s časovačmi, ale nedosiahol som požadovaný výsledok.
Na čom sa ešte treba zamyslieť?
Meno služby
Podľa RFC-4253 si klient a server pred nadviazaním spojenia vymieňajú názvy služieb implementujúcich protokol SSH. Tento názov je uvedený v poli „SERVICE NAME“, ktoré sa nachádza ako v žiadosti od klienta, tak aj v odpovedi od servera. Pole predstavuje reťazec a jeho hodnotu je možné zistiť pomocou wireshark alebo nmap. Tu je napríklad pre OpenSSH:
$ nmap -p 22 ***.**.***.** -sV
Spúšťam Nmap ...
PORT STAV SLUŽBA VERZIA
22/tcp otvorené ssh <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protokol 2.0)
Nmap dokončené: 1 IP adresa (1 host aktívny) skenovaná za 0.47 sekundy
Avšak v prípade Paramiko toto pole obsahuje reťazec vo formáte „Paramiko Python sshd 2.4.2“, čo môže odradiť botnety, ktoré majú implementované „vyhýbanie sa“ nástrahám. Preto považujem za potrebné nahradiť tento reťazec niečím neutrálnym.
Iné vektory
SSH nie je jediným prostriedkom na diaľkové ovládanie. Existuje aj telnet, rdp. Stojí za zváženie aj ich.
Prípona
Bolo by skvelé mať niekoľko nástrah v rôznych krajinách a centralizovane zbierať z nich prihlasovacie údaje, heslá a napadnuté uzly do spoločnej databázy.
Kde stiahnuť?
V čase písania článku je k dispozícii len testovacia verzia, ktorú si môžete stiahnuť z .
Zdroj: habr.com
