Software Packing: Obfuscated Files or Information – Software Packing (T1027.002)

Il software packing è una tecnica di Defense Evasion (TA0005) con cui un avversario comprime, cifra o traduce il codice eseguibile di un payload per alterarne la firma e sfuggire ai controlli basati su signature. Il meccanismo è semplice nella sua logica: il binario originale viene racchiuso in un involucro che lo rende irriconoscibile all'analisi statica, per poi decomprimersi in memoria al momento dell'esecuzione. Un secondo approccio, più sofisticato, sfrutta la virtualizzazione del codice: l'eseguibile viene tradotto in bytecode proprietario interpretabile solo da una virtual machine incorporata nel payload stesso.

I numeri ne confermano la pervasività: 23 gruppi APT, 72 famiglie di malware, 7 campagne documentate e una mitigazione specifica ruotano attorno a questa sotto-tecnica. Packer commerciali come Themida, VMProtect, Enigma Protector e Obsidium vengono usati tanto dal cybercrime quanto dall'espionage di stato, affiancati da soluzioni open source come UPX e MPRESS. La vera sfida per i difensori è che molti gruppi sviluppano packer custom, producendo artefatti diversi da quelli noti e rendendo insufficiente il semplice riconoscimento della firma del packer.

L'unica mitigazione formale — Antivirus/Antimalware (M1049) — evidenzia come la difesa passi necessariamente dall'analisi euristica e comportamentale: le signature statiche, da sole, non bastano contro un payload impacchettato con un packer sconosciuto.


La simulazione del software packing in laboratorio è essenziale per testare la capacità di detection degli endpoint. L'obiettivo non è creare malware, ma verificare se la catena difensiva — EDR, antivirus, SIEM — identifica il comportamento di unpacking in memoria.

Il punto di partenza più immediato è UPX (open source), il packer usato da almeno 15 dei gruppi documentati. Un payload di test — anche un semplice eseguibile di Meterpreter generato con msfvenom (open source, parte di Metasploit Framework) — può essere impacchettato con un singolo comando:

upx --best -o packed_payload.exe original_payload.exe

Per verificare che il packing sia effettivo, si può ispezionare l'header con Detect It Easy (open source), uno strumento di analisi statica che identifica packer, compilatori e protettori:

diec packed_payload.exe

L'output indicherà "UPX" come packer, ma nella realtà operativa molti avversari vanno oltre. Per simulare il livello successivo, è utile impiegare Donut (open source), un framework che converte assembly .NET, EXE e DLL in shellcode position-independent, applicando compressione e cifratura. Il comando base per generare un modulo packed:

donut -i payload.exe -o loader.bin -z 2

Il parametro -z 2 applica compressione aPLib. Il risultato è un blob che viene decompresso e mappato in memoria al runtime, replicando esattamente il pattern di molti packer custom documentati nelle campagne.

Per spingersi verso la virtualizzazione del codice — il secondo vettore descritto nella tecnica — strumenti commerciali come Themida (a pagamento) o VMProtect (a pagamento) sono quelli effettivamente usati dai gruppi APT. In ambiente lab, l'alternativa open source pe_to_shellcode (open source) permette di convertire PE in shellcode, testando la detection dell'esecuzione da segmenti di memoria non convenzionali.

La catena d'attacco completa per un red team engagement segue questa sequenza:

  1. Generare il payload con msfvenom o un custom implant
  2. Applicare il packing con UPX o Donut
  3. Testare la detection statica con Detect It Easy e il portale VirusTotal (freemium)
  4. Eseguire il payload sull'endpoint monitorato e verificare gli alert Sysmon
  5. Iterare con packer diversi per mappare i gap di detection

Una nota operativa importante: APT38 ha usato simultaneamente Themida, Enigma, VMProtect e Obsidium, alternando packer tra campagne diverse. Replicare questa varietà in laboratorio è fondamentale per garantire che le regole di detection non siano ancogate a un singolo packer.


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

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