Codice Polimorfico: Polymorphic Code (T1027.014)

Il codice polimorfico rappresenta una delle forme più raffinate di evasione difensiva catalogate nel framework MITRE ATT&CK sotto la tattica TA0005 (Defense Evasion). Si tratta di software capace di modificare la propria impronta a runtime: a ogni esecuzione il binario muta in una versione differente di sé stesso, preservando la funzionalità originale ma alterando hash, sequenze di byte e talvolta persino la logica di controllo del flusso.

L'obiettivo è aggirare i motori di rilevamento signature-based — antivirus tradizionali, YARA rule statiche, hash blocklist — che dipendono da pattern deterministici. Un mutation engine può ricostruire il codice al volo attraverso cifratura variabile, sostituzione di istruzioni equivalenti, inserimento di NOP semanticamente inerti e riorganizzazione dei basic block.

La tecnica si colloca tipicamente nelle fasi post-exploitation della kill chain, dove il payload deve persistere e operare senza essere identificato. Spesso opera in combinazione con altre sottotecniche di offuscamento: Software Packing (T1027.002), Command Obfuscation (T1027.010) e Encrypted/Encoded File (T1027.013).

Sul piano dell'impatto concreto, il dataset MITRE associa a T1027.014 un solo software documentato — BendyBear (S0574) — ma sottostima la diffusione reale: crypter commerciali e loader polimorfici sono ormai commodity nel mercato underground, alimentando famiglie come Emotet, TrickBot e loader RaaS. Le mitigazioni ufficiali si concentrano su approcci comportamentali (M1040) e antimalware avanzati (M1049) capaci di prescindere dalla firma statica.

Simulare polimorfismo in laboratorio richiede strumenti che dimostrino l'evasione di controlli signature-based senza produrre malware realmente dannoso. L'approccio corretto è generare payload benigni (calc.exe launcher, beacon di test) e osservarne la mutazione tra iterazioni.

Per test controllati su Windows, msfvenom (open source, incluso in Metasploit Framework) offre encoder iterativi. Un esempio classico per generare un payload con encoding multiplo:

msfvenom -p windows/x64/exec CMD=calc.exe -e x64/xor_dynamic -i 10 -f exe -o payload_test.exe

Rigenerando il payload più volte, l'hash SHA-256 cambia a ogni iterazione mantenendo il comportamento. Va sottolineato che gli encoder Metasploit non sono veramente polimorfici — sono statici e ben noti agli AV moderni — ma servono a dimostrare il concetto.

Per simulazioni più realistiche, Donut (open source, TheWover/donut su GitHub) converte PE, .NET assembly e shellcode in loader shellcode-only con opzioni di cifratura variabile. Il flag -e 3 abilita cifratura AES con chiave generata dinamicamente, producendo output diversi a ogni build. Freeze.rs (open source) genera loader in Rust che eseguono shellcode con syscall dirette, aggirando gli hook userland dei prodotti EDR.

Su Linux, la mutazione ELF può essere simulata con UPX (open source) in combinazione con script di post-processing che iniettano sezioni casuali. Un workflow tipico prevede compilazione, strip dei simboli, packing UPX e aggiunta di padding entropico:

upx --best --ultra-brute ./payload_bin

Per macOS, theZoo (open source, a scopo esclusivamente didattico) contiene campioni storici utili a comprendere strutture Mach-O mutanti, mentre dylib-injection proof-of-concept può essere combinato con offuscatori come Obfuscator-LLVM (open source) per generare varianti binarie funzionalmente equivalenti.

Un esercizio red team completo dovrebbe includere: generazione di 20-50 varianti dello stesso payload, upload controllato su VirusTotal (freemium — attenzione: mai caricare payload reali di clienti) o su sandbox private come CAPE Sandbox (open source) per misurare il detection rate, e infine test contro l'EDR target in ambiente isolato.

Strumenti come AMSI Bypass techniques e ScareCrow (open source) permettono di studiare come i loader moderni combinino polimorfismo, sideloading di DLL firmate e syscall unhooking. Ogni test va documentato con hash pre/post mutazione, entropia calcolata via ent o binwalk -E, e comportamento osservato in sandbox.

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

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.