Con il termine DNS Exfiltration si indica una tecnica che consente ad un criminal hacker di attivare un canale di comunicazione su una macchina infettata per esfiltrare dati e inviare comandi da un server di controllo remoto.
Indice degli argomenti
DNS Exfiltration: lo scenario di attacco
Per analizzare il funzionamento della tecnica di DNS Exfiltration daremo quindi per scontato che la macchina target usata come test sia già stata infettata: tanti possono essere i modi, primo fra tutti con un attacco phishing.
Tipicamente, se l’obiettivo criminale non è infettare altre macchine all’interno della rete locale in maniera automatica, ad esempio con un attacco laterale (side channel) mediante ransomware, ma esfiltrare dati e interagire con la macchina infetta per pilotarla in maniera “chirurgica”, allora l’attaccante crea un tunnel, eventualmente cifrato, attraverso il quale si connette all’host infetto per inviare i comandi e riceverne le informazioni.
Questo può avvenire senza grossi problemi se la macchina target ha accesso a Internet particolari limitazioni di traffico, una situazione tipica in molte realtà aziendali.
Se invece l’ambiente virtuale è molto protetto, cioè se vi sono controlli a livello applicazione o attraverso proxy e firewall di livello 7, allora è molto difficile che il criminal hacker riesca ad attivare canali di connessione come i tunnel cifrati tra la macchina infettata e il server di comando e controllo.
Come attivare, quindi, canali per esfiltrare dati e inviare comandi alle macchine infette qualora queste si trovino in un ambiente altamente protetto e controllato a livello periferico sia per i tentativi di accesso non autorizzati dall’esterno sia per le connessioni sospette dall’interno?
In questi ultimi anni, e direi solamente in questi ultimi anni (c’è un lavoro di tesi del 2016), si sta prendendo in considerazione la possibilità che il servizio DNS possa essere utilizzato per pilotare una macchina infetta senza che i controlli di frontiera delle aziende possano intercettare e classificare questi messaggi come malevoli.
Come funziona la tecnica di DNS Exfiltration
Per capire come ciò sia possibile, è utile ripassare velocemente il funzionamento del protocollo DNS (Domain Name System).
Supponiamo che un’applicazione faccia una richiesta DNS, per esempio relativa all’URL www.google.it, al server DNS configurato sulla propria macchina. Se l’informazione non è presente, sia perché il server locale non è “autoritativo” per quel dominio sia perché l’informazione non è nella sua cache, invia una richiesta DNS al server “autoritativo” per quel dominio e quando ne avrà la risposta, la inoltra alla macchina che ha fatto richiesta. In questo caso tutti gli indirizzi mnemonici verranno codificati nei loro indirizzi IP.
Immaginiamo ora che la macchina infetta voglia inviare all’esterno della rete le credenziali di accesso che è riuscita a “rubare”. Utilizzando una chiamata UDP/53 e utilizzando il protocollo DNS, la macchina invierà una richiesta di tipo A (risoluzione indirizzo IP) al dominio dell’hacker “hacker.it” dove però il nome host xyz da “convertire in IP” è, in realtà, la password o in generale il dato che si vuole esfiltrare.
La macchina infetta, cioè, invierà una richiesta di risoluzione di questo tipo: xyz.hacker.it, o meglio, se vogliamo anche aggiungere l’identificazione della macchina infetta: xyz.host001.hacker.it.
Ad un eventuale controllo di sicurezza sembrerà tutto normale, in quanto il servizio DNS ha semplicemente inviato una richiesta di risoluzione al gestore del dominio hacker.it, senza accorgersi che in quella richiesta è indicata anche la password rubata alla vittima.
La password (o ogni altra informazione che si vuole esfiltrare), infatti, non è individuabile come “codice malevolo” e quindi non può essere intercettato dai sistemi di protezione di frontiera come informazioni rilasciata all’esterno in maniera fraudolenta.
Prendere il controllo di una macchina via DNS
È possibile, sempre utilizzando il servizio DNS, far sì che la macchina infetta riceva anche dei comandi dall’esterno senza che i sistemi di frontiera o antivirus si accorgano di nulla.
In questo caso la macchina infetta fa una richiesta di tipo TXT (o NULL) al DNS richiedendo il campo TXT dell’host, host01.hacker.it. Nel campo TXT l’hacker invierà il codice di esecuzione, il comando o le informazioni codificate alla macchina infetta.
Anche in questo caso, al più i sistemi di controllo verificheranno che il pacchetto DNS sia formalmente corretto: chiaramente, ogni stringa contenente il campo TXT è corretta e quindi difficilmente intercettabile come codice malevolo.
In questo modo è stato creato un canale bidirezionale tra la macchina infetta e l’attaccante. Un canale difficilmente intercettabile proprio perché utilizza in maniera formalmente corretto un protocollo molto utilizzato e non studiato in maniera approfondita dal punto di vista della sicurezza IT.
Mitigare il rischio di DNS Exfiltration
In linea di principio, è molto difficile distinguere richieste correttamente inviate e richieste che servono per scambio di informazioni non autorizzate.
Inoltre, anche se i sistemi utilizzano dei DNS interni, difficilmente potranno capire che il codice scambiato è malevolo perché non vi è alcuna regola che definisce come deve essere riempito il nome di un host (Type A) o come deve essere riempito il campo TXT.
Il limite di utilizzare questo tipo di connessione è la lentezza con cui si scambiano i dati (si utilizza, come abbiamo visto, il protocollo UDP in cui ogni pacchetto ha un numero limitato di caratteri che si possono inviare o ricevere), ma l’efficacia e il fatto che difficilmente si possa scoprire questo tunnel di comunicazione fa sì che questo tipo di utilizzo sia perfetto per attacchi mirati in ambienti molto protetti.
Come ci di può difendere da attacchi di questo tipo? Purtroppo, non esistono sistemi di protezione che ci difendano in maniera efficiente perché la difesa si può basare solo su dati statistici, machine learning o intelligenza artificiale che riescano a predire che, per esempio, vi siano molte richieste di tipo TXT (che solitamente è un campo poco utilizzato) inviate a particolari e circoscritti domini.
Come è evidente, questo è un tema importante per quel che riguarda la sicurezza informatica delle aziende e lo sarà sempre di più in futuro. C’è da sperare che presto si possa trovare una soluzione visto che, parallelamente, sono sempre più disponibili applicazioni che automatizzano la creazione di questo tipo di canali di comunicazione a prezzi davvero accessibili.