Gli algoritmi di generazione del dominio (DGA) sono una classe di algoritmi che generano periodicamente e dinamicamente un gran numero di nomi di dominio. In genere, i domini vengono utilizzati da malware e botnet come punti di incontro per facilitare il callback ai server Command & Control del malintenzionato. I DGA consentono al malware di generare decine di migliaia di domini al giorno, la maggior parte dei quali non registrati. L'enorme numero di domini non registrati viene utilizzato per mascherare quelli registrati, consentendo alle botnet infette di eludere il rilevamento e la deterrenza da parte di sistemi di rilevamento della sicurezza basati su firma o reputazione IP.
La prima famiglia di malware nota a utilizzare un DGA è stata Kraken nel 2008. Nello stesso anno, il worm Conflicker ha portato la tattica DGA alla notorietà. Anche dopo 10 anni, è ancora possibile trovare Conflicker o una delle sue varianti su alcune delle reti odierne.
Di pari passo con la crescente proliferazione di malware, l'utilizzo dei DGA è diventato più pervasivo.
Gli obiettivi del rilevamento DGA
Poiché l'attività DGA è un indicatore considerevole di compromissione, diventa fondamentale rilevare tali attività sulla rete. Esistono tre livelli di rilevamento DGA, con ogni livello successivo correlato a un aumento della gravità. Il rilevamento a livelli successivi è più difficile, ma più critico.
Se viene rilevato un DGA, significa che uno o più sistemi sono stati infettati da malware basato su DGA e sono diventati botnet. Alcune azioni devono essere intraprese. Il primo obiettivo è identificare i sistemi interessati, pulendoli adeguatamente o mettendoli in quarantena per prevenire l'escalation.
Il prossimo obiettivo è determinare se un determinato nome di dominio DGA è registrato. Se il dominio è registrato, è diventato un server Command & Control attivo che presenta un grande rischio per la tua rete. I sistemi infetti, ora botnet, possono utilizzare questi server per chiamare casa e ricevere comandi dall'attaccante dannoso. Pertanto, il secondo componente di un efficace sistema di rilevamento DGA è la capacità di differenziare i domini registrati da quelli non registrati.
Ad esempio, un DGA può generare 1000 domini, da xyzwer1, xyzwer2…. a xyzwer1000. L'hacker deve registrare solo un dominio, cioè xyzwer500, non gli altri 999 domini. Se è possibile identificare il dominio registrato e il suo IP associato, le informazioni possono essere utilizzate per bloccare il canale di comunicazione tra il sistema di destinazione e il server Command & Control. Inoltre, le informazioni dovrebbero essere propagate a tutti gli altri sistemi di prevenzione o rilevamento in atto per ostacolare la richiamata a quel server da qualsiasi sistema nella rete.
L'ultimo ma più critico obiettivo di un sistema di rilevamento DGA è determinare se la richiamata ha avuto esito positivo con i domini registrati e se è stato stabilito un contatto tra i sistemi infetti e il server Command & Control. Se viene rilevata tale attività, alcuni danni potrebbero essere già stati arrecati. Forse il malware nella tua rete è stato aggiornato o è stato installato un nuovo malware. I dati sensibili potrebbero essere stati esfiltrati.
Come funziona il rilevamento DGA?
L'attività DGA viene rilevata acquisendo e analizzando i pacchetti di rete, generalmente in cinque passaggi generali.
Passaggio 1: rileva l'applicazione DNS
Il rilevamento inizia tramite richiesta DNS e / o messaggi di risposta. Il DNS è un protocollo Internet fondamentale e la maggior parte dei firewall ha una politica per consentire il traffico DNS in uscita sulla sua porta riservata 53. Tuttavia, un hacker può sfruttare la porta 53 per inviare il proprio traffico senza aderire al formato di messaggio DNS standard. Questo attacco è chiamato tunneling DNS. Si consiglia di utilizzare un motore DPI (Deep Packet Inspection) per identificare le applicazioni DNS in modo più preciso.
Passaggio 2: estrai i nomi di dominio
Una volta che un'applicazione di rete è stata identificata come DNS, i nomi di dominio nella query DNS e nei messaggi di risposta devono essere estratti. Per estrarre il nome di dominio corretto, il contenuto del messaggio DNS deve essere analizzato con attenzione ed è necessario un motore DPI per eseguire questa attività.
Passaggio 3: rilevare qualsiasi DGA
È necessario eseguire l'analisi sui domini estratti dai messaggi DNS per determinare se si tratta di DGA. Questo è forse il passaggio più complicato. La sfida è ridurre sia i falsi positivi che i falsi negativi. I meccanismi di rilevamento si sono evoluti notevolmente negli ultimi 10+ anni.
Alcuni meccanismi si basano sulla relativamente semplice Entropia di Shannon.
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
Alcuni meccanismi sono basati su Ngram più sofisticati presentati da Fyodor alla conferenza Hitb
Ultimamente, con la diffusione dell'apprendimento automatico, le sue metodologie sono state applicate anche al rilevamento DGA. L'apprendimento automatico può combinare le caratteristiche di Ngrams, Shannon Entropy e la lunghezza dei nomi di dominio per influenzare le decisioni. Sono stati provati diversi modelli di machine learning. C'è un ottimo post sul blog di Jay Jacobs nel 2014 che descrive il processo.
Ecco un altro rilevatore DGA open source basato su Machine Learning con Markov Chain:
https://github.com/exp0se/dga_detector
Passaggio 4: rilevare i domini DGA registrati
Per rilevare se un nome di dominio DGA è registrato, è necessario controllare le risposte DNS. Il semplice monitoraggio delle richieste DNS non è sufficiente: il sistema di rilevamento dovrebbe tenere traccia dell'intera transazione per facilitare la correlazione tra le informazioni.
Passaggio 5: rilevamento del traffico verso domini DGA registrati
Quando la maggior parte dei sistemi di rilevamento DGA esistenti si concentra sul rilevamento se un nome di dominio è un dominio DGA, spesso dimenticano l'ultima domanda, la più importante: c'è del traffico che è stato inviato ai domini DGA registrati? Per rilevare ciò in modo tempestivo, il rilevamento del dominio DGA deve essere strettamente associato all'ispezione del traffico di rete. I risultati devono essere riecheggiati nel motore di ispezione del traffico immediatamente prima che venga fatto qualsiasi danno.
Passaggio 6: blocco del traffico verso domini DGA registrati
Sebbene tecnicamente non faccia parte del rilevamento, se è presente un'integrazione con un sistema di prevenzione come Firewall o IPS, è necessario inserire subito una regola per bloccare tutto il traffico verso i domini registrati.
Un ottimo sistema di rilevamento DGA dovrebbe eseguire tutti e 5 i passaggi. Un eccellente sistema di rilevamento DGA dovrebbe includere anche il passaggio 6. Sfortunatamente, la maggior parte dei sistemi di rilevamento DGA oggi si ferma al passaggio 3 o al passaggio 4.
Conclusione
Poiché i DGA sono difficili da rilevare con un sistema di rilevamento o prevenzione basato sulla firma o sulla reputazione, sono diventati molto popolari tra gli sviluppatori di malware.
Per eseguire il rilevamento è necessario un sistema di rilevamento intelligente. Un eccellente sistema di rilevamento DGA deve estrarre le informazioni sul nome di dominio dalle transazioni DNS, eseguire analisi approfondite per rilevare lo stato DGA, controllare lo stato di registrazione dei domini sospetti, correlare con l'ispezione del traffico di rete per valutare il livello di compromissione e integrarsi idealmente con i sistemi di prevenzione per evitare ulteriori compromesso. Al fine di ridurre sia i falsi positivi che i falsi negativi, è necessario prendere in seria considerazione l'apprendimento automatico. Solo con un'intelligenza completa e pervasiva in ogni fase la minaccia può essere veramente migliorata.
Risorse
Il repository in Github di Andrey Abakumove contiene algoritmi per la generazione di nomi di dominio, nonché dizionari di nomi di dominio dannosi.


