Introduzione
Basterebbe citare Stuxnet, il worm diffusosi tramite pen drive il cui scopo ultimo era l'attacco di centrali nucleari iraniane, per realizzare quanto i device USB rappresentino un pericoloso vettore di attacco per i sistemi informatici.
Spesso si proteggono i propri sistemi o reti LAN da attacchi esterni ma viene trascurato un aspetto molto importante, quello della sicurezza fisica delle singole postazioni di lavoro degli utenti. L'utente medio infatti non percepisce i rischi legati alla sicurezza della propria postazione di lavoro, per cui è portato a sottovalutarli e, di conseguenza, a non attuare quei comportamenti che possano garantire un minimo di protezione. Un attacco molto efficace è quello di utilizzare dispositivi USB collegati a host della LAN aziendale, in grado di compiere una serie di operazioni, come iniettare trojan, malware e soprattutto backdoors, recuperare informazioni (credenziali di accesso, documemnti, informazioni di sistema, etc.) che vengono poi utilizzate per condurre attacchi alla LAN aziendale attraverso quegli host compromessi.
Lo scopo di questo articolo, diviso in due parti, è quello di informare il lettore su come i dispositivi USB possano essere usati anche come "portatori sani" di malware e fornire delle "best practices" per rendere più sicuro il proprio ambiente di lavoro e far crescere la consapevolezza sui device USB "malevoli".
Tipi di dispositivi USB
I dispositivi USB possono essere raggruppati essenzialmente in 4 categorie:
USB drives "classici": li conosciamo tutti. Tralasciando per banalità il caso in cui si infettano per disattenzione, incuria o altro da parte del possessore, negli altri casi il malware deve essere inserito di proposito. Generalmente il metodo migliore è quello di inserirlo nelle utilities software a corredo (il cosiddetto "extra-software") che, se è abilitato l'autorun, si installano automaticamente utilizzando il file di configurazione autorun.inf.
.
USB drives di tipo U3. Questi device hanno la particolarità di contenere al proprio interno una partizione speciale che viene vista dal sistema operativo della macchina ospite come se fosse un CD-ROM, il che consente al malware di partire automaticamente e senza alcuna interazione con l'utente. Inoltre, in Windows, è possibile "personalizzare" il file autorun.inf specificando quali applicazioni lanciare una volta che il dispositivo viene montato logicamente.
Hardware keyloggers: sono ben noti anche questi dispositivi che si inseriscono tra la tastiera e la porta USB del computer. Registrano tutti i keystrokes, salvandoli in un file che, in genere, inviano poi via mail all'attacker. In figura possiamo vederne alcuni esempi.
Programmable HID USB Keyboard Dongle Devices (PHUKD). Questi dispositivi contengono al loro interno un microcontroller programmabile per intercettare solo certi tipi di keystrokes e/o movimenti del mouse, a seguito del verificarsi di certi tipi di eventi, come possono essere ad esempio intervalli temporali, livello di luminosità dell'ambiente circostante, stato dei LED della tastiera e così via. Inoltre, diversamente da quanto accade per i dongle USB di tipo U3, i device USB HID si installano e si configurano automaticamente sulla maggior parte dei sistemi operativi in circolazione anche se l'autorun è disabilitato e a prescindere dal livello dei privilegi assegnati all'utente! È facile immaginare che, nel caso dei device PHUKD, l'unico limite è dato dalla fantasia. Ci sono però alcuni task che interessano certamente un pentester (o un "bad guy"), come ad esempio aggiungere un utente al sistema o ad un dominio, copiare velocemente dei file su una chiavetta USB o inviarli ad un sito controllato dall'attacker, lanciare un programma che crea una backdoor e così via.
Attacchi
Gli attacchi che si possono condurre dipendono essenzialmente dal tipo di device (memorie USB "classiche", U3, keyloggers, PHUKD). I primi due tipi sono essenzialmente dispositivi in grado di ospitare malware come una qualsiasi memoria di massa, mentre gli altri (keyloggers, PHUKD) sono radicalmente differenti per almeno tre motivi:
- Mentre i primi due tipi possono essere usati come mero mezzo di diffusione di malware come ce ne sono tanti, gli "hardware key loggers" e le "Programmable HIDs" possono essere considerati device "malevoli" per loro natura, a causa del tipo di tecnologia che incorporano, anche senza installarvi alcun malware.
- Il secondo motivo che li rende molto interessanti risiede nel fatto che anche disabilitare le funzioni di autorun non aiuta affatto a mitigare i rischi poichè funzionano indipendentemente dal fatto che l'autorun sia abilitato o meno.
- "Last but not least", non hanno bisogno di installare alcun software sul sistema target per eseguire le proprie funzioni, per cui i software antimalware difficilmente li individuano e li bloccano.
Per quanto riguarda i dispositivi USB classici e U3 vale la pena ricordare il lavoro svolto dal gruppo HAK5, con particolare riferimento ai tool USB Switchblade, Hacksaw e Hackblade (=switchblade + hacksaw). L'obiettivo di USB Switchblade ad esempio è quello di recuperare informazioni da un macchina Windows.
A tal proposito esistono vari pacchetti che incorporano payload specifici e uno dei più interessanti è quello denominato Gonzor - Switchblade).
Gonzor - Switchblade
Si tratta di una suite destinata ai device di tipo U3, in cui tutti i tool necessari si trovano sulla partizione CD del drive U3: in questo modo non sono intercettabili da un antivirus. Il pacchetto contiene anche un'applicazione che serve a configurare e personalizzare il payload che verrà utilizzato per l'attacco. Tale applicazione denominata SBConfig.exe consente di decidere quali informazioni catturare (ad es. le password di MSN Messenger, della posta elettronica, di Firefox, di Internet Explorer, il SAM, etc.) oppure semplicemente effettuare il dump di tutto. Se il vostro device USB non è di tipo U3 potete utilizzare un altro tipo di pacchetto che va sotto il nome di Silvrenion. Mentre nel caso di Gonzor, una volta inserita la chiavetta USB (precedentemente preparata e configurata) bisogna solo aspettare un po', soprattutto se si sono selezionate le opzioni "Dump Network Services" o "Dump Port Scan", con Silvrenion bisogna necessariamente accedere a 'Risorse del computer', cliccare due volte sul drive USB e aprire, a meno che non sia abilitato l'autorun.
Dei keylogger hardware abbiamo già accennato e il funzionamento è noto. Oggi ne esistono anche versioni WiFi, in grado di connettersi ad un Access Point ed inviare via mail il risultato dell'attività di keylogging all'attacker. Inoltre sono gestibili da remoto via TCP/IP, supportano la crittografia a 128 bit, nonchè i protocolli WEP, WPA e WPA-2.
Per quanto riguarda invece i device PHUKD, in rete è possibile trovare varie dimostrazioni della potenza di questi strumenti (ad esempio, Dave Kennedy "SET 0.6 Release with Special PHUKD Key" - B-Sides Las Vegas 2010 oppure Richard Rushing "USB - HID, The Hacking Interface Design" - Black Hat USA 2010), per cui non ci dilungheremo più di tanto sull'argomento.
Nella seconda parte dell'articolo, andremo ad analizzare le possibili contromisure adottabili per proteggere le nostre macchine dalle minacce che possono provenire dai dispositivi USB.
Contromisure
Per quanto riguarda Windows, strumenti utili per intervenire sono certamente i plugin della Microsoft Management Console (MMC), con particolare riferimento a Device Manager e Local Group Policy Editor. Per lanciarli basta eseguire rispettivamente i comandi "devmgmt.msc" e "gpedit.msc" dalla run bar di Windows (Start->Esegui) o dalla command console "powershell.exe". Esiste poi un tool di Nirsoft, USBDeview, che può aiutarci a gestire più facilmente i nostri device USB, individuandone tutte le informazioni disponibili, tra cui Vendor ID, Product ID, Device Class e Serial Number. USBDeview ci permette, ad esempio, anche di forzare la disinstallazione dei device anche se non sono connessi, di saltare direttamente alle chiavi di registro relative ad ogni device, di eseguire un comando quando viene connesso un dispositivo USB e molto altro.
Bloccare l'installazione di device USB nocivi
Come è noto, uno dei metodi di diffusione del worm Conficker è attraverso l'autorun delle chiavette USB. Molte organizzazioni, quindi, tendono a concentrarsi sul blocco dell'autorun, soprattutto nel caso di dispositivi USB di tipo U3, tralasciando però un'altra classe di dispositivi forse anche più pericolosi, i cosiddetti device PHUKD (Programmable HID USB Keyboard/Mouse Dongle). Per le caratteristiche delle due classi di device citati si rimanda al precedente articolo. I device PHUKD (ad es. mouse e tastiera) hanno il vantaggio di installarsi senza richiedere privilegi amministrativi e - soprattutto - si installano anche se l'autorun è disattivato. Allora come bloccarli?
In Windows, un primo passo che si può compiere è quello di forzare il mount dei dispositivi USB in sola lettura, impostando a 1 il valore della chiave di registro seguente :
HKEY_LOCAL_MACHINESystemCurrentControlSetControlStorageDevicePoliciesWriteProtect
Ovviamente non basta. Ci viene allora in aiuto il Group Policy Editor (in italiano "Editor Criteri di gruppo locali"), attraverso cui si possono impostare una serie di policy che possono aiutare a restringere l'installazione hardware dei dispositivi. Lanciamo quindi il comando "gpedit.msc" da Start -> Esegui e andiamo a:
Computer->Modelli Amministrativi->Sistema->Installazione Dispositivi->Restrizioni all'installazione dei dispositivi.
Gpedit
in figura possiamo osservare una serie di policy che consentono o impediscono certi tipi di azioni relative all'installazione dei dispositivi hardware. Ovviamente sono valide per tutti i device hardware e quindi anche per i dispositivi USB. È possibile ad esempio consentire l'installazione utilizzando driver che corrispondono solo a certe classi di dispositivi, creando quindi una sorta di "white list" di device installabili. Questa policy però viene sopravanzata da "Consenti agli amministratori di ignorare criteri di Restrizioni installazione dispositivi", per cui serve a poco se un attaccante riesce comunque ad ottenere privilegi amministrativi sulla macchina: a quel punto gli basterà andare nel Device Manager, trovare il device di cui è stata bloccata l'installazione automatica, cliccare col destro e scegliere "Aggiornamento software driver", il che forzerà l'installazione del dispositivo.
Aggiornamento driver
Seguendo la stessa logica, è possibile costruire una white list di device installabili in base al loro ID. Per questa policy e per quella descritta sopra esistono le corrispondenti policy, ma di segno contrario, che consentono invece di creare delle "black list" in base alla classe o all'ID del device. Come regola generale, inoltre, una policy di tipo "Impedisci" sopravanza sempre una di tipo "Consenti".
Come già ricordato in precedenza, tutte le informazioni relative ai device USB (Vendor ID, Product ID, Device Class, Serial Number, etc.) sono ricavabili utilizzando tool specifici, come il già citato USBDeview. È possibile inoltre mostrare un messaggio di avviso personalizzabile quando si tenta di installare un device per cui esiste una policy che non lo consente, oppure bloccare tout-court l'installazione di dispositivi removibili.
Mesaggio inserimento USB
Per far sì che i dispositivi di tipo PHUKD non si installino in modo "subdolo" può essere utile quindi adottare le seguenti regole:
- Abilitare entrambe le policy "Consenti agli amministratori di ignorare criteri di Restrizioni installazione dispositivi" e "Impedisci l'installazione di dispositivi removibili".
- Abilitare la visualizzazione di un messaggio personalizzato attraverso le policy "Visualizza il titolo di un messaggio personalizzato quando un'impostazione del criterio impedisce l'installazione del dispositivo" e "Visualizza un messaggio personalizzato quando un'impostazione del criterio impedisce l'installazione" in modo tale che l'utente sappia perchè l'hardware non si installa e possa contattare l'Amministratore.
- Ogni volta che è necessario installare un device, andare nel device manager, selezionare il tipo di periferica ed installare i relativi driver usando l'opzione "Aggiornamento software driver" (come già mostrato in Fig. 1).
Scansione di rete alla ricerca di dispositivi USB nocivi
Tra le informazioni che ogni dispositivo USB porta con sé (Vendor ID, Product ID, etc.) ce n'è anche un'altra che può risultare molto utile, se presente: il "Serial Number Descriptor". Si tratta appunto di un numero seriale opzionale, ma spesso presente su un ampio numero di dispositivi come ad es. pendrive, hard disk removibili, smartphone. Vediamo in che modo può essere utile.
Supponiamo che un malware si stia diffondendo nella rete aziendale e ci sia il fondato sospetto che l'infezione sia dovuta ad un dispositivo USB collegato ad un host. Andiamo allora sull'host infetto e prendiamo nota di tutti i device USB che sono stati collegati a tale host, rilevandone Vendor/Product ID e, appunto, il Serial Number. A questo punto possiamo lanciare una scansione di rete alla ricerca di dispositivi USB che abbiano in comune queste informazioni con l'host compromesso, in modo tale da ridurre il campo di ricerca ad un numero inferiore di host da investigare, probabilmente compromessi. Utilizzando questo metodo è possibile:
- Individuare gli host compromessi in modo più rapido e "segregarli" dal resto della LAN aziendale;
- Individuare, attraverso il serial number e per raffinamenti successivi, il device USB che ha causato l'infezione.
In questa attività ci viene ancora in aiuto l'ottimo USBDEview che, come già ricordato nel precedente articolo, consente una scansione di rete di tutti i device USB che sono stati collegati ad ogni host della rete aziendale. USBDeview, infatti, legge specifiche chiavi di registro di Windows che contengono la lista di tali device. Le due chiavi in questione sono le seguenti:
Lista di device USB (connessi e non):
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSB
Lista di Storage Device di tipo USB:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSBSTOR
Una volta effettuata la connessione ad un host della LAN (sono necessari i privilegi di Amministratore), il comando da lanciare (da riga di comando, dalla directory in cui è installato USBDeview) è il seguente:
USBDeview /remote NomeComputer
Per effettuare invece la scansione automatizzata di tutta la LAN, basta costruire un semplice file di testo (es. "computers.txt") contenente la lista degli IP o dei nomi netbios dei computer:
192.168.1.1
192.168.1.2
pc_mariorossi
pc_marcobianchi
e lanciare il comando:
USBDeview /remotefile computers.txt
Una volta effettuata la scansione con USBDeview sarà possibile individuare il serial number ripetuto e andare a "pescare" tutti gli host che riportano una corrispondenza con quel serial number, che saranno potenzialmente compromessi. Solo a titolo di esempio, in figura si può osservare una tipica scansione effettuata con USBDeview, con la disposizione delle colonne modificata e ordinata per serial number. C'è da dire che purtroppo nel caso dei keylogger hardware questo metodo non è molto indicato in quanto tali dispositivi non mostrano informazioni specifiche.
È inoltre possibile e molto utile, soprattutto nel caso di grosse LAN, esportare i dati in un formato che consenta di effettuare delle query SQL, come ad esempio il CSV (comma separated values), che può essere facilmente importato in qualsiasi DBMS (MS Access ad esempio). Ad esempio, supponendo di essere alla ricerca del serial 3349430CD8109DFB, basterà lanciare una query del tipo:
SELECT report.* FROM report WHERE report.[serial] = '3349430CD8109DFB' ;
ove "report" è il nome che abbiamo dato all'output della scansione effettuata.
È possibile generare un CSV direttamente dalla GUI di USBDeview anche selezionando tutti i record (Ctrl+A) e salvando in formato CSV. Questa operazione però si può fare anche senza invocare la GUI di USBDEview, lanciando un comando simile al seguente:
USBDeview /remotefile computers.txt /scomma lista.csv
Conclusioni
I dispositivi USB sono molto utili e "smart" (fin troppo forse...), ma possono trasformarsi anche in pericolosi vettori di attacco e consentire, in poco tempo, la compromissione di intere reti aziendali. Certamente è necessario dotarsi di tool antimalware, ma sfortunatamente ciò non basta per alcuni motivi:
- Il malware "autoprodotto" da un attacker non viene rilevato da alcun software antimalware.
- Le modalità con cui i device USB possono essere utilizzati come vettori di attacco sono tante e tali (basti pensare ai dispositivi U3 o PHUKD) e vanno ben oltre il malware caricato sulla penna USB.
Possiamo certamente intervenire, come abbiamo visto, "tarando" delle policy specifiche mediante l'utilizzo di GPO/Local Security Policy in Windows (in Linux si possono usare UDEV e USB Authorizations) ma anche in questo caso ci può essere un fault dovuto ad esempio a:
- Spoofing delle stringhe che identificano i device, sulla base delle quali vengono costruite le policy.
- La maggior parte degli utenti si annoia a morte a lavorare sulle policy, ha paura di sbagliare, preferisce i meccanismi automatici ("avanti, avanti, fine"), per cui è molto difficile che si mettano a farlo.
È altresì vero che spendere ore di programmazione per customizzare una pendrive USB con un malware autoprodotto per attaccare l'home user forse non vale la pena (e tra l'altro non è da tutti), ma lo scenario cambia radicalmente nel caso di target governativi (e "istituzionali" in genere) o Corporate, dalle cui macchine un attacker può potenzialmente estrarre informazioni anche molto riservate (e quindi rivendibili a caro prezzo). In questo caso è utile:
- Implementare un'adeguata policy di sicurezza fisica degli host: se un dispositivo USB non può essere collegato ad un pc o ad un server il problema non si pone;
- addestrare gli utenti educandoli all'uso dei dispositivi USB, mettendoli in guardia sui pericoli che, anche involontariamente, possono sorgere dall'uso "allegro" di questi device. Chi scrive può testimoniare direttamente casi in cui il dipendente inconsapevole porta in azienda una "innocua" pendrive USB per guardare un "filmino". Peccato che per vedere il simpatico filmino, il dipendente aveva scelto i computer delegati al controllo delle linee di produzione dell'azienda (si trattava di un'industria alimentare) e sulla pendrive si era annidato un trojan che ha bloccato per varie ore le linee, con conseguenze facilmente immaginabili.