Negli ultimi tempi i cyber criminali hanno iniziato ad utilizzare anche hardware malevolo come i microcontrollori programmati ad hoc per violare dispositivi e dati sensibili, con trojan.
Esattamente come per il software malevolo, i microcontrollori possono essere preinstallati su un dispositivo rendendo impossibile per l’utente finale riconoscere la manomissione avvenuta a tempo di produzione o distribuzione del dispositivo stesso.
La presenza di trojan (o backdoor) all’interno di dispositivi quali telefoni cellulari, router, switch, dispositivi smart home, smart office, IoT ecc., è un fenomeno concreto e ormai ricorrente, come dimostrato negli ultimi anni da Edward Snowden, il whistleblower dell’NSA che ha dimostrato come l’agenzia di sicurezza americana sia riuscita ad inserire, a livello di produzione, backdoor all’interno di prodotti esportati al di fuori degli USA. Un ulteriore esempio è la compagnia cinese AdUps, responsabile secondo la compagnia americana KryptoWire di aver installato intenzionalmente delle applicazioni non rimovibili con funzionalità di backdoor su più di 700.000 dispositivi Android esportati al di fuori della Cina stessa.
Avendo la possibilità di preinstallare tali software malevoli su un dispositivo, il controllo raggiunto è totale, con la possibilità di intercettare dati sensibili, modificare il normale funzionamento del dispositivo stesso e diffondere il software malevolo anche a dispositivi non infetti collegati ad esempio alla stessa LAN aziendale.
Indice degli argomenti
Microcontrollori: cosa sono e come funzionano
Un microcontrollore (in inglese noto come MCU, ovvero MicroController Unit) è un dispositivo elettronico integrato su singolo circuito elettronico. Inizialmente nati come evoluzione alternativa al microprocessore per sistemi embedded (ad esempio, le applicazioni specifiche di controllo digitale per i dispositivi della IoT, la Internet of Things), i microcontrollori hanno subito una notevole evoluzione nel corso degli anni, grazie a diversi fattori fra cui spicca il successo di progetti open source come Arduino.
La principale funzionalità di un microcontrollore è la possibilità di interagire direttamente con il mondo esterno attraverso la scrittura di un programma residente nella propria memoria interna e mediante l’uso di PIN specializzati o configurabili dal programmatore.
A differenza dei microprocessori, un microcontrollore non dispone solo della struttura hardware dedicata all’esecuzione di istruzioni. Infatti, per quanto potente, il microprocessore integra sul chip solo la logica di elaborazione, mentre richiede sempre delle unità esterne come memorie, gestori di segnali e dispositivi periferici per poter scambiare informazioni e interagire con l’esterno. Al contrario, i microcontrollori integrano in uno stesso chip il processore, la memoria permanente, la memoria volatile e i canali (PIN) di I/O, oltre ad eventuali altri blocchi specializzati.
Microcontrollori per backdoor: le “trappole” della IoT
Gli MCU possono quindi essere utilizzati per svolgere diversi compiti. Uno di questi è, attraverso specifici moduli, librerie e configurazioni, la diffusione di software malevolo attraverso l’esecuzione automatica di contenuti.
Il principio alla base di questa tipologia di attacco è la simulazione di un dispositivo esterno da parte di un microcontrollore, come ad esempio una memoria di massa (USB), una tastiera, un mouse, e così via, per poi eseguire in automatico una serie di comandi per intraprendere la fase di installazione della backdoor stessa.
Fino a qualche anno fa, l’esecuzione automatica di contenuti a partire da periferiche esterne era possibile senza l’ausilio di microcontrollori. Tutti ricordiamo la funzionalità di Autorun introdotta in Windows 95 che consentiva l’esecuzione di software presente su dischi e unità USB e che nel tempo si è rivelata un’enorme falla di sicurezza su sistemi Windows. Nel corso degli anni, ci sono stati diversi casi di sfruttamento di tali funzionalità per la diffusione di malware: un caso emblematico è quello della Sony, accusata di diffondere rootkit, ossia malware molto difficili da riscontrare e rimuovere, attraverso degli innocui CD musicali.
A partire da Windows 7, Microsoft ha deciso di disattivare definitivamente l’esecuzione automatica di contenuti provenienti da tali dispositivi. Gli attaccanti hanno quindi dovuto sviluppare nuovi metodi per l’installazione di software malevolo attraverso l’utilizzo di dispositivi esterni. In particolare, una delle tecniche più diffuse per il raggiungimento di tale scopo è proprio l’utilizzo di microcontrollori per la simulazione di dispositivi di I/O come mouse e tastiere. Questo processo è possibile sia grazie alla grandissima versatilità dei microcontrollori, sia al funzionamento di base del sistema operativo nella gestione delle interazioni con le periferiche hardware.
Infatti, il sistema operativo non conosce i dettagli di una periferica USB fino a quando, dopo essersi connessa, quest’ultima comunica essa stessa le proprie caratteristiche principali attraverso un codice specifico, in grado di rappresentare una o più classi di periferiche. Questi codici, altrimenti definiti come descrittori, rappresentano dettagli relativi alla periferica come casa costruttrice e tipo di dispositivo. Non appena connesso, il dispositivo USB viene registrato, riceve un indirizzo e invia i propri descrittori al sistema operativo per l’installazione dei driver. Una volta fatto questo, il sistema operativo può interagire liberamente con la periferica, e non appena terminata l’interazione, il dispositivo viene deregistrato.
Nel 2014, i ricercatori Karsten Nohl, Sascha Krißler e Jakob Lell, attraverso un’attività di reverse engineering, sono stati in grado di installare un firmware personalizzato sul controller di una memoria USB: registrando tale dispositivo come una tastiera, era in grado di eseguire una serie di comandi sul computer bersaglio, simulando la normale interazione umana con una tastiera. Nonostante il codice sorgente di tale firmware non fosse stato pubblicato da i tre ricercatori, dopo qualche settimana altri due ricercatori pubblicarono su GitHub [8] una “Proof of Concept” relativa al microcontrollore Phison 2251-03, rendendo ancor più noto al pubblico le potenzialità di sfruttamento di tale interazione tra microcontrollori, porte USB e computer.
È dunque possibile programmare un MCU per simulare la pressione di tasti, o combinazioni di questi. In particolare, si può simulare la pressione di tasti corrispondenti a cosiddetti “shortcut”, ossia combinazioni di tasti che conducono ad un risultato ben definito. Ad esempio, la pressione del tasto “Windows” in aggiunta al tasto “R” può aprire la barra di ricerca su un computer con sistema operativo Windows (su MAC OS per raggiungere lo stesso risultato la combinazione è “CMD+spazio”).
Una volta aperta la barra di ricerca, è sufficiente introdurre la stringa “CMD” (o “Terminal” per sistemi Apple), seguita dal tasto “Invio”, per aprire la console di riga di comando. A quel punto, le possibilità per un attaccante sono sostanzialmente infinite. Infatti, è possibile eseguire qualsiasi comando attraverso la digitazione della stringa corrispondente in aggiunta alla pressione del tasto “Enter”. Ad esempio, è possibile lanciare un comando per dare inizio all’interazione con il server di comando e controllo di un trojan.
Sfruttare i microcontrollori per sferrare un attacco
A titolo di esempio, un Framework che consente la creazione di un trojan e del server di comando e controllo remoto (server C&C) è Empire. Questo progetto consta di un insieme di moduli e strumenti in grado di gestire la fase di post-exploitation durante la fase di attacco ad un computer bersaglio. Nel dettaglio, è possibile gestire diversi server di comando e controllo tramite la stessa applicazione, anche mascherando tali servizi tramite l’utilizzo della rete TOR. Infatti, attraverso un’opportuna configurazione, è possibile interagire con tali servizi configurandoli come hidden_services, ossia applicazioni web accessibili solo tramite la rete TOR, e dunque, difficilmente rintracciabili e identificabili con metodi consueti. Grazie ad Empire, è possibile inoltre creare uno script chiamato launcher che, se eseguito, darà inizio alla fase di staging prima, per poi installare il client del centro di comando e controllo vero e proprio.
La potenzialità di tale framework non risiede semplicemente nel possibile potere distruttivo derivato dal suo utilizzo, ma anche dalla sua adattabilità: infatti, utilizzando diversi linguaggi di scripting per la creazione di stagers, come Python, PowerShell e PHP, è possibile installare trojan e backdoor su gran parte dei sistemi operativi conosciuti.
- Una volta creato il launcher nel linguaggio scelto, l’attacco può avere luogo: basterà semplicemente eseguire tale stringa in un terminale per dare inizio alla fase di staging, compito svolto da un microcontrollore nell’arco di pochi secondi.
- Nelle diverse interazioni fra client (macchina attaccata) e server (macchina attaccante), in questo caso è possibile modificare il tipo di messaggi scambiati a seconda delle necessità dell’attaccante stesso in termini di lunghezza del payload. Nel caso in cui il payload debba essere più breve, sarà possibile inserire una sequenza aggiuntiva per incrementare la grandezza di quanto eseguito in ogni fase della comunicazione, così da ridurre la dimensione iniziale del payload stesso; altrimenti, non avendo vincoli in termini di memoria, l’attaccante tenterà di ridurre il numero di interazioni fra client e server nell’attacco stesso, evitando così di attirare le attenzioni di possibili firewall e IDS/IPS.
- Nella fase di staging, vengono dunque scambiati diversi messaggi tra client e server: in particolare, viene richiesto dal client il cosiddetto agent, ossia il codice sorgente della vera e propria backdoor, attraverso un canale cifrato secondo una chiave di sessione preimpostata sia nel client sia nel server. Una volta scaricato tale modulo, il trojan lo esegue per poi lasciare il totale controllo a tale programma: a questo punto, l’infezione è completa ed il controllo raggiunto della macchina bersaglio è totale. La backdoor installata svolge un’attività di base molto semplice: ad intervalli di tempi regolari (specificati inizialmente durante la creazione del launcher) invierà un messaggio al server di comando e controllo con l’intento di mostrare di essere attiva e pronta all’uso. A questo punto, il server potrà inviare a sua volta un messaggio per specificare la prossima azione da svolgere: questa potrà essere un comando da terminale, piuttosto che il salvataggio di uno screenshot e così via. Empire mette a disposizione una grande varietà di moduli utilizzabili in questo caso, come ad esempio moduli per il salvataggio di tutti i tasti premuti (keylogging), interazione con la webcam (se disponibile), moduli per il privilege escalation, moduli per la persistenza (affinché la backdoor sopravviva ad un eventuale riavvio del computer bersaglio), e così via discorrendo.
- Una volta terminata l’interazione con la backdoor, è possibile eliminare la backdoor stessa attraverso una serie di comandi disponibili tramite il server di comando e controllo. Una volta fatto ciò, le uniche testimonianze del passaggio del malware sul computer bersaglio sarebbero date da comandi eseguiti, file modificati e traffico di rete: mentre la backdoor stessa potrebbe aver operato per limitare i primi due punti (cancellando dunque le tracce del proprio passaggio), il traffico di rete potrebbe essere stato salvato da dispositivi esterni, come firewall o IDS/IPS: tuttavia, come introdotto precedentemente, è possibile interagire con un server di comando e controllo residente come hidden service sulla rete TOR, rendendo così molto difficile l’identificazione del server stesso.
Analisi di un trojan e delle interazioni C&C
Come mostrato dal Multi State Information Sharing & Analysis Centre (MS-ISAC), più del 50% delle minacce cyber nel mese di gennaio 2018 è data dalle varianti di un trojan chiamato KOVTER. Questo malware ha subìto varie modifiche nel corso degli anni. Inizialmente era stato etichettato come un ransomware che, una volta installato sul sistema bersaglio, restava in uno stato dormiente in attesa di una determinata condizione, come ad esempio il download di alcune particolari tipologie di file da part dell’utente.
Una volta attivatosi, il ransomware informava l’utente della presenza di attività illegali sul computer in oggetto, insieme ad una “multa” relativa a presunte attività illecite riscontrate sul computer stesso. Tuttavia, questa versione iniziale del malware non si è rivelata molto pericolosa, dato che poteva essere facilmente rilevata e rimossa. La seconda variante, forse la più conosciuta, era quella di un malware clickfraud, ossia un software malevolo in grado di arrecare beneficio ad un attaccante visitando diversi pagine web. Nel 2015, KOVTER si è evoluto integrando dinamiche di malware “senza file”, tramite l’installazione di voci di registro autorun. Infine, il malware si è evoluto ulteriormente nel 2016 aggiungendo tecniche per lo spawning della shell e modificando le precedenti tecniche di persistenza attraverso entry di registro per leggere la voce del registro malevolo.
Al momento, la versione attuale di Kovter infetta i sistemi bersaglio tramite allegati di posta, sfruttando la possibilità di inserire macro all’interno di tali allegati per eseguire delle istruzioni malevoli. Infatti, una volta cliccato l’allegato, il malware crea uno o più file utilizzati per l’apertura di shell, di solito file batch, in cartelle come %AppData% o % AppDataLocal%. Una volta fatto questo, vengono modificate le voci del registro di sistema per far sì che il file appena installato possa essere eseguito ad ogni avvio del sistema. In seguito, lo script malevolo solitamente cancella l’allegato stesso, per poi consentire l’interazione con il server C&C a piacere dell’attaccante, ad esempio per verificare se le operazioni di visita degli URL specificati siano andate a buon fine.
Il caso di questo malware è emblematico nella definizione di come questa tipologia di software malevolo, ossia i trojan, possono essere installati su di un dato sistema, e come possono interagire con il server di controllo e quali obiettivi possono essere raggiunti.
Phishing: la tecnica di infezione più usata per diffondere trojan
Nel ciclo di vita di un trojan horse esistono tre fasi principali:
- Infezione
- Staging
- Interazione C&C
La fase di infezione determina più di tutte le altre fasi il successo o meno del malware stesso. Infatti, in questa fase il malware viene installato sul dispositivo bersaglio, prima di passare alle fasi di staging e di controllo. Esistono diverse tecniche di infezione e di diffusione di questa tipologia di malware. La più diffusa e sicuramente con più alto tasso di successo è il phishing: l’attaccante crea, attraverso tecniche di social engineering, uno scenario credibile per la vittima dell’attacco. Questo scenario viene poi presentato attraverso una email con uno o più allegati. L’utente bersaglio dell’attacco, spesso non trattandosi di personale preparato, crede allo scenario proposto dall’attaccante eseguendo gli allegati inoltrati, con conseguente esecuzione di codice malevolo e installazione del trojan horse. Esistono diversi tipi di phishing: il più diffuso presenta uno scenario volutamente vago per permettere l’inoltro di mail ad un alto numero di destinatari. Questa tipologia di phishing basa il proprio successo proprio sull’alto numero di email inoltrate: infatti, pur essendo un tipo di attacco facilmente riconoscibile (spesso viene utilizzato un traduttore automatico per l’inoltro in più lingue), l’alto numero di riceventi fa sì che anche una piccola percentuale di successo risulti in un numero significativo di infezioni avvenute con successo.
Ben più pericoloso è lo Spear Phishing: a differenza del precedente caso, in questa variante lo scenario viene confezionato ad arte per un insieme di individui ben specifico, come ad esempio un gruppo di dirigenti, da un attaccante avente una certa conoscenza del background di questo gruppo di individui. In questa situazione, è molto difficile per gli utenti bersaglio dell’attacco discernere una mail di attacco da una mail benevola, in quanto è possibile per un attaccante rendere il vettore di attacco quasi totalmente identico ad una email attendibile. Per gli utenti esperti, è tuttavia possibile effettuare un’analisi degli headers dell’email per verificare il percorso effettuato dalla mail a partire dal server SMTP di partenza fino all’host di destinazione, in caso questo percorso possa risultare sospetto.
Dopo aver infettato il computer bersaglio, il trojan horse attraversa quella che è definita come fase di Staging. In questa fase, il software malevolo intraprende una comunicazione con il server di comando e controllo, con l’obiettivo di installare una minaccia persistente sul computer infetto. Questo paradigma di comunicazione viene seguito per diverse ragioni: essendo il computer di destinazione a contattare il server di controllo, e non viceversa, è più probabile che la comunicazione non venga svelata e bloccata da un firewall dell’host stesso o della rete in cui si trova il dispositivo infetto. In caso contrario, se fosse il server di comando e controllo a dover contattare il computer attaccato, questo obbligherebbe il trojan stesso ad aprire delle porte per consentire alla comunicazione di avvenire con successo: questo processo sarebbe decisamente un importante campanello di allarme per il software di difesa, che rileverebbe immediatamente la comunicazione impedendo al trojan di procedere con la fase di staging.
In seconda istanza, il processo di staging risulta necessario perché i trojan horse sono vincolati da uno spazio di memoria ristretto, per diverse ragioni: innanzitutto per non attirare l’attenzione dell’utente attaccato, ma soprattutto per vincoli di lunghezza del vettore di attacco, che in alcuni casi non può superare più di una certa lunghezza.
Una volta installata la minaccia persistente sull’host bersaglio dell’attacco, il trojan horse lascia spazio alla backdoor installata sul sistema: in questo modo l’attaccante può liberamente interagire con l’host infetto, inviando e ricevendo comandi che verranno poi eseguiti sul sistema stesso.
Account utenti limitati sui PC: prima barriera contro i trojan
Una backdoor fornisce un accesso pressoché illimitato alla macchina infetta, ovviamente a seconda dei privilegi posseduti dall’utente che ha dato inizio all’attacco sul computer bersaglio. Infatti, un attaccante può interagire con una backdoor e iniziare l’esecuzione di diversi moduli, come ad esempio un keylogger per memorizzare ogni tasto premuto sulla tastiera, uno script per l’ottenimento dei privilegi amministrativi, oppure un modulo per la registrazione di intere sessioni audio e video, a partire da eventuali webcam e microfoni installati sulla macchina infetta. Dato il controllo disponibile all’attaccante, è anche possibile la diffusione della backdoor ad altri computer disponibili sulla stessa rete di cui macchina infetta è parte, date specifiche condizioni al contorno come possibilità di interazione e di accesso di rete.
Nelle comunicazioni tra trojan horse/backdoor e server di controllo, viene impiegata la crittografia simmetrica per la cifratura delle comunicazioni stesse: in questo caso, senza il possesso della chiave privata, è unicamente possibile rilevare la presenza di una comunicazione sospetta, senza però poter in alcun modo poter leggere il contenuto di tali comunicazioni.
Sicurezza in azienda: linee guida per l’uso dei microcontrollori
A fronte di quanto introdotto finora, è stato possibile descrivere le possibilità di utilizzo di microcontrollori ai fini della diffusione di malware e codice malevolo. In particolare, nell’installazione e nell’utilizzo di una backdoor persistente su di un computer, i microcontrollori sono in grado di automatizzare la fase di installazione del malware stesso, rendendo veloce un processo altrimenti lento e più facilmente rilevabile da componenti automatiche ed umane. Da questi risultati, emerge chiaramente il potenziale distruttivo di tali dispositivi non solo nell’utilizzo quotidiano, ma anche all’interno di aziende e di asset informatici complessi.
Per tali ragioni, in special modo in un contesto aziendale, è necessaria la definizione di politiche di sicurezza per la gestione di tali periferiche. In particolare, è possibile adattare diverse soluzioni al riguardo:
- utilizzo di dispositivi di memoria di massa regolamentati e opportunamente identificati
- utilizzo di meccanismi di controllo degli accessi per regolamentare l’accesso a computer e dispositivi
- utilizzo di software per regolamentare le interazioni di nuovi dispositivi connessi tramite porte USB
- utilizzo di software per il controllo del traffico locale e di rete (Firewall, IDS/IPS)
- disabilitazione delle porte USB non regolamentate o utilizzate
Per quanto efficaci, queste misure di sicurezza risultano essere un punto di partenza e non di arrivo nella definizione di politiche di sicurezza per la gestione di periferiche esterne in un contesto aziendale. Infatti, è necessario modellare ulteriori scenari di possibili attacchi, così da contribuire alla definizione di ulteriori regole per il miglioramento degli standard di sicurezza informatica attualmente in uso.