Payload Annidati: Embedded Payloads (T1027.009)
La tecnica T1027.009 - Embedded Payloads appartiene alla tattica TA0005 (Defense Evasion) e descrive l'occultamento di contenuti malevoli all'interno di file apparentemente legittimi. Diversamente dalla steganografia classica, che sfrutta pattern di byte in formati multimediali, qui il payload viene semplicemente annidato dentro un altro file: un eseguibile con overlay aggiuntivo, uno script che contiene una DLL codificata, un archivio auto-estraente, o un binario che porta al proprio interno moduli cifrati destinati a essere iniettati in processi legittimi.
L'impatto operativo è duplice. Da un lato, la firma digitale del contenitore rimane spesso valida, permettendo di aggirare Subvert Trust Controls come Authenticode e Gatekeeper. Dall'altro, il payload reale non tocca il disco in forma riconoscibile fino al momento dell'estrazione runtime, riducendo l'efficacia dei controlli statici.
I numeri MITRE fotografano la diffusione: 3 gruppi APT documentati, 18 famiglie malware — da Emotet a IcedID, da ComRAT a Pikabot — e 2 campagne di rilievo, tra cui il celebre 3CX Supply Chain Attack. La tecnica compare tipicamente nelle fasi di Initial Access (allegati phishing), Execution (loader che estraggono lo stage successivo) e Defense Evasion vera e propria, dove i moduli embedded vengono decifrati e iniettati in processi come browser o servizi di sistema per sopravvivere alla scansione antivirus.
Sul fronte offensivo la tecnica si presta a numerose declinazioni. Il caso più diretto è l'overlay su PE: appendere dati arbitrari alla fine di un eseguibile Windows firmato non invalida la firma Authenticode, perché la sezione di firma non copre l'overlay. Con pefile (open source) in Python è possibile leggere e manipolare la struttura, mentre per simulazioni di red team lo strumento Invoke-PSImage (open source), documentato in MITRE come S0231, incorpora payload PowerShell all'interno dei pixel di un PNG utilizzando i bit meno significativi dei canali colore.
Un tipico flusso di laboratorio prevede la generazione di un payload con msfvenom (open source, parte di Metasploit Framework), la sua codifica in base64 e l'incorporamento all'interno di uno script PowerShell o di un file LNK — quest'ultimo approccio è quello osservato in TA577, che ha usato collegamenti .lnk per eseguire DLL embedded. Il file LNK può essere costruito con LnkBomb o con il modulo New-Object -ComObject WScript.Shell per popolare il campo Arguments con la logica di estrazione.
Per scenari macOS, l'annidamento di run-only AppleScripts (compilati senza sorgente leggibile) all'interno di altri script — pattern usato da macOS.OSAMiner — si realizza con osacompile -x per generare il run-only e poi con uno script wrapper che ricostruisce il figlio a runtime tramite do shell script.
Una catena realistica in ambiente controllato può essere:
- Preparazione del payload di seconda fase con Donut (open source), che converte PE, DLL o .NET assembly in shellcode posizionabile ovunque.
- Cifratura del blob con AES-CBC (come fa DEADWOOD con la sezione METADATA) o semplice XOR con chiave a 32 bit (approccio di Pikabot).
- Incorporamento all'interno di una risorsa PE tramite UpdateResource API o come sezione custom aggiunta con LIEF (open source).
- Loader che localizza la risorsa, la decifra e la mappa in memoria via VirtualAlloc + CreateThread, oppure la inietta in un processo target con classiche OpenProcess / WriteProcessMemory / CreateRemoteThread.
Per test su binari ELF Linux, objcopy --add-section consente di aggiungere sezioni contenenti payload arbitrari, mentre sRDI (open source) fornisce reflective loading cross-platform. Tutte queste attività vanno confinate a range isolati con snapshot pre/post per analisi comparativa.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo