File Cifrati e Offuscati: Encrypted/Encoded File (T1027.013)

Quando un avversario deposita un payload su disco, la prima linea di difesa che deve aggirare è l'analisi statica: firme antivirus, regole YARA, motori di scansione automatizzati. La sotto-tecnica T1027.013 – Encrypted/Encoded File descrive esattamente questo passaggio: cifrare o codificare il contenuto di un file — in tutto o in parte — per renderlo opaco a qualsiasi ispezione che non preveda l'esecuzione effettiva.

La tecnica rientra nella tattica TA0005 – Defense Evasion, la fase della kill chain in cui l'attaccante lavora per rimanere invisibile all'interno dell'ambiente compromesso. L'offuscamento può essere applicato a payload binari, file di configurazione, script, librerie dinamiche e persino risorse incorporate nell'eseguibile stesso. Gli schemi crittografici spaziano dal banale XOR single-byte fino ad AES-256 in CBC mode, passando per RC4, Base64, ChaCha20, Blowfish e combinazioni ibride con RSA. In molti casi gli avversari applicano strati ridondanti di codifica — ad esempio Base64 sopra RC4 sopra XOR — per aumentare la resistenza all'analisi.

La dimensione del fenomeno è significativa: i dati attestano 37 gruppi APT, 172 famiglie di software malevolo, 12 campagne documentate e 2 mitigazioni direttamente associate a questa sotto-tecnica. Si tratta di uno dei meccanismi di evasione più trasversali, adottato sia da gruppi state-sponsored sia da operatori di ransomware e commodity malware.


L'obiettivo in un esercizio red team è dimostrare che i controlli di sicurezza dell'organizzazione falliscono nel rilevare payload cifrati su disco. Il punto non è la complessità dell'algoritmo: spesso basta un XOR single-byte per superare firme statiche mal configurate.

Partiamo dal caso più semplice. Su Linux, generare un payload XOR-offuscato è questione di pochi byte di Python:

python3 -c "import sys; key=0x53; data=open(sys.argv[1],'rb').read(); open(sys.argv[2],'wb').write(bytes([b^key for b in data]))" payload.bin payload.enc

La chiave 0x53 non è casuale: è la stessa documentata nella configurazione di RedLeaves. In un test realistico, usare chiavi osservate in-the-wild dimostra al blue team che le minacce reali adottano schemi elementari che troppo spesso sfuggono alla detection.

Per scenari più sofisticati, il framework Donut (open source) genera shellcode cifrato e compresso da assembly .NET, PE ed EXE, con supporto per AES-256 e compressione LZNT1. L'output è un modulo che si decifra interamente in memoria, senza mai scrivere il payload in chiaro su disco. In laboratorio è il modo più diretto per testare se l'EDR rileva l'unpacking in-memory.

Con Sliver (open source), la cifratura delle stringhe avviene a compile-time: il beacon viene generato con stringhe offuscate di default, senza bisogno di wrapper aggiuntivi. Questo replica il comportamento di famiglie come GoldMax, che scrive su disco file di configurazione cifrati con AES e codificati Base64.

Per simulare l'uso di archivi SFX protetti da password — tecnica impiegata da BITTER con RAR SFX dropper e da TA505 con documenti Word protetti — si può creare un archivio auto-estraente con WinRAR o 7-Zip contenente un eseguibile benigno di test:

7z a -sfx -pTestPassword123 payload_sfx.exe beacon_test.exe

Su macOS, per replicare il comportamento di XCSSET che usa xxd per codificare moduli attraverso strati multipli di decodifica esadecimale:

xxd -p payload.bin | xxd -p > payload.hex.hex

Il blue team dovrebbe rilevare la catena di decodifica inversa. Infine, per testare la detection di Base64, il classico:

certutil -encode payload.exe payload.b64

su Windows genera un file codificato che molti EDR dovrebbero intercettare sia in scrittura che nella decodifica successiva tramite certutil -decode. Se non lo fanno, il report del penetration test ha già un finding critico.


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

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

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.