Honeypot | Trappole per cybercriminali
Creiamo un sistema ad hoc per studiare le mosse dei cracker
Una sfida continua, da un lato gli hacker – e i loro cugini del lato oscuro, i cracker – che cercano di violare sistemi informatici ognuno con i propri obiettivi, dall’altro addetti alla sicurezza che di certo non stanno fermi a guardare! Esistono sistemi come gli IDS (Intrusion Detection System) o gli IPS (Intrusion Prevention System) che permettono di rilevare e prevenire alcuni tipi di attacco, ma spesso è complicato renderli efficaci, soprattutto in presenza di malware e rootkit.
In generale occorrerebbe un’analisi forense sulla macchina infetta che non sempre è possibile attuare e non sempre, laddove possibile, fornisce informazioni utili nei casi in questione.
ACCHIAPPA CURIOSI
Una metodologia è quella di adottare un’esca che nel caso specifico è caratterizzata da una macchina visibile nella grande rete, che si presenti volutamente vulnerabile in qualche servizio affinché possa essere attaccata e compromessa. In questo modo si possono monitorare e registrare le azioni di un attaccante acquisendo strategie e tool adottati, non ultimo ottenere il contenuto malevolo in essa iniettato. Una macchina per questi scopi viene definita honeypot (“barattolo di
miele”). Un concetto che nel tempo si è esteso arrivando a definire le honeynet, gruppo di server virtuali/ honeypot contenuto all’interno di un server fisico. In [figura #1] è illustrata una generica implementazione; ogni tipologia adottabile ha i suoi pregi e difetti. Gli honeypot presentano due livelli di classificazione. Nel primo si distinguono in server-side e client-side; alla prima categoria appartengono servizi come server SSH o FTP, alla seconda programmi come i browser. La classificazione di secondo livello vede honeypot low interaction (LI) nei quali si ha l’emulazione di un dato servizio, high interaction (HI) dove il servizio è reale, e infine hybrid interaction dove si ha un insieme di servizi emulati e reali. Il maggior numero di informazioni si riesce a catturare con sistemi HI o ibridi, di più difficoltosa gestione e manutenibilità.
RIVOLUZIONE IOT
In questo articolo vedremo come realizzare un honeypot usando Arduino e un’altra scheda elettronica. Parliamo del modulo ESP-01, o meglio una sua evoluzione. Nel tempo, infatti, si è evoluto in ulteriori moduli con numeri progressivi ESP-01S, ESP-02 eccetera, ognuno dei quali portava con sé una miglioria dal punto di vista hardware, come il numero di pin attivi a disposizione del programmatore e il tipo di antenna, o come il fattore di forma e la presenza o meno di uno schermo metallico. Ma di cosa si tratta in buona sostanza? Realizzato dal produttore di SoC (System on Chip) di Shanghai Espressif Systems (www.espressif. com), il cuore del modulo è il chip ESP8266 che integra in un package QFN (Quad-Flat No-lead) da 32 pin di soli 5mm*5mm un completo sistema Wi-Fi a bassissimo costo, un full TCP/IP stack, supporto ai protocolli 802.11 b/g/n in WPA/
WPA2 con protocolli di cifratura TKIP/AES compreso il deprecato WEP. Il chip è comprensivo di una MCU (MicroController Unit), un processore RISC (Reduced Instruction Set Computer) a 32 bit Tensilica L106, che permette di controllare via software i pin del GPIO presenti fisicamente sulla scheda di sviluppo con accesso a periferiche e funzioni di tipo UART, SPI, I2C, I2S, 1 ADC, 4 PWM, LED e pulsanti con possibilità di programmazione del firmware via UART o via rete con OTA. Sotto lo schermo di metallo a completare la dotazione trova posto una memoria Flash da 4 MB e tutto il necessario per poter realizzare una completa connessione Wi-Fi, compresa un’antenna integrata su PCB (Printed Circuit Board), un oscillatore al quarzo e un manipolo di componenti di contorno.
TANTE SCHEDE DI SVILUPPO
Quanto riportato riguarda solo il piccolo modulo ESP che “di per sé”, se non programmato per svolgere determinate funzioni, a nulla potrebbe servire. Le potenzialità sono state subito capite e
“imbrigliate” permettendone una diffusione esponenziale per mezzo delle schede di sviluppo previo interfacciamento via USB con implementazione di un bridge USB-UART e annesso connettore USB (generalmente di tipo micro) per un facile e immediato collegamento a un computer. Non solo breakout board, anche schede di sviluppo comprensive di tutto il necessario a seconda del tipo di applicativo; per citarne alcune, ArduCAM ESP8266 UNO,
la ESPduino, il piccolo modulo ESP Witty e la NodeMCU. La scheda utilizzata in questo articolo è una NodeMCU 1.0 con modulo ESP-12E, la E sta per Enhanced (migliorato); le nuove versioni montano il modulo ESP-12F che migliora le performance dell’antenna. Il nome NodeMCU deriva dal nome del firmware (www.nodemcu. com) già integrato nella memoria Flash. Per utilizzi della board di sviluppo che vadano oltre l’applicazione che verrà illustrata in questo articolo, occorre prendere come riferimento il pinout della board visibile in [figura #2]; il principio d’uso rimane il medesimo di una scheda Arduino nonché programmabile attraverso l’omonimo IDE con procedura illustrata nel seguito. La connessione via USB è ottenuta grazie al chip bridge USB-UART CP2102 della SILICON LABS (www. silabs.com); le ultime versioni della scheda montano il chip CH9201. Completa la dotazione hardware un regolatore da 3,3 V e una coppia di connettori strip da 15+15 pin passo 2,54 mm (1/10 di pollice) che permettono il collegamento direttamente su breadboard per una immediata realizzazione dei progetti. Utenti Microsoft Windows, così come macOS, dovranno provvedere all’installazione del driver CP2102 presente sul sito Silabs. Utenti GNU/Linux devono solo collegare la scheda alla porta USB; il driver (modulo del kernel) che supporta i chip CP210x fa parte in pianta stabile del kernel a partire dalla versione 2.6.12.
CONFIGURARE L’IDE
Il primo passo vede l’installazione dell’IDE Arduino utilizzando il gestore dei pacchetti della distribuzione (optando eventualmente per il precompilato distribuito nel sito) o attraverso note metodologie per utenti Microsoft Windows e macOS.
Si farà riferimento alla versione 1.8.15 dell’IDE poiché, al momento di scrivere, la versione 2beta10 durante le prove appariva piuttosto instabile. Terminata l’installazione si passa alla configurazione preparando l’IDE a riconoscere moduli ESP e schede varie che lo “ospitano”. Nel box qui a destra viene riportata la procedura. Prima di eseguire il test del quarto passo ci si assicuri che l’IDE “veda” la scheda. Dopo averla collegata alla porta USB dal menu Strumenti, andando su Porta, verificare
la corretta porta di connessione. In genere è COM
A questo punto utilizzando il comando dmesg | grep -i cp210x l’output dovrebbe restituire cp210x converter now attached to ttyUSB0 a indicare che la scheda è raggiungibile in /dev/ttyUSB0.
In macOS in genere è qualcosa del tipo /dev/cu.usbserial-
PRIMA ESPERIENZA
Un honeypot è sì un sistema vulnerabile (non in maniera banale altrimenti desterebbe sospetti) ma tra le sue caratteristiche vede anche la capacità di poter avvisare l’amministratore del sistema nel momento in cui, per effettivo attacco o navigazione casuale/ voluta, qualcuno si trovasse a “curiosare” nel servizio offerto dalla macchina esca. Sebbene esistano diversi progetti che possono aiutare nella messa in opera di un honeypot, rimane piuttosto complessa la sua preparazione nonché l’estrazione delle informazioni utili. Pertanto occorre iniziare da qualcosa di semplice che possa comunque far
comprendere il funzionamento. Per tali motivi in alcune applicazioni o reti di test si è cercata una metodologia alternativa, veloce ed economica che agisca silenziosamente in background e al tempo stesso avvisi se qualche navigatore (per dolo, curiosità o altro) dovesse iniziare a leggere file, documenti o tentare login nel servizio offerto dall’esca. La soluzione è stata trovata nei canary token,
un sistema semplice ed efficace che aiuta a tenere traccia delle attività e delle azioni sulla rete monitorata. Ora avendo un IDE Arduino pronto alla programmazione dei moduli ESP si può procedere all’installazione delle librerie dedicate. Da Sketch optare per #include libreria e dal menu contestuale scegliere Gestione librerie. Nel rigo di ricerca digitare espcanary e procedere all’installazione del pacchetto ESPcanary by Dan Hoover che fornisce funzionalità di OpenCanary Honeypot a un modulo con a bordo un ESP8266 o ESP32 trasformandolo in un server FTP. Ma in che modo si viene avvisati di un tentato login? Attraverso un canary token oppure un webhook, un sistema di notifica eventi che invia dati solo in presenza di aggiornamento o variazione. Nel tempo per gli ESP8266 (sinonimo di scheda in generale) sono stati realizzati diversi progetti come ripetitori Wi-Fi e router NAT (Network Address Translation). Con poche righe è possibile trasformare la NodeMCU in un NAT router e FTP server con funzione di honeypot! Altrimenti detto, da un lato la scheda si collegherà alla rete Wi-Fi creata dal nostro router o da un telefono con funzione tethering/ router Wi-Fi. Al tempo stesso l’ESP8266 creerà un’altra rete Wi-Fi con nome e serie di indirizzi differenti alla quale sarà possibile collegarsi per poter navigare ma
Su www.honeynet.org/projects è possibile reperire materiale utile per la messa in opera di un honeypot
nella quale c’è l’FTP server che funge da honeypot. In sostanza verrà realizzata la rete in area azzurrata visibile in [figura #1].
SCARICARE IL CODICE
Accedere a https://github.com/ skickar/ESP8266_Router_Honeypot e dal tasto verde Code scaricare il file .zip, salvarlo in una cartella provvedendo alla sua decompressione. Caricare il file .ino con l’IDE Arduino, quindi provvedere al suo salvataggio accettando la creazione di una cartella di nome omologo nella cartella dei progetti Arduino come da prassi dell’IDE. Prima di passare alla compilazione occorrerà configurarlo. Si individuino le righe
Tra le doppie virgolette si inseriscano per le prime due righe nome (SSID) e password della rete Wi-Fi del router/telefono. Nelle ultime due righe nome della rete (SSID) e password della rete Wi-Fi che verrà creata dall’ESP8266, il nuovo AP. Individuare nel sorgente le ulteriori tre righe
Nella seconda e terza riga riportare username e password dell’FTP server (honeypot). Nella prima riga dovrà essere inserito il canary token. Per generarlo [figura #3] puntare il browser all’indirizzo https://canarytokens.org/generate; in Select your token optare per Web bug/URL token, riportare un indirizzo email nel rigo in basso (si possono usare anche servizi gratuiti online di email a tempo come 10minemail e simili), si scriva un testo nel pannello Reminder note, infine cliccare su Create my CanaryToken per essere portati a una pagina successiva (a destra nella stessa figura). Copiare il canary token negli appunti con il tasto verde e riportarlo al posto delle x nella prima riga. Non si chiuda la connessione nel browser; cliccare in alto a destra su Manage this token e si lasci aperta la finestra [figura #4] a destra. Salvare il file modificato in Arduino, compilarlo e caricarlo nell’ESP8266. Al termine, aprire il monitor seriale, assicurarsi di avere impostato una velocità di 115200 baud nel menu a tendina in basso, quindi premere il piccolo pulsante di reset serigrafato RST sulla scheda per vedere dopo qualche secondo l’avvenuta connessione al router Wi-Fi (o rete smartphone), la creazione del nuovo AP con relativo indirizzo nonché l’honeypot (FTP server). Da un
secondo smartphone, o computer portatile, effettuando la ricerca delle reti si noterà la presenza della nuova rete NodeMCU_Honeypot
alla quale si potrà accedere, tramite il gestore di reti del sistema in uso, con la password riportata nel sorgente Arduino, honeypot
nel nostro esempio [figura #5]. Impartire il comando ping 1.1.1.1
(servizio di risoluzione DNS offerto gratuitamente da Cloudflare) per verificare che si riesca a navigare in Internet; la conferma è data da un output del tipo A questo punto il comando
arp-scan -l eseguirà la scansione dell’intera rete locale con i pacchetti arp (necessari i privilegi di root) visualizzando l’indirizzo dell’AP con ESP8266, e il comando
nmap indirizzo_IP_AP_ESP8266 (172.217.28.254 nel nostro caso) riporterà in output il servizio offerto dall’AP, un eloquente 21/tcp ftp; servizio server FTP in ascolto sulla porta 21 (la nostra esca!). A questo punto, aprendo un qualsiasi client FTP, tre alert verranno scatenati tentando una connessione all’esca, con credenziali corrette o meno; nel monitor seriale (a sinistra in [figura #4]) con tanto di indirizzo IP dell’user agent, nel gestore del canary token (stessa figura a destra) e in più verrà recapitata un’email all’indirizzo fornito nella generazione del canary token [figura #6].