Algoritmi di Generazione Domini: Domain Generation Algorithms (T1568.002)

Gli algoritmi di generazione domini rappresentano una tecnica sofisticata che permette al malware di identificare dinamicamente i server di comando e controllo. Invece di affidarsi a indirizzi IP statici o domini fissi, questi algoritmi creano migliaia di possibili destinazioni rendendo estremamente complesso il blocco delle comunicazioni malevole.

La tecnica si manifesta nella tattica TA0011 (Command and Control), posizionandosi nella fase di mantenimento dell'accesso della kill chain. Il malware può generare domini apparentemente casuali come istgmxdejdnxuyla.ru oppure concatenare parole comuni formando cityjulydish.net.

Attualmente 2 gruppi APT documentati e 20 famiglie di malware implementano questa capacità. La maggior parte utilizza algoritmi basati sul tempo, generando domini diversi ogni ora, giorno o mese. Altri incorporano valori seed specifici per rendere la predizione ancora più complessa.

Per comprendere il funzionamento dei DGA, iniziamo simulando un algoritmo base in Python che genera domini casuali basati sulla data corrente:

import hashlib
from datetime import datetime

def generate_dga_domain(date, seed="malware123"):
    date_string = date.strftime("%Y%m%d")
    hash_input = f"{seed}{date_string}".encode()
    hash_output = hashlib.md5(hash_input).hexdigest()
    domain = hash_output[:16] + ".com"
    return domain

Il comando sopra genera un dominio di 16 caratteri che cambia giornalmente. Per testare algoritmi più complessi che concatenano parole, possiamo utilizzare dizionari predefiniti simulando il comportamento di CHOPSTICK:

python dga_wordlist.py --words adjectives.txt nouns.txt --tld .net --count 100

Durante un red team engagement, l'implementazione di un DGA richiede la sincronizzazione temporale tra il malware e il server C2. Un approccio pratico prevede l'utilizzo di servizi pubblici come la blockchain di Dogecoin, tecnica documentata nel malware Doki.

Per testare la resilienza della difesa, generate domini con entropia variabile. Domini con alta entropia (>4.0) sono facilmente identificabili, mentre quelli basati su parole comuni possono mimetizzarsi meglio nel traffico legittimo. ShadowPad utilizza il giorno del mese come seed, generando solo 31 possibili domini mensili - un compromesso tra flessibilità e gestibilità dell'infrastruttura.

Il tool ngrok offre una implementazione legittima di DGA che cambia URL ogni 12 ore, utile per comprendere pattern temporali senza sviluppare codice custom.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo