Crittografia Simmetrica nel C2: Encrypted Channel — Symmetric Cryptography (T1573.001)

Quando un attaccante compromette un sistema, il problema successivo è mantenere il canale di comando e controllo invisibile ai difensori. La tecnica T1573.001 — Symmetric Cryptography affronta esattamente questo: gli avversari impiegano algoritmi di crittografia simmetrica noti — AES, DES, 3DES, Blowfish, RC4 o semplici XOR — per cifrare il traffico C2, anziché affidarsi alle protezioni intrinseche del protocollo di trasporto. La chiave è la stessa per cifrare e decifrare, il che semplifica l'implementazione nel malware ma crea anche un tallone d'Achille investigativo: chi ottiene la chiave può decifrare l'intera comunicazione.

Questa tecnica si colloca nella fase Command and Control (tattica TA0011), il momento in cui l'avversario stabilisce e mantiene la comunicazione con i sistemi compromessi. L'obiettivo è mimetizzarsi nel rumore di fondo del traffico lecito: un flusso HTTP con payload cifrato in RC4 può sembrare banale traffico web se non si analizza l'entropia del contenuto.

I numeri parlano chiaro: 14 gruppi APT documentati, 159 software che implementano questa tecnica, 4 campagne tracciate e una sola mitigazione ufficiale basata su intrusion prevention. La pervasività è tale che praticamente ogni famiglia di malware moderna include almeno un livello di cifratura simmetrica nel proprio protocollo C2.

Simulare un canale C2 cifrato con crittografia simmetrica è uno degli esercizi più istruttivi in un red team engagement, perché costringe a capire cosa vedono (e cosa non vedono) i difensori a livello di rete. L'obiettivo non è soltanto stabilire una sessione cifrata, ma farlo in modo che il traffico generato sfugga all'analisi euristica.

Il punto di partenza più diretto è Cobalt Strike (a pagamento), che implementa nativamente AES-256-CBC con HMAC-SHA-256 per cifrare i comandi e XOR per lo shellcode. Nella configurazione del Malleable C2 profile si può personalizzare il comportamento del beacon in modo che il traffico cifrato si mescoli con pattern HTTP legittimi. In alternativa, Sliver (open source) offre cifratura AES-GCM-256 per lo scambio messaggi C2, con la possibilità di generare implant che negoziano una session key all'avvio.

Per un approccio più granulare e didattico, si può costruire un canale RC4 artigianale con Python. Un esempio minimo che incapsula comandi in HTTP POST cifrati con RC4:

python3 -c "from Crypto.Cipher import ARC4; k=ARC4.new(b'testkey123'); print(k.encrypt(b'whoami').hex())"

Questo one-liner (richiede il pacchetto pycryptodome, installabile con pip install pycryptodome) mostra come un payload venga trasformato in una stringa esadecimale opaca. Sul lato server, basta invertire l'operazione con la stessa chiave.

Per simulare XOR — l'approccio più semplice e diffusissimo nei malware reali — basta un ciclo bash:

echo -n "whoami" | xxd -p | python3 -c "import sys; data=bytes.fromhex(sys.stdin.read().strip()); print(bytes([b^0xBE for b in data]).hex())"

La chiave 0xBE è quella usata da 4H RAT, ma in laboratorio il valore è irrilevante: ciò che conta è osservare come il payload cifrato alzi drasticamente l'entropia del flusso.

Per un test realistico end-to-end, si può configurare Sliver in listener mode con trasporto mTLS o HTTP e verificare con Zeek (open source) o Wireshark (open source) come appare il traffico catturato. Il comando Zeek che misura l'entropia dei payload è particolarmente utile:

zeek -r capture.pcap frameworks/files/entropy

Questo genera log con i valori di entropia per file e stream, permettendo di calibrare le soglie di detection. Un red teamer dovrebbe sempre documentare il delta tra il traffico C2 cifrato e il baseline del cliente, fornendo ai difensori i dati per migliorare i propri alert.

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

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