Bhunter: hacking dei nodi botnet

Analisti di virus e ricercatori di sicurezza informatica si affrettano a raccogliere quanti più campioni possibile di nuove botnet. Usano gli honeypot per i propri scopi... E se volessi osservare il malware in condizioni reali? Mettere a rischio il tuo server o router? Cosa succede se non esiste un dispositivo adatto? Sono state queste domande che mi hanno spinto a creare bhunter, uno strumento per accedere ai nodi botnet.

Bhunter: hacking dei nodi botnet

idea centrale

Esistono molti modi per diffondere malware per espandere le botnet: dal phishing allo sfruttamento delle vulnerabilità 0-day. Ma il metodo più comune è ancora la forzatura bruta delle password SSH.

L'idea è molto semplice. Se qualche nodo botnet sta tentando di forzare le password per il tuo server, molto probabilmente questo nodo stesso è stato catturato mediante forzatura di password semplici. Ciò significa che per accedervi è sufficiente ricambiare.

Questo è esattamente il modo in cui funziona Bhunter. Ascolta la porta 22 (servizio SSH) e raccoglie tutti gli accessi e le password con cui tentano di connettersi ad essa. Quindi, utilizzando le password raccolte, tenta di connettersi ai nodi attaccanti.

Algoritmo di lavoro

Il programma può essere diviso in 2 parti principali, che funzionano in thread separati. Il primo è Honeypot. Elabora i tentativi di accesso, raccoglie accessi e password univoci (in questo caso, la coppia login + password è considerata come un tutt'uno) e aggiunge anche gli indirizzi IP che hanno tentato di connettersi alla coda per ulteriori attacchi.

La seconda parte è direttamente responsabile dell'attacco. Inoltre, l'attacco viene eseguito in due modalità: BurstAttack (attacco burst) - login e password di forza bruta dall'elenco generale e SingleShotAttack (attacco a colpo singolo) - password di forza bruta utilizzate dal nodo attaccato, ma non ancora state aggiunto all'elenco generale.

Per avere almeno un database di login e password subito dopo il lancio, bhunter viene inizializzato con un elenco dal file /etc/bhunter/defaultLoginPairs.

Interfaccia

Esistono diversi modi per avviare Bhunter:

Proprio come una squadra

sudo bhunter

Con questo lancio è possibile controllare bhunter tramite il suo menu testuale: aggiungere login e password per un attacco, esportare un database di login e password, specificare un obiettivo per un attacco. Tutti i nodi compromessi possono essere visualizzati nel file /var/log/bhunter/hacked.log

Utilizzando tmux

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

Tmux è un multiplexer di terminale, uno strumento molto conveniente. Ti consente di creare più finestre all'interno di un terminale e dividere le finestre in pannelli. Usandolo, puoi uscire dal terminale e quindi accedere senza interrompere i processi in esecuzione.

Lo script bhunter-ts crea una sessione tmux e divide la finestra in tre pannelli. Il primo, più grande, contiene un menu testuale. Quello in alto a destra contiene i log dell'honeypot, qui puoi vedere i messaggi sui tentativi di accesso all'honeypot. Il pannello in basso a destra mostra informazioni sull'avanzamento dell'attacco ai nodi botnet e sugli hack riusciti.

Il vantaggio di questo metodo rispetto al primo è che possiamo chiudere in sicurezza il terminale e ritornarvi più tardi, senza che bhunter interrompa il suo lavoro. Per coloro che hanno poca familiarità con tmux, suggerisco questo foglietto illustrativo.

Come servizio

systemctl enable bhunter
systemctl start bhunter

In questo caso, abilitiamo l'avvio automatico di bhunter all'avvio del sistema. In questo metodo non viene fornita l'interazione con bhunter e l'elenco dei nodi compromessi può essere ottenuto da /var/log/bhunter/hacked.log

efficacia

Mentre lavoravo su Bhunter, sono riuscito a trovare e ad accedere a dispositivi completamente diversi: raspberry pi, router (soprattutto mikrotik), server web e una volta una mining farm (purtroppo l'accesso avveniva durante il giorno, quindi non c'erano interessanti storia). Ecco uno screenshot del programma, che mostra un elenco di nodi compromessi dopo diversi giorni di lavoro:

Bhunter: hacking dei nodi botnet

Sfortunatamente, l’efficacia di questo strumento non ha soddisfatto le mie aspettative: bhunter può provare le password sui nodi per diversi giorni senza successo e può hackerare diversi obiettivi in ​​un paio d’ore. Ma questo è sufficiente per un afflusso regolare di nuovi campioni di botnet.

L'efficacia è influenzata da parametri quali: il paese in cui si trova il server con bhunter, l'hosting e l'intervallo da cui viene assegnato l'indirizzo IP. Nella mia esperienza, c'è stato un caso in cui ho noleggiato due server virtuali da un hoster e uno di essi è stato attaccato da botnet 2 volte più spesso.

Bug che non ho ancora risolto

Quando si attaccano host infetti, in alcune situazioni non è possibile determinare in modo univoco se la password è corretta o meno. Tali casi vengono registrati nel file /var/log/debug.log.

Il modulo Paramiko, utilizzato per lavorare con SSH, a volte si comporta in modo errato: attende all'infinito una risposta dall'host quando tenta di connettersi ad esso. Ho sperimentato con i timer, ma non ho ottenuto il risultato desiderato

Su cos'altro bisogna lavorare?

Nome di Servizio

Secondo RFC-4253, il client e il server si scambiano i nomi dei servizi che implementano il protocollo SSH prima dell'installazione. Questo nome è contenuto nel campo “NOME SERVIZIO”, contenuto sia nella richiesta lato client che nella risposta lato server. Il campo è una stringa e il suo valore può essere trovato utilizzando wireshark o nmap. Ecco un esempio per 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

Tuttavia, nel caso di Paramiko, questo campo contiene una stringa come “Paramiko Python sshd 2.4.2”, che può spaventare le botnet progettate per “evitare” trappole. Pertanto, penso che sia necessario sostituire questa linea con qualcosa di più neutro.

Altri vettori

SSH non è l'unico mezzo di gestione remota. C'è anche telnet, rdp. Vale la pena dargli un'occhiata più da vicino.

estensione

Sarebbe fantastico avere diverse trappole in diversi paesi e raccogliere centralmente login, password e nodi compromessi da essi in un database comune

Dove scaricare?

Al momento in cui scrivo è pronta solo una versione di prova, da cui è possibile scaricare deposito su Github.

Fonte: habr.com

Aggiungi un commento