Padding Binario: Binary Padding (T1027.001)
Il Binary Padding è una tecnica di offuscamento che consiste nell'aggiungere dati spazzatura a un file eseguibile per alterarne la rappresentazione su disco senza modificarne il comportamento. L'operazione può avvenire tramite appending in coda al file, inserimento in sezioni specifiche del PE o prima dell'header, e produce due effetti immediati: cambia l'hash crittografico del binario e ne aumenta la dimensione fino a superare i limiti di scansione degli strumenti di sicurezza.
La tecnica è mappata sulla tattica TA0005 Defense Evasion e agisce nella fase di weaponization e delivery della kill chain, quando l'attaccante prepara il payload per aggirare controlli statici. Piattaforme come VirusTotal impongono limiti dimensionali all'upload, e molti motori antivirus riducono le capacità di analisi euristica sui file oltre certe soglie, rendendo il padding una scelta economica per gli avversari.
I numeri raccontano la diffusione: 8 gruppi APT documentati — tra cui APT29, Kimsuky, Akira, Patchwork e BRONZE BUTLER — e 20 famiglie malware che implementano padding in forme diverse. Si passa da poche unità di byte aggiunti (Patchwork con 4 byte casuali, GrimAgent) a espansioni massive: Comnie appende 64MB di garbage data, Grandoreiro gonfia i binari fino a 300MB tramite immagini BMP nella sezione risorse. Non esistono mitigazioni MITRE dedicate, il che rende la detection comportamentale l'unica linea difensiva.
La simulazione di Binary Padding in un contesto red team è tecnicamente banale ma didatticamente preziosa per validare i limiti dei controlli AV/EDR aziendali. L'obiettivo di un esercizio autorizzato è misurare a quale soglia dimensionale gli scanner smettono di ispezionare i file e verificare se le regole di detection intercettano l'anomalia comportamentale a valle.
Su Linux e macOS l'approccio più immediato è appendere dati random con utility standard. Un payload di test si genera con dd if=/dev/urandom bs=1M count=100 >> payload.elf, che aggiunge 100MB di dati casuali in coda a un ELF esistente. La struttura dell'eseguibile resta valida perché il loader legge solo le sezioni referenziate nell'header. Per verificare che l'hash cambi mentre la funzionalità resta intatta si usano sha256sum prima e dopo, e si esegue il binario per confermare il comportamento.
Su Windows lo stesso risultato si ottiene con PowerShell: Add-Content -Path .\payload.exe -Value (byte[] * 100) -Encoding Byte, oppure manipolando direttamente lo stream con .NET FileStream. Per padding all'interno delle sezioni PE — approccio più stealth osservato in Grandoreiro — si usano tool come LIEF (open source), libreria Python che permette di aggiungere risorse, sezioni fittizie o dati arbitrari mantenendo la validità dell'header. Un tipico workflow: import lief; pe = lief.parse("malware.exe"); pe.add_section(...); pe.write("padded.exe").
Per emulare gli scenari APT29 o Kimsuky con padding di command line PowerShell (oltre 100 spazi come documentato), basta prependere whitespace: powershell.exe "
Altri tool utili in laboratorio:
- pe-bear (open source) per ispezione grafica delle sezioni PE e modifica manuale
- Detect It Easy (DIE) (open source) per identificare packer, entropy analysis e riconoscere binari padded
- CFF Explorer (gratuito) per editing PE su Windows
- YARA (open source) per scrivere regole di test che matchano pattern di padding (es. sequenze di null byte estese)
Una metrica interessante da raccogliere durante l'esercizio è la entropy delle sezioni aggiunte: padding con dati random ha entropia ~8, mentre padding con null byte o pattern ripetitivi ha entropia bassa (<1). Entrambi gli estremi sono anomali rispetto a codice legittimo (tipicamente 5-7) e costituiscono l'indicatore statico più affidabile. Strumenti come binwalk (open source) e ent (open source) automatizzano il calcolo su file arbitrari.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo