Bhunter — hackovanie uzlov botnetov

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ů.

Bhunter — hackovanie uzlov botnetov

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 bhunter

Př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 túto príručku.

Ako služba

systemctl enable bhunter
systemctl start bhunter

V 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:

Bhunter — hackovanie uzlov botnetov

Ž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 repozitára na Github.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster