Bhunter — spargerea nodurilor rețelelor de bot

Analistii de viruși și cercetătorii în securitatea computerelor caută să adune cât mai multe mostre de noi botneturi. În scopurile lor, ei folosesc honeypot-uri... Dar ce se întâmplă dacă vrei să observi malware-ul în condiții reale? Să-ți pui serverul sau router-ul în rândul obiectivelor? Și ce se întâmplă dacă nu ai un dispozitiv potrivit? Exact aceste întrebări m-au determinat să creez bhunter — un instrument pentru a obține acces la nodurile rețelelor de bot.

Bhunter — spargerea nodurilor rețelelor de bot

Ideea principală

Există multe moduri de a răspândi software-ul malițios pentru a extinde rețelele de bot: de la phishing până la exploatarea vulnerabilităților de tip 0-day. Cu toate acestea, cea mai răspândită metodă rămâne până în prezent forțarea parolelor SSH.

Ideea este foarte simplă. Dacă un nod al rețelei de bot încearcă să forțeze o parolă pentru serverul tău, există șanse mari ca acel nod să fi fost capturat prin forțarea parolelor simple. Asta înseamnă că, pentru a obține acces, trebuie pur și simplu să-i răspunzi «în aceeași manieră».

Așa funcționează bhunter. Ascultă pe portul 22 (serviciul SSH) și adună toate loginurile și parolele cu care se încearcă conectarea. Apoi, folosind parolele adunate, încearcă să se conecteze la nodurile atacatoare.

Algoritmul de funcționare

Programul poate fi împărțit în 2 părți principale, care funcționează în fluxuri separate. Prima — honeypot. Procesează încercările de conectare, adună loginuri și parole unice (în acest caz, un login + parolă este văzut ca un întreg), și de asemenea adaugă la coada pentru o atac viitor IP-urile care au încercat conectarea.

A doua parte se ocupă direct de atac. De fapt, atacul se desfășoară în două moduri: BurstAttack (atac în coadă) — forțarea loginurilor și parolilor dintr-o listă comună și SingleShotAttack (atac prin focuri unice) — forțarea parolelor care au fost folosite de nodul atacat, dar care nu au fost încă adăugate în lista comună.

Pentru a avea o bază de loginuri și parole imediat după lansare, bhunter se inițializează cu o listă din fișierul /etc/bhunter/defaultLoginPairs.

Interfața

Sunt prevăzute mai multe moduri de a lansa bhunter:

Doar cu comanda

sudo bhunter

Cu această lansare, există posibilitatea de a gestiona bhunter prin intermediul meniului său text: adăugând loginuri și parole pentru atac, exportând baza de date a loginurilor și parolelor, specificând un obiectiv pentru atac. Toate nodurile compromise pot fi vizualizate în fișierul /var/log/bhunter/hacked.log

Folosind tmux

sudo bhunter-ts # comanda de lansare a bhunter prin tmux  
sudo tmux attach -t bhunter # ne conectăm la sesiunea în care este lansat bhunter

Tmux este un multiplexor de terminal, un instrument foarte util. Permite crearea mai multor feronier în interiorul unui singur terminal și împărțirea feronierelor în panouri. Folosindu-l, putem ieși din terminal și apoi reveni fără a întrerupe procesele lansate.

Scriptul bhunter-ts creează o sesiune tmux și împarte fereastra în trei panouri. În primul — cel mai mare, se află meniul text. Panoul din dreapta sus conține jurnalele honeypot-ului, unde putem vedea mesaje despre încercările de acces la honeypot. În panoul din dreapta jos se afișează informații despre evoluția atacului asupra nodurilor bot-neturilor și despre succesul hack-urilor.

Avantajul acestui mod față de primul este că putem închide liniștit terminalul și ne putem întoarce mai târziu, fără ca bhunter să își oprească funcționarea. Cei care nu sunt foarte familiarizați cu tmux îi propun această fișă.

As a service

systemctl enable bhunter
systemctl start bhunter

În acest caz, activăm pornirea automată a bhunter la startul sistemului. În această metodă, interacțiunea cu bhunter nu este prevăzută, iar lista nodurilor compromise poate fi obținută din /var/log/bhunter/hacked.log

Eficiență

De-a lungul timpului petrecut lucrând la bhunter, am reușit să găsesc și să accesez dispozitive complet diferite: raspberry pi, routere (în special mikrotik), servere web, iar odată, o fermă de minerit (din păcate, accesul la aceasta a fost pe parcursul zilei, așa că nu a ieșit o poveste interesantă). Iată o captură de ecran a programului, pe care se poate vedea lista nodurilor compromise după câteva zile de funcționare:

Bhunter — spargerea nodurilor rețelelor de bot

Din păcate, eficiența acestui instrument nu a atins așteptările mele: bhunter poate să încerce parolele nodurilor timp de câteva zile fără rezultate, sau poate să compromită câteva ținte în câteva ore. Dar pentru un flux regulat de noi mostre de botneturi, aceasta este suficient.

Eficiența este influențată de parametrii precum: țara în care se află serverul cu bhunter, hostingul și intervalul din care a fost alocat adresa IP. În experiența mea, a fost un caz când am închiriat două servere virtuale de la un singur host și unul dintre ele a fost atacat de botneturi de două ori mai des.

Bugs pe care nu le-am reparat deocamdată

Atunci când atacăm nodurile compromise, în unele situații nu reușim să determinăm cu certitudine dacă parola s-a potrivit sau nu. Jurnalizarea acestor cazuri se face în fișierul /var/log/debug.log.

Modul Paramiko, care este folosit pentru a lucra cu SSH, se comportă uneori necorespunzător: intră într-o așteptare infinită pentru un răspuns de la nod atunci când încercă să se conecteze. Am experimentat cu temporizatoare, dar nu am obținut rezultatele dorite.

Ce altceva mai trebuie să lucrăm?

Numele serviciului

Conform RFC-4253, clientul și serverul schimbă denumirile serviciilor care implementează protocolul SSH înainte de a stabili conexiunea. Această denumire este conținută în câmpul „SERVICE NAME”, prezent atât în cererea clientului, cât și în răspunsul serverului. Câmpul reprezintă un șir de caractere, iar valoarea sa poate fi aflată utilizând Wireshark sau nmap. Iată un exemplu pentru OpenSSH:

$ nmap -p 22 ***.**.***.** -sV
Începem Nmap ...
PORT   STATE SERVICE VERSION
22/tcp open  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap a terminat: 1 adresă IP (1 gazdă activă) scanată în 0.47 secunde

Cu toate acestea, în cazul lui Paramiko, acest câmp conține un șir de tipul „Paramiko Python sshd 2.4.2”, ceea ce poate descuraja botneturile, în care este inclusă „evitarea” capcanelor. Prin urmare, consider că este necesar să înlocuiesc acest șir cu ceva mai neutru.

Alte vectori

SSH nu este singura metodă de gestionare de la distanță. Există și telnet, rdp. Merită să ne uităm și la acestea.

Extensie

Ar fi grozav să avem câteva capcane în diferite țări și să colectăm centralizat de la acestea logări, parole și noduri compromise într-o bază de date comună.

De unde se poate descărca?

La momentul redactării acestui articol, este disponibilă doar o versiune de test, care poate fi descărcată din repozitoriu pe Github.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster