Dati Spazzatura nel Traffico C2: Junk Data (T1001.001)
La tecnica T1001.001 - Junk Data appartiene alla tattica TA0011 (Command and Control) e descrive l'inserimento deliberato di dati casuali o privi di significato all'interno dei protocolli usati per il canale di comando e controllo. L'obiettivo è duplice: da un lato ostacolare il reverse engineering del protocollo, dall'altro rendere inefficaci le firme di rete basate su pattern statici.
Gli attaccanti applicano questa offuscazione in molteplici modi. Alcuni prependono o accodano byte casuali ai payload cifrati, altri intercalano caratteri pseudo-random tra i byte significativi, altri ancora generano intere richieste HTTP fittizie per annegare il traffico malevolo in un mare di rumore. Il risultato, sulla rete, è un flusso che appare irregolare, ad alta entropia, ma che segue una logica nota solo al binomio implant/controller.
L'impatto operativo è rilevante. I dati MITRE ATT&CK associano questa tecnica a 1 gruppo APT (APT28), 16 famiglie malware documentate — tra cui SUNBURST, WellMess, GoldMax e P8RAT — e coprono l'intero spettro delle operazioni di spionaggio statuale. La contromisura ufficiale è una sola, M1031 (Network Intrusion Prevention), e da sola risulta insufficiente: le firme statiche perdono efficacia proprio quando il payload è randomizzato. Serve quindi un approccio comportamentale basato su entropia, rapporti di traffico e baselining, tema che le prossime sezioni sviluppano per ciascun ruolo del SOC.
Simulare Junk Data in un esercizio red team significa costruire un canale C2 che alteri statisticamente il payload senza rompere la comunicazione. L'obiettivo del test è validare la capacità del blue team di identificare traffico ad alta entropia anche quando le firme YARA/Snort non producono match.
Un punto di partenza pulito è Mythic C2 (open source), framework modulare che permette di scrivere trasformazioni custom sul traffico attraverso i cosiddetti C2 Profiles. Si può creare un profilo HTTP che prepende N byte casuali al payload cifrato, imitando il comportamento descritto per APT28 — dove ogni implant riceveva un junk length individuale. In alternativa, Sliver (open source) e Havoc (open source) offrono profili malleable simili a quelli di Cobalt Strike, con la possibilità di definire trasformazioni prepend, append e base64 concatenate.
Per prototipare rapidamente la trasformazione, un semplice script Python lato implant è sufficiente:
python3 -c "import os,base64; junk=os.urandom(32); print(base64.b64encode(junk + b'REAL_PAYLOAD'))"
Lato controller, la funzione inversa rimuove i primi 32 byte dopo la decodifica Base64. Per replicare invece l'inserimento di caratteri pseudo-random tra i byte significativi (comportamento di Downdelph e Turian), si può usare uno stream RC4 con seed condiviso che indica le posizioni dei caratteri di junk.
Sul fronte DNS tunneling, per emulare Uroburos che aggiunge caratteri extra alle query per mimare richieste legittime, dnscat2 (open source) e iodine (open source) permettono di modificare il generatore di sottodomini per aumentare l'entropia percepita ma mantenere una struttura sintatticamente valida.
Per la fase di testing lab-safe consiglio questa catena operativa. Prima si costruisce un range isolato con INetSim (open source) come fake internet e Suricata (open source) inline per catturare gli alert. Poi si esegue il payload con profilo baseline (senza junk) per stabilire una detection reference. Infine si abilita l'offuscazione junk e si misura la riduzione dei match delle firme.
Per validare la qualità dell'offuscazione dal punto di vista statistico, CyberChef (gratuito, self-hostable) calcola rapidamente l'entropia di Shannon dei payload catturati, mentre Wireshark (open source) con il dissector tls permette di ispezionare la dimensione dei record e i pattern di beaconing. Un payload ben offuscato dovrebbe attestarsi su entropia >7.5 e mostrare varianza nella dimensione a ogni beacon.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo