Virusni analitičari i istraživači računalne sigurnosti nastoje prikupiti što više uzoraka novih botnetova. U tu svrhu koriste honeypot-e.… No što ako želite promatrati zlonamjernog softvera u stvarnim uvjetima? Izložiti svoj poslužitelj, usmjerivač riziku? A što ako odgovarajuće uređaje nemate? Upravo su ta pitanja potaknula moj razvoj bhunter-a — alata za pristup čvorovima bot mreža.

Osnovna ideja
Postoji mnogo načina širenja zlonamjernog softvera za proširenje bot mreža: počevši od phishinga do iskorištavanja 0-day ranjivosti. No najčešća metoda ostaje pokušavanje prolaska zaporki za SSH.
Ideja je vrlo jednostavna. Ako se s nekog čvora bot mreže pokušava proći zaporke za vaš poslužitelj, vjerojatno je da je taj čvor sam bio kompromitiran pokušajem jednostavnih zaporki. Stoga, kako biste dobili pristup, samo mu je potrebno uzvratiti "uzvraćanjem".
Upravo tako funkcionira bhunter. Sluša port 22 (SSH usluga) i prikuplja sve logine i zaporke s kojima se pokušavaju povezati. Zatim, koristeći prikupljene zaporke, pokušava se spojiti na napadačke čvorove.
Algoritam rada
Program se može uvjetno podijeliti na 2 glavne dijela, koja rade u odvojenim nitima. Prvi dio — honeypot. Obradjuje pokušaje prijave, prikuplja jedinstvene logine i zaporke (u ovom slučaju par login+zaporka tretira se kao cjelina), te dodaje u red za daljnji napad IP adrese koje su pokušale povezivanje.
Drugi dio odgovara izravno za napad. Pri čemu se napad provodi u dva načina: BurstAttack (napad u redu) — pokušaj prolaska logina i zaporki iz zajedničkog popisa i SingleShotAttack (napad s pojedinačnim pucanjima) — pokušaj prolaska zaporki koje je koristio napadnuti čvor, ali još nisu dodane u zajednički popis.
Kako bi imao neku bazu logina i zaporki odmah nakon pokretanja, bhunter se inicijalizira popisom iz datoteke /etc/bhunter/defaultLoginPairs.
Interfejs
Predviđeno je nekoliko načina pokretanja bhunter-a:
Jednostavnom naredbom
sudo bhunterPri takvom pokretanju postoji mogućnost upravljanja bhunter-om putem njegovog tekstualnog izbornika: dodavanje logina i zaporki za napad, izvoz baze logina i zaporki, određivanje cilja za napad. Sve hakirane čvorove možete vidjeti u datoteci /var/log/bhunter/hacked.log
Korištenjem tmux
sudo bhunter-ts # komanda za pokretanje bhunter-a preko tmux-a
sudo tmux attach -t bhunter # povezujući se na sesiju u kojoj je pokrenut bhunter
Tmux je terminalni multiplexer, vrlo zgodan alat. Omogućuje stvaranje više prozora unutar jednog terminala, a prozore možete razdvojiti na pane. Njegova upotreba omogućuje izlazak iz terminala, a zatim se ponovno možete prijaviti ne prekidajući pokrenute procese.
Skripta bhunter-ts stvara tmux sesiju i dijeli prozor na tri panele. U prvom – najvećem, nalazi se tekstualni izbornik. Gornji desni panel sadrži logove honeypota, a ovdje možete vidjeti poruke o pokušajima pristupa honeypotu. U donjem desnom panelu prikazuje se informacija o napadima na čvorove bot mreža i o uspješnim provalama.
Prednost ovog načina u odnosu na prvi je u tome što možemo zatvoriti terminal i vratiti mu se kasnije, a bhunter neće prekinuti rad. Onima koji nisu upoznati s tmux-om preporučujem .
Kao usluga
systemctl enable bhunter
systemctl start bhunterU ovom slučaju uključujemo automatsko pokretanje bhunter-a prilikom pokretanja sustava. U ovoj metodi interakcija s bhunter-om nije predviđena, a popis hakiranih čvorova možete dobiti iz /var/log/bhunter/hacked.log
Učinkovitost
Tijekom rada na bhunter-u uspio sam pronaći i pristupiti potpuno različitim uređajima: raspberry pi, usmjerivači ( posebno mikrotik), web serveri, a jednom čak i farmi za rudarenje (nažalost, pristup tome je bio samo tijekom dana, pa se nije dogodila zanimljiva priča). Evo snimke programa koja pokazuje popis hakiranih čvorova nakon nekoliko dana rada:

Nažalost, učinkovitost ovog alata nije ispunila moja očekivanja: bhunter može provjeravati lozinke na čvorovima nekoliko dana bez rezultata, a može provaliti nekoliko ciljeva za nekoliko sati. No, za redoviti priljev novih uzoraka bot mreža, to je dovoljno.
Na učinkovitost utječu parametri poput: zemlje u kojoj se nalazi server s bhunter-om, hosting i raspon iz kojeg je dodijeljen IP adresi. U mom iskustvu bio je slučaj kada sam unajmio dva virtualna servera od jednog hostera, i jedan od njih je bio napadnut od strane bot mreža dva puta češće.
Bugs koje još nisam ispravio
Prilikom napada na zaražene čvorove u nekim situacijama nije moguće jednoznačno utvrditi je li lozinka ispravna ili nije. Evidencija takvih slučajeva vodi se u datoteci /var/log/debug.log.
Modul Paramiko, koji se koristi za rad s SSH, ponekad se ponaša neispravno: ulazi u beskonačno čekanje odgovora od čvora kada pokušava uspostaviti vezu. Eksperimentirao sam s tajmerima, ali nisam postigao željeni rezultat.
Na čemu još trebate raditi?
Ime usluge
Prema RFC-4253, klijent i server razmjenjuju nazive usluga koje implementiraju SSH protokol prije uspostavljanja veze. Ovaj naziv sadržan je u polju "SERVICE NAME", koje se nalazi kako u zahtjevu klijenta, tako i u odgovoru servera. Polje je string, a njegovu vrijednost možete saznati koristeći Wireshark ili Nmap. Evo primjera za OpenSSH:
$ nmap -p 22 ***.**.***.** -sV
Pokreće se Nmap ...
PORT STANJE USLUGA VERZIJA
22/tcp otvoren ssh <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protokol 2.0)
Nmap gotov: 1 IP adresa (1 host aktivan) skenirana u 0.47 sekundi
Međutim, u slučaju Paramiko, ovo polje sadrži string poput "Paramiko Python sshd 2.4.2", što može odbiti botnetove koji imaju implementiranu funkciju "izbjegavanja" zamki. Stoga smatram neophodnim zamijeniti ovu string s nečim neutralnijim.
Drugi vektori
SSH nije jedini način za daljinsko upravljanje. Tu su još telnet i RDP. Vrijedi ih također razmotriti.
Proširenje
Bilo bi sjajno imati nekoliko zamki u različitim zemljama i centralizirano prikupljati s njih prijave, lozinke i hakirane čvorove u zajedničku bazu podataka.
Gdje preuzeti?
U trenutku pisanja ovog članka dostupna je samo testna verzija koju možete preuzeti iz .
Izvor: habr.com
