Bhunter - hackování uzlů botnetu

Analytici virů a výzkumníci počítačové bezpečnosti se předhánějí v tom, kdo shromáždí co nejvíce vzorků nových botnetů. Používají honeypoty pro své vlastní účely... Ale co když chcete pozorovat malware v reálných podmínkách? Vystavit svůj server nebo router riziku? Co když vhodné zařízení neexistuje? Právě tyto otázky mě přivedly k vytvoření bhunteru, nástroje pro získání přístupu k uzlům botnetu.

Bhunter - hackování uzlů botnetu

ústřední myšlenkou

Existuje mnoho způsobů, jak šířit malware za účelem rozšíření botnetů: od phishingu až po zneužívání nulových zranitelností. Ale nejběžnější metodou je stále hrubé vynucení SSH hesel.

Myšlenka je velmi jednoduchá. Pokud se nějaký uzel botnetu pokouší brutálně vynutit hesla pro váš server, pak byl s největší pravděpodobností tento uzel samotný zachycen jednoduchými hesly brutálního vynucení. To znamená, že k tomu, abyste k ní získali přístup, vám stačí oplácet.

Přesně tak funguje bhunter. Poslouchá port 22 (služba SSH) a shromažďuje všechna přihlašovací jména a hesla, pomocí kterých se k němu pokouší připojit. Poté se pomocí shromážděných hesel pokusí připojit k útočícím uzlům.

Algoritmus práce

Program lze rozdělit na 2 hlavní části, které pracují v samostatných vláknech. První je honeypot. Zpracovává pokusy o přihlášení, shromažďuje jedinečná přihlašovací jména a hesla (v tomto případě je dvojice login + heslo považována za jeden celek) a také přidává IP adresy, které se pokusily připojit do fronty pro další útok.

Druhá část je přímo zodpovědná za útok. Útok je navíc veden ve dvou režimech: BurstAttack (burst attack) – brutální přihlašovací jména a hesla z obecného seznamu a SingleShotAttack (single shot attack) – hrubá síla, která byla použita napadeným uzlem, ale dosud nebyla použita. přidán do obecného seznamu.

Aby bylo možné mít hned po spuštění alespoň nějakou databázi loginů a hesel, inicializuje se bhunter seznamem ze souboru /etc/bhunter/defaultLoginPairs.

rozhraní

Existuje několik způsobů, jak spustit bhunter:

Prostě jako tým

sudo bhunter

S tímto spuštěním je možné ovládat bhunter prostřednictvím jeho textového menu: přidat přihlašovací jména a hesla pro útok, exportovat databázi přihlašovacích údajů a hesel, určit cíl pro útok. Všechny hacknuté uzly lze vidět v souboru /var/log/bhunter/hacked.log

Pomocí tmux

sudo bhunter-ts # команда запуска bhunter через tmux  
sudo tmux attach -t bhunter # подключаемся к сессии, в которой запущен bhunter

Tmux je terminálový multiplexer, velmi pohodlný nástroj. Umožňuje vytvořit několik oken v rámci jednoho terminálu a rozdělit okna do panelů. Pomocí něj můžete opustit terminál a poté se přihlásit bez přerušení běžících procesů.

Skript bhunter-ts vytvoří relaci tmux a rozdělí okno na tři panely. První, největší, obsahuje textové menu. Vpravo nahoře jsou záznamy o honeypotu, zde vidíte zprávy o pokusech o přihlášení do honeypotu. V pravém dolním panelu se zobrazují informace o průběhu útoku na uzly botnetu a o úspěšných hackech.

Výhodou této metody oproti první je, že můžeme terminál bezpečně zavřít a vrátit se k němu později, aniž by bhunter zastavil jeho práci. Pro ty, kteří jsou málo obeznámeni s tmux, doporučuji tento cheat sheet.

Jako služba

systemctl enable bhunter
systemctl start bhunter

V tomto případě povolíme automatické spouštění bhunter při startu systému. V této metodě není poskytována interakce s bhunter a seznam hacknutých uzlů lze získat z /var/log/bhunter/hacked.log

Účinnost

Při práci na bhunteru se mi podařilo najít a získat přístup k úplně jiným zařízením: raspberry pi, routerům (zejména mikrotik), webovým serverům a kdysi těžební farmě (bohužel přístup k ní byl přes den, takže žádné zajímavé příběh). Zde je snímek obrazovky programu, který zobrazuje seznam hacknutých uzlů po několika dnech práce:

Bhunter - hackování uzlů botnetu

Bohužel efektivita tohoto nástroje nedosáhla mých očekávání: bhunter může zkoušet hesla do uzlů několik dní bez úspěchu a dokáže hacknout několik cílů za pár hodin. Na pravidelný příliv nových vzorků botnetů to ale stačí.

Efektivitu ovlivňují parametry jako: země, ve které se server s bhunter nachází, hosting a rozsah, ze kterého je IP adresa přidělována. Z mé zkušenosti se stal případ, kdy jsem si pronajal dva virtuální servery od jednoho hostitele a jeden z nich byl napaden botnety 2x častěji.

Chyby, které jsem ještě neopravil

Při napadení infikovaných hostitelů není v některých situacích možné jednoznačně určit, zda je heslo správné či nikoliv. Takové případy jsou zaznamenány v souboru /var/log/debug.log.

Modul Paramiko, který se používá pro práci s SSH, se někdy chová nesprávně: nekonečně čeká na odpověď od hostitele, když se k němu pokouší připojit. Experimentoval jsem s časovači, ale nedosáhl jsem požadovaného výsledku

Na čem je ještě potřeba zapracovat?

Název služby

Podle RFC-4253 si klient a server před instalací vyměňují názvy služeb, které implementují protokol SSH. Tento název je obsažen v poli „NÁZEV SLUŽBY“ obsaženém v požadavku ze strany klienta i v odpovědi ze strany serveru. Pole je řetězec a jeho hodnotu lze zjistit pomocí wireshark nebo nmap. Zde je příklad pro OpenSSH:

$ nmap -p 22 ***.**.***.** -sV
Starting Nmap ...
PORT   STATE SERVICE VERSION
22/tcp open  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds

V případě Paramiko však toto pole obsahuje řetězec jako „Paramiko Python sshd 2.4.2“, který může zastrašit botnety, které jsou navrženy tak, aby se „vyhýbaly“ pastím. Proto si myslím, že je potřeba tuto řadu nahradit něčím neutrálnějším.

Jiné vektory

SSH není jediným prostředkem vzdálené správy. Existuje také telnet, rdp. Stojí za to se na ně podívat blíže.

prodloužení

Bylo by skvělé mít několik pastí v různých zemích a centrálně z nich shromažďovat přihlašovací jména, hesla a hacknuté uzly do společné databáze

Kde stáhnout?

V době psaní tohoto článku je připravena pouze testovací verze, kterou lze stáhnout úložiště na Github.

Zdroj: www.habr.com

Přidat komentář