Analitičari virusa i istraživači računalne sigurnosti utrkuju se u prikupljanju što više uzoraka novih botneta. Oni koriste honeypots za svoje potrebe... Ali što ako želite promatrati malware u stvarnim uvjetima? Ugroziti vaš poslužitelj ili usmjerivač? Što ako nema odgovarajućeg uređaja? Upravo su me ta pitanja potaknula da napravim bhunter, alat za dobivanje pristupa botnet čvorovima.
središnja ideja
Postoji mnogo načina za širenje zlonamjernog softvera za proširenje botneta: od krađe identiteta do iskorištavanja 0-dnevnih ranjivosti. Ali najčešća metoda još uvijek je grubo forsiranje SSH lozinki.
Ideja je vrlo jednostavna. Ako neki botnet čvor pokušava brutalno forsirati lozinke za vaš poslužitelj, onda je najvjerojatnije ovaj čvor sam zarobljen brutalnim forsiranjem jednostavnih lozinki. To znači da da biste mu pristupili, samo trebate uzvratiti istom mjerom.
Upravo tako radi bhunter. Sluša port 22 (SSH servis) i prikuplja sve prijave i lozinke s kojima se pokušavaju spojiti na njega. Zatim se pomoću prikupljenih lozinki pokušava spojiti na napadačke čvorove.
Algoritam rada
Program se može podijeliti u 2 glavna dijela, koji rade u zasebnim nitima. Prvi je honeypot. Obrađuje pokušaje prijave, prikuplja jedinstvene prijave i lozinke (u ovom slučaju par prijava + lozinka smatra se jednom cjelinom), a također dodaje IP adrese koje su se pokušale spojiti u red čekanja za daljnji napad.
Drugi dio je izravno odgovoran za napad. Štoviše, napad se provodi u dva načina: BurstAttack (rafalni napad) - brute force prijave i lozinke s opće liste i SingleShotAttack (single shot napad) - brute force lozinke koje je koristio napadnuti čvor, ali još nisu dodan na opći popis.
Kako bi imao barem neku bazu podataka za prijavu i lozinku odmah nakon pokretanja, bhunter se inicijalizira s popisom iz datoteke /etc/bhunter/defaultLoginPairs.
sučelje
Postoji nekoliko načina za pokretanje bhuntera:
Samo kao tim
sudo bhunter
S ovim pokretanjem, moguće je kontrolirati bhunter putem njegovog tekstualnog izbornika: dodati prijave i lozinke za napad, izvesti bazu podataka za prijave i lozinke, odrediti metu za napad. Svi hakirani čvorovi mogu se vidjeti u datoteci /var/log/bhunter/hacked.log
Korištenje tmuxa
sudo bhunter-ts # команда запуска bhunter через tmux
sudo tmux attach -t bhunter # подключаемся к сессии, в которой запущен bhunter
Tmux je terminalski multiplekser, vrlo praktičan alat. Omogućuje stvaranje nekoliko prozora unutar jednog terminala i podjelu prozora u panele. Pomoću njega možete izaći iz terminala i zatim se prijaviti bez prekidanja pokrenutih procesa.
Skripta bhunter-ts stvara tmux sesiju i dijeli prozor na tri panela. Prvi, najveći, sadrži tekstualni izbornik. Gornji desni sadrži zapise honeypota, ovdje možete vidjeti poruke o pokušajima prijave u honeypot. Donja desna ploča prikazuje informacije o tijeku napada na botnet čvorove i o uspješnim hakiranju.
Prednost ove metode u odnosu na prvu je što možemo sigurno zatvoriti terminal i vratiti mu se kasnije, a da bhunter ne zaustavi njegov rad. Za one koji su malo upoznati s tmuxom, predlažem
Kao usluga
systemctl enable bhunter
systemctl start bhunter
U ovom slučaju, omogućujemo automatsko pokretanje bhuntera pri pokretanju sustava. U ovoj metodi nije omogućena interakcija s bhunterom, a popis hakiranih čvorova može se dobiti iz /var/log/bhunter/hacked.log
efikasnost
Dok sam radio na bhunteru, uspio sam pronaći i dobiti pristup potpuno drugim uređajima: raspberry pi, ruterima (posebno mikrotiku), web serverima i jednom farmi za rudarenje (nažalost, pristup joj je bio danju, pa nije bilo zanimljivih priča ). Evo snimke zaslona programa koja prikazuje popis hakiranih čvorova nakon nekoliko dana rada:
Nažalost, učinkovitost ovog alata nije dostigla moja očekivanja: bhunter može bezuspješno isprobavati lozinke za čvorove nekoliko dana i može hakirati nekoliko ciljeva u nekoliko sati. Ali to je dovoljno za redoviti priljev novih uzoraka botneta.
Na učinkovitost utječu parametri kao što su: država u kojoj se nalazi poslužitelj s bhunterom, hosting i raspon iz kojeg se dodjeljuje IP adresa. Po mom iskustvu, bio je slučaj kada sam unajmio dva virtualna poslužitelja od jednog hostera, a jedan od njih bio je napadnut od strane botneta 2 puta češće.
Greške koje još nisam ispravio
Prilikom napada na zaražene hostove u nekim situacijama nije moguće jednoznačno utvrditi je li lozinka ispravna ili ne. Takvi se slučajevi bilježe u datoteku /var/log/debug.log.
Modul Paramiko, koji se koristi za rad sa SSH-om, ponekad se ponaša neispravno: beskrajno čeka odgovor od glavnog računala kada se pokuša spojiti na njega. Eksperimentirao sam s mjeračima vremena, ali nisam dobio željeni rezultat
Na čemu još treba poraditi?
Naziv usluge
Prema RFC-4253, klijent i poslužitelj razmjenjuju imena usluga koje implementiraju SSH protokol prije instalacije. Ovo ime je sadržano u polju "SERVICE NAME", sadržano iu zahtjevu sa strane klijenta i u odgovoru sa strane poslužitelja. Polje je string, a njegova se vrijednost može pronaći pomoću wiresharka ili nmapa. Evo primjera za 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
Međutim, u slučaju Paramiko-a, ovo polje sadrži niz poput "Paramiko Python sshd 2.4.2", koji može prestrašiti botnetove koji su dizajnirani da "izbjegnu" zamke. Stoga smatram da je ovu liniju potrebno zamijeniti nečim neutralnijim.
Ostali vektori
SSH nije jedino sredstvo daljinskog upravljanja. Tu je i telnet, rdp. Vrijedi ih pomnije pogledati.
nastavak
Bilo bi sjajno imati nekoliko zamki u različitim zemljama i centralno prikupljati prijave, lozinke i hakirane čvorove iz njih u zajedničku bazu podataka
Gdje mogu preuzeti?
U trenutku pisanja teksta spremna je samo testna verzija koju je moguće preuzeti s
Izvor: www.habr.com