Vi serve il cloud computing? Iniziate subito

Famiglie DGA con semi dinamici: un comportamento imprevisto nel traffico DNS

Akamai Wave Blue

scritto da

Connor Faulkner e Stijn Tilborghs

September 06, 2023

Connor Faulkner

scritto da

Connor Faulkner

Con un background in astrofisica, Connor Faulkner è animato dalla curiosità e dalla passione per la decifrazione di sistemi complessi. Svolge il ruolo di Data Analyst nell'Akamai Security Intelligence Group, che si occupa del complesso scenario del rilevamento delle minacce.

Headshot of Stijn Tilborghs

scritto da

Stijn Tilborghs

Stijn Tilborghs è un ingegnere elettronico che ha deciso di passare al settore del data science nel 2016. Nei primi mesi, la sua fonte di reddito è derivata da un concorso che metteva in palio un premio in denaro per la realizzazione di hackathon per l'apprendimento automatico. Dopo aver lavorato come collaboratore per alcuni anni, è entrato a far parte del team Akamai Threat Research, in cui si occupa di cercare soluzioni innovative nello scenario globale e dinamico delle minacce.

A closer look at the Pushdo and Necurs DGA families reveals that they output malicious domains both before and after their expected generation dates.

Editoriale e commenti aggiuntivi di Tricia Howard e Lance Rhodes 

Analisi riassuntiva

  • I ricercatori Akamai svelano e spiegano perché nei dati del trafficoDNS(Domain Name System) hanno osservato un comportamento delle famiglie DGA (Domain Generation Algorithm) con semi che è diverso da quanto ci si aspetterebbe dal loro algoritmo sottoposto a reverse engineering.

  • Questo comportamento modificato fa pensare che alcuni criminali stiano tentando di migliorare ulteriormente la funzionalità delle famiglie DGA di estendere i propri canali di comunicazione C2 (Command and Control), proteggendo così le loro botnet.

  • I ricercatori della sicurezza ritengono più complesso predire i nomi di dominio generati per le DGA con semi dinamici rispetto alle DGA con semi statici. 

  • Ad uno sguardo più approfondito, le famiglie DGA Pushdo e Necurs generano domini dannosi prima e dopo le loro date di generazione previste.

Introduzione

In questo blog, forniremo una breve panoramica delle DGA e condivideremo alcune interessanti informazioni.

L'Akamai Security Intelligence Group riesce ad analizzare i log anonimizzati delle query DNS provenienti dai server DNS CacheServe . Nell'ambito delle nostre azioni di rilevamento delle botnet, osserviamo e monitoriamo il comportamento reale di oltre 100 famiglie DGA note. 

Abbiamo rilevato che le DGA con semi dinamici (un sottoinsieme delle DGA) spesso mostrano un comportamento molto diverso rispetto a quanto ci si aspetterebbe dallo stesso algoritmo DGA sottoposto a reverse engineering. Più precisamente, osserviamo che i nomi di dominio delle DGA vengono attivati prima della loro data di generazione prevista. 

Cosa sono gli algoritmi di generazione dei domini? 

I malware, come le botnet, spesso devono comunicare con un server centralizzato per ricevere comandi o aggiornamenti. 

Le DGA sono algoritmi utilizzati nei malware per generare un gran numero di nomi di dominio in modo semi-casuale.

Un dispositivo infettato tenta regolarmente di connettersi all'intero set di domini generati in modo algoritmico, che vengono forniti dalla DGA. È necessario raggiungere solo un dominio per stabilire una connessione con il server C2. Ciò rende difficile interrompere le comunicazioni C2 per i ricercatori della cybersicurezza.

Come funziona

Immaginate, ad esempio, una botnet con un'ipotetica famiglia o variante DGA che genera 500 nomi di domini dannosi al giorno.

Un dispositivo infettato con questa famiglia DGA invia query a tutti questi 500 nomi di domini ogni giorno. Il server C2 della botnet genera gli stessi 500 nomi di domini ogni giorno utilizzando (si suppone) lo stesso seme (questa questione verrà approfondita più avanti). Tuttavia, il criminale deve controllare solo 1 di questi 500 domini per stabilire una comunicazione con i computer infettati (bot).

A volte, il seme cambia generando un nuovo set di domini e il processo comincia da capo. Ciò rende difficile interrompere il traffico dannoso per i ricercatori della sicurezza poiché i domini cambiano di frequente e presentano spesso un aspetto casuale, come "ghlidae[.]com".

I domini di primo livello (TLD) sono integrati nel codice sorgente e, perlopiù, limitati ai TLD più economici.

Esistono diverse DGA. Quando viene rilevato un nuovo algoritmo da parte della community della sicurezza (che, spesso, lo sottopone a reverse engineering), gli viene assegnato un "nome di famiglia". Alcune delle famiglie DGA più note sono: Conficker, Miraie CryptoLocker.

La storia delle DGA 

I malware, come botnet, crimeware e ransomware , devono comunicare con i dispositivi che hanno infettato. Prima dell'origine delle DGA, gli autori di malware integravano semplicemente il dominio (o un elenco di domini) nel codice sorgente del malware. I computer infettati, quindi, tentavano regolarmente di connettersi a questi domini integrati nel codice sorgente per stabilire una comunicazione con il server C2.

Una volta individuato il codice sorgente del malware, i team addetti alla sicurezza hanno potuto semplicemente inserire tutti i domini integrati nel codice sorgente in una blocklist.

Ricercatori: 1. Criminali: 0.

La prima famiglia di malware a implementare le DGA è stata la famiglia Kraken agli inizi del 2008. Tuttavia, nel corso dello stesso anno, la famiglia Conficker ha reso le DGA popolari.

La famiglia Conficker.A ha generato 250 nomi di dominio al giorno e la famiglia Conficker.C ha fatto ancora meglio generando addirittura 50.000 domini al giorno. I team addetti alla sicurezza hanno dovuto così, da un momento all'altro, rilevare e bloccare enormi quantità di nuovi domini ogni giorno, mentre i criminali, dal canto loro, dovevano comunque controllare uno solo di questi nomi di dominio ogni giorno.

Ricercatori: 1. Criminali: 1.

Maggiore stabilità delle comunicazioni C2

Le DGA hanno consentito di incrementare la stabilità delle comunicazioni C2, favorendo un ulteriore sviluppo di: 

  • Attacchi DDoS (Distributed Denial-of-Service)

  • Cryptomining

  • Vendita di informazioni sensibili rubate dai dispositivi compromessi

  • Spyware

  • Frodi tramite e-mail e pubblicità

  • Diffusione automatica dei malware

Si tratta di alcune delle campagne che continuano a flagellare la community della cybersicurezza oggi giorno. Le DGA si sono dimostrate molto efficaci.

Cosa sono i semi dinamici e statici?

Esistono due categorie principali di DGA: con semi dinamici e semi statici. Per comprendere la differenza tra questi due concetti, dobbiamo prima capire cosa si intende per "seme".

Il seme è essenzialmente un input che avvia un generatore di numeri pseudo-casuali (PRNG). Il seme influisce direttamente sull'ouput degli algoritmi che utilizza un PRNG.

Ad esempio, una specifica famiglia DGA con un seme pari a 42 genera sempre un elenco con lo stesso numero di nomi di dominio. Se si cambia il seme con un altro valore, ad esempio 50, l'output sarà completamente diverso.

Come si può immaginare, il seme svolge un ruolo di importanza cruciale per le DGA. I dispositivi infettati in una botnet non solo devono usare lo stesso algoritmo DGA dei server C2 con cui desiderano comunicare, ma anche lo stesso seme.

È possibile generare i semi delle DGA in vari modi e sulla base di vari codici sorgente.

Se i semi delle DGA non cambiano nel tempo (spesso integrati nel codice sorgente), vengono definiti semi statici.

Alcune DGA utilizzano, invece, semi che cambiano nel tempo, che vengono definiti semi dinamici.

DGA con semi statici

I semi statici possono essere numeri casuali, nomi di persone famose, la data della dichiarazione d'indipendenza americana, un glossario di termini o qualsiasi cosa un criminale possa scambiare facilmente con qualcos'altro.

Questi semi rimangono, di solito, costanti per un lungo periodo di tempo e generano una sequenza coerente di nomi di dominio.

Le combinazioni di DGA e semi rimangono efficaci solo finché l'algoritmo non viene sottoposto a reverse engineering e il seme non viene rilevato dai ricercatori della cybersicurezza. A quel punto, tutti i nomi di dominio generati vengono inseriti rapidamente nelle blocklist. Il criminali, quindi, dovrà cambiare il seme per generare un nuovo elenco di nomi di dominio.

Per nostri scopi interni, le DGA con semi statici vengono definite semplicemente "DGA statiche" e questo termine verrà utilizzato nel resto del presente post.

DGA con semi dinamici

Le DGA con semi dinamici (o semplicemente "DGA dinamiche") tentanto di complicare ulteriormente la vita dei ricercatori della sicurezza.

Le DGA dinamiche utilizzano semi che dipendono dal tempo. Perlopiù, viene utilizzata la data corrente. Ci sono anche delle DGA che utilizzano valori FX, temperature e, persino, argomenti di tendenza su Google Trends o Twitter.

Se il seme è prevedibile, i ricercatori della sicurezza possono predire i nomi di dominio che verranno generati dalle DGA ad una certa ora in futuro. La condizione è che, ovviamente, la famiglia DGA sia stata sottoposta a reverse engineering. 

Se il seme è basato sulla data, di solito, vediamo lo stesso set di nomi di dominio generati nell'arco di 24 ore (ossia, ogni giorno, dopo mezzanotte, viene generato un nuovo set di domini).

Sapere quale domini DGA verranno attivati domani ci consente di inserirli in modo proattivo nelle nostre blocklist per proteggere gli utenti finali dalle botnet.

Sfortunatamente, questo scenario non è possibile con semi non prevedibili, come le tendenze di Google Trend, i valori della temperatura o i tassi di cambio estero. Anche se disponiamo del codice sorgente della famiglia, non possiamo prevedere in modo corretto quali nomi di dominio DGA verranno generati in futuro.

Le DGA dinamiche: confronto tra aspettative e realtà

Il nostro team di ricerca ha osservato e indagato il comportamento imprevisto di più di una dozzina di DGA. Esaminiamo i comportamenti di due DGA particolarmente interessanti.

Nei due esempi, vengono considerate famiglie di DGA dinamiche che utilizzano la data come seme. Pertanto, combinando il seme (la data) con la DGA sottoposta a reverse engineering, dovremmo riuscire a predire quali nomi di dominio verranno generati e in quale momento, nei log di query DNS.

Quindi, confronteremo le nostre previsioni con quanto abbiamo effettivamente osservato nei dati del traffico DNS.

Per brevità, nel resto della presente sezione, utilizzeremo semplicemente "DGA" o "famiglia DGA" per sottintendere "famiglie DGA dinamiche che utilizzano la data come seme".

Unique number of domains seen in traffic Fig. 1: A generalized view of DGAs in traffic

Visualizzazione delle DGA nei dati del traffico

Nella Figura 1, viene riportata una visualizzazione generale delle DGA nei nostri dati del traffico. Per comprendere correttamente l'intuizione sottostante, serve un po' di contesto.

Innanzitutto, dobbiamo definire gli assi.

  • L'asse delle x rappresenta la differenza temporale (misurata in numero di giorni) tra la data prevista (la data del seme) e la data osservata in cui abbiamo visto i nomi di dominio generati dalla famiglia DGA nei dati del traffico DNS.

  • L'asse delle y è il numero dei domini osservati nei dati del traffico.

Supponiamo che il seme cambi ogni 24 ore, pertanto, ogni giorno, dopo mezzanotte, la DGA attiverà un nuovo set di nomi di dominio dal nuovo seme. Pertanto, vedremo lo stesso set di nomi di dominio per 24 ore, che poi cambierà. Questo è rappresentato dalla linea rossa , che ci mostra cosa si prevede verrà generato da queste famiglie DGA in un mondo ideale senza problemi di latenza.

A destra, rappresentato dalla linea viola, vediamo cosa si prevede verrà generato in presenza di vari tipi di latenza prima che i dati DNS raggiungano i nostri sistemi. La maggior parte dei problemi di latenza causa solo un lieve spostamento verso destra, di solito misurato in minuti o in ore anziché in giorni, a meno che non sia intenzionale.

A sinistra, tuttavia, vediamo qualcosa di imprevisto, rappresentato dalla linea verde. Che cosa sta succedendo? Osserviamo che i nomi di dominio delle DGA vengono attivati prima della loro data di generazione teorica!

Questo comportamento insolito fa intuire che i criminali hanno modificato le DGA per complicare ulteriormente il loro rilevamento e per proteggere le loro attività dannose.

Il traffico della famiglia Pushdo

Unique number of domains seen in traffic Fig. 2: Pushdo malware family

Per quanto riguarda la famiglia Pushdo, si prevede di vedere tutti i domini sottoposti a query nell'arco di 24 ore tra 0 e 1 giorno sull'asse delle x (Figura 2). Questo è rappresentato dall'area rossa.

Ciò che abbiamo effettivamente osservato è la distribuzione dei nomi di dominio nel traffico da −50 a +50 giorni dalla loro data prevista. Il picco si attesta su un valore di 10.000, proprio prima dello zero.

Sembra che il seme (la data) sia stata spostata di 50 giorni tramite qualcosa che sembra simile ad una normale distribuzione.

Il suo codice Python potrebbe risultare simile a quanto segue:

  import numpy as np
  import pandas as pd
  from datetime import datetime

seed = datetime.now().date()
shift = np.random.normal(loc=0, scale=15, size=1).astype(int)[0]
modified_seed = seed + pd.to_timedelta(f'{shift} days')

Ciò viene considerato un tentativo da parte di un criminale di stressare o confondere i ricercatori della sicurezza.

Fortunatamente, noi non ci facciamo confondere!  I nostri sistemi di rilevamento delle DGA coprono l'intero spettro visibile in Figura 2.

Il traffico della famiglia Necurs

Unique number of domains seen in traffic Fig. 3: Necurs malware family

Per quanto riguarda la famiglia Necurs, si prevede di vedere una distribuzione dei nomi di dominio tra -7 e +7 giorni (Figura 3). Si nota anche un picco molto più piccolo intorno al giorno +12, ma grande abbastanza da essere considerato come un risultato intenzionale.

Da ciò si intuisce come un sottoinsieme di criminali attendono quanto serve per utilizzare lo stesso set di domini, ma spostando il loro uso 7 giorni dopo la sua data prevista, ritardando quindi la generazione dei nomi di dominio di 7 giorni.

Conclusione

Analizzando l'attività delle DGA con semi dinamici nelle richieste DNS, abbiamo osservato alcuni comportamenti imprevisti. Ne concludiamo che queste anomalie possono essere attribuite a criminali che modificano i semi delle DGA in vari modi. Entrambe le famiglie DGA che abbiamo esaminato (Pushdo e Necurs) generano domini dannosi prima e dopo la loro data di generazione prevista, anche 50 giorni prima e dopo questa data

Dalla nostra analisi emerge che questo risultato viene ottenuto tentando di evitare i sistemi di rilevamento delle DGA e rendendo difficile il lavoro dei team di ricerca sulla sicurezza. Anche se i criminali continuano a cercare modi per proteggere le loro botnet e per estendere la durata dei loro canali di comunicazione C2, è compito dei ricercatori della sicurezza contrastare queste misure e identificare meglio la realtà rispetto alle previsioni.

Tenetevi al passo

Per ulteriori ricerche sulla sicurezza in tempo reale, seguiteci su Twitter.



Akamai Wave Blue

scritto da

Connor Faulkner e Stijn Tilborghs

September 06, 2023

Connor Faulkner

scritto da

Connor Faulkner

Con un background in astrofisica, Connor Faulkner è animato dalla curiosità e dalla passione per la decifrazione di sistemi complessi. Svolge il ruolo di Data Analyst nell'Akamai Security Intelligence Group, che si occupa del complesso scenario del rilevamento delle minacce.

Headshot of Stijn Tilborghs

scritto da

Stijn Tilborghs

Stijn Tilborghs è un ingegnere elettronico che ha deciso di passare al settore del data science nel 2016. Nei primi mesi, la sua fonte di reddito è derivata da un concorso che metteva in palio un premio in denaro per la realizzazione di hackathon per l'apprendimento automatico. Dopo aver lavorato come collaboratore per alcuni anni, è entrato a far parte del team Akamai Threat Research, in cui si occupa di cercare soluzioni innovative nello scenario globale e dinamico delle minacce.