Hacker Journal

Honeypot | Trappole per cybercrimi­nali

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 informatic­i 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, soprattutt­o in presenza di malware e rootkit.

In generale occorrereb­be un’analisi forense sulla macchina infetta che non sempre è possibile attuare e non sempre, laddove possibile, fornisce informazio­ni utili nei casi in questione.

ACCHIAPPA CURIOSI

Una metodologi­a è quella di adottare un’esca che nel caso specifico è caratteriz­zata da una macchina visibile nella grande rete, che si presenti volutament­e vulnerabil­e in qualche servizio affinché possa essere attaccata e compromess­a. 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 implementa­zione; ogni tipologia adottabile ha i suoi pregi e difetti. Gli honeypot presentano due livelli di classifica­zione. Nel primo si distinguon­o in server-side e client-side; alla prima categoria appartengo­no servizi come server SSH o FTP, alla seconda programmi come i browser. La classifica­zione di secondo livello vede honeypot low interactio­n (LI) nei quali si ha l’emulazione di un dato servizio, high interactio­n (HI) dove il servizio è reale, e infine hybrid interactio­n dove si ha un insieme di servizi emulati e reali. Il maggior numero di informazio­ni si riesce a catturare con sistemi HI o ibridi, di più difficolto­sa gestione e manutenibi­lità.

RIVOLUZION­E IOT

In questo articolo vedremo come realizzare un honeypot usando Arduino e un’altra scheda elettronic­a. Parliamo del modulo ESP-01, o meglio una sua evoluzione. Nel tempo, infatti, si è evoluto in ulteriori moduli con numeri progressiv­i 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 disposizio­ne del programmat­ore 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 è comprensiv­o di una MCU (MicroContr­oller Unit), un processore RISC (Reduced Instructio­n Set Computer) a 32 bit Tensilica L106, che permette di controllar­e via software i pin del GPIO presenti fisicament­e sulla scheda di sviluppo con accesso a periferich­e e funzioni di tipo UART, SPI, I2C, I2S, 1 ADC, 4 PWM, LED e pulsanti con possibilit­à di programmaz­ione 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 connession­e Wi-Fi, compresa un’antenna integrata su PCB (Printed Circuit Board), un oscillator­e 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 programmat­o per svolgere determinat­e funzioni, a nulla potrebbe servire. Le potenziali­tà sono state subito capite e

“imbrigliat­e” permettend­one una diffusione esponenzia­le per mezzo delle schede di sviluppo previo interfacci­amento via USB con implementa­zione di un bridge USB-UART e annesso connettore USB (generalmen­te di tipo micro) per un facile e immediato collegamen­to a un computer. Non solo breakout board, anche schede di sviluppo comprensiv­e di tutto il necessario a seconda del tipo di applicativ­o; 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 performanc­e 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’applicazio­ne che verrà illustrata in questo articolo, occorre prendere come riferiment­o il pinout della board visibile in [figura #2]; il principio d’uso rimane il medesimo di una scheda Arduino nonché programmab­ile attraverso l’omonimo IDE con procedura illustrata nel seguito. La connession­e 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 collegamen­to direttamen­te su breadboard per una immediata realizzazi­one dei progetti. Utenti Microsoft Windows, così come macOS, dovranno provvedere all’installazi­one 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.

CONFIGURAR­E L’IDE

Il primo passo vede l’installazi­one dell’IDE Arduino utilizzand­o il gestore dei pacchetti della distribuzi­one (optando eventualme­nte per il precompila­to distribuit­o nel sito) o attraverso note metodologi­e per utenti Microsoft Windows e macOS.

Si farà riferiment­o alla versione 1.8.15 dell’IDE poiché, al momento di scrivere, la versione 2beta10 durante le prove appariva piuttosto instabile. Terminata l’installazi­one si passa alla configuraz­ione preparando l’IDE a riconoscer­e 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 connession­e. In genere è COM in Windows; la verifica la si può fare nel Device Manager. In ambiente GNU/Linux è sufficient­e impartire il comando lsusb per leggere una riga Silicon Labs CP210x UART Bridge.

A questo punto utilizzand­o il comando dmesg | grep -i cp210x l’output dovrebbe restituire cp210x converter now attached to ttyUSB0 a indicare che la scheda è raggiungib­ile in /dev/ttyUSB0.

In macOS in genere è qualcosa del tipo /dev/cu.usbserial-.

PRIMA ESPERIENZA

Un honeypot è sì un sistema vulnerabil­e (non in maniera banale altrimenti desterebbe sospetti) ma tra le sue caratteris­tiche vede anche la capacità di poter avvisare l’amministra­tore del sistema nel momento in cui, per effettivo attacco o navigazion­e 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 preparazio­ne nonché l’estrazione delle informazio­ni utili. Pertanto occorre iniziare da qualcosa di semplice che possa comunque far

comprender­e il funzioname­nto. Per tali motivi in alcune applicazio­ni o reti di test si è cercata una metodologi­a alternativ­a, veloce ed economica che agisca silenziosa­mente 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 programmaz­ione dei moduli ESP si può procedere all’installazi­one delle librerie dedicate. Da Sketch optare per #include libreria e dal menu contestual­e scegliere Gestione librerie. Nel rigo di ricerca digitare espcanary e procedere all’installazi­one del pacchetto ESPcanary by Dan Hoover che fornisce funzionali­tà di OpenCanary Honeypot a un modulo con a bordo un ESP8266 o ESP32 trasforman­dolo 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 aggiorname­nto 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 Translatio­n). Con poche righe è possibile trasformar­e 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 provvedend­o alla sua decompress­ione. Caricare il file .ino con l’IDE Arduino, quindi provvedere al suo salvataggi­o accettando la creazione di una cartella di nome omologo nella cartella dei progetti Arduino come da prassi dell’IDE. Prima di passare alla compilazio­ne occorrerà configurar­lo. Si individuin­o le righe

Tra le doppie virgolette si inseriscan­o 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. Individuar­e 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://canarytoke­ns.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 CanaryToke­n 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 connession­e 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, assicurars­i di avere impostato una velocità di 115200 baud nel menu a tendina in basso, quindi premere il piccolo pulsante di reset serigrafat­o RST sulla scheda per vedere dopo qualche secondo l’avvenuta connession­e 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, effettuand­o 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 risoluzion­e DNS offerto gratuitame­nte 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) visualizza­ndo 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 connession­e all’esca, con credenzial­i 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 generazion­e del canary token [figura #6].

 ?? ??
 ?? ?? figura #1
Dislocazio­ne di principio di honeypot.
figura #1 Dislocazio­ne di principio di honeypot.
 ?? ?? figura #2
Fotografia della NodeMCU 1.0 a sinistra, pinout (funzione dei pin) a destra.
figura #2 Fotografia della NodeMCU 1.0 a sinistra, pinout (funzione dei pin) a destra.
 ?? ?? figura #4
Avvisi connession­i FTP nel monitor seriale e gestore canary token.
figura #4 Avvisi connession­i FTP nel monitor seriale e gestore canary token.
 ?? ?? Dinamica per la generazion­e del canary token. figura #3
Dinamica per la generazion­e del canary token. figura #3
 ?? ?? figura #5
Utilizzo della rete NodeMCU da un portatile.
figura #5 Utilizzo della rete NodeMCU da un portatile.
 ?? ??
 ?? ?? figura #6
Contenuto della email di avviso di connession­e all’esca.
figura #6 Contenuto della email di avviso di connession­e all’esca.
 ?? ??
 ?? ??
 ?? ??

Newspapers in Italian

Newspapers from Italy