Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PackMyPayload — PoC, который упаковывает полезные нагрузки в выходные контейнеры для обхода флага Mark-of-the-Web и демонстрации рисков, связанных с форматами файлов-контейнеров. Поддерживает: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX | Kitploit
Инструменты/GitHubGitHub/mgeeky/packmypayload
Инструменты фишингаБезопасность контейнеровФреймворки для эксплойтовГенерация полезной нагрузкиRed TeamingРазработка Полезной Нагрузки
GitHubmgeeky/packmypayload

PackMyPayload

PoC, который упаковывает полезные нагрузки в выходные контейнеры для обхода флага Mark-of-the-Web и демонстрации рисков, связанных с форматами файлов-контейнеров. Поддерживает: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX

Репозиторий
1.2k17162 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

PackMyPayload — Угроза малвари в контейнерах

Перейти к поддерживаемым форматам

Этот инструмент принимает на вход файл или директорию и встраивает их в выходной файл, выступающий в роли архива/контейнера. Он может служить Proof‑of‑Concept для демонстрации растущей угрозы контейнерных форматов файлов со встроенной вредоносной программой, а также помощником для профессиональных Red Team‑операторов при оттачивании маневров начального доступа.

В настоящее время известно, что злоумышленники прячут свои вредоносные программы в различных контейнерных форматах, например:

  • 7zip
  • zip
  • ISO
  • IMG

Они делают это, чтобы обойти сканеры содержимого файлов, но, что более важно, избежать установки флага 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 как меру безопасности.

Демонстрация: как злоумышленники обходят MOTW и прячут макросы

Покажем, как выглядит флаг Mark of the Web на практике.

1. Скачайте обычный файл через браузер

1.gif

После скачивания щёлкните правой кнопкой по файлу и откройте его свойства.

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

motw

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

zone-identifier

Значение ZoneId=3 играет роль пометки файла как заражённого.

2. Упакуйте этот файл в ISO

С помощью PackMyPayload.py поместите файл в диск ISO Joliet одной командой:

root@kitploit:~
PS> py PackMyPayload.py 7z2107-x64.exe 7z2107-x64.iso

2.gif

3. Отдайте файл через простой HTTP‑сервер, скачайте, откройте ISO, проверьте MOTW

Создав ISO‑файл, имитируйте HTTP-сервер с помощью Python:

root@kitploit:~
PS> py -m http.server 80

Затем скачайте ISO-файл через браузер.

3.gif

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

marked

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

not-marked


Обоснование

Пользуясь моментом, когда внимание индустрии приковано к смелому решению Microsoft блокировать макросы VBA, мы, профессиональные исследователи безопасности, уделяющие первостепенное внимание повышению устойчивости мировых технологий к их неправильному использованию, хотим добавить следующее понимание текущих TTP злоумышленников:

Злоумышленники прекрасно осведомлены о влиянии MOTW на их фишинговые нагрузки. Они давно адаптировались и теперь прячут свои вредоносные программы в контейнерах. Среди наиболее часто наблюдаемых можно выделить ISO, IMG, CAB.

Я выпускаю этот инструмент сейчас, чтобы усилить импульс, созданный позицией Microsoft, и помочь активизировать обсуждение этих путей обхода.

Рекомендуется ограничивать (и/или блокировать) файлы с указанными выше расширениями всякий раз, когда они поступают из ненадёжных зон и где это применимо:

  • веб-прокси
  • почтовые сканирующие движки
  • агенты защиты конечных точек — EDR, XDR, AV
  • формы и функциональность загрузки файлов

Этот инструмент, как мы надеемся, позволит большему числу Red Teams моделировать описанные риски и легче выявлять пробелы в обнаружении в защите своих партнёров.


Возможности

Скрипт предлагает следующие возможности:

  • Упаковывает входной файл или директорию в выходной контейнер
  • Может внедрять backdoor в существующие контейнеры или создавать новые.
  • Обеспечивает шифрование паролем для поддерживаемых форматов.

Поддерживаемые форматы:

  • В случае ZIP MOTW может быть убран при использовании CVE-2022-41091. PackMyPayload по умолчанию помечает внутренние ZIP-файлы как «только для чтения», если не указан --zip-noreadonly.

Установка

  • Клонируйте этот репозиторий
  • Установите зависимости:
root@kitploit:~
cmd> pip3 install -r requirements.txt

Пример использования

  1. Упаковка директории с файлами в ISO:
root@kitploit:~
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
  1. Для упаковки в VHD/VHDX необходимо запустить этот скрипт в Windows из контекста с повышенными привилегиями (например, локальный администратор). Это связано с тем, что DISKPART требует административный доступ к объектам/пространству имён физических устройств. Лучше всего запускать скрипт в Windows Terminal (wt) или ConEmu, так как они поддерживают ANSI-цвета. В противном случае, если вывод отображается некорректно, отключите цвета с помощью флага -N:
root@kitploit:~
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

Полное использование

root@kitploit:~
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

=====================================================

Известные проблемы

  • Невозможно создавать каталоги при копировании файлов на смонтированные тома VHD/VHDX.

Планы (TODO)

  • Добавить поддержку файлов MSI
  • Встраивать файлы в документы MS Office 2007+: word → embeddings → oleObject1.bin (поток OLE) + настройка
  • Рассмотреть поддержку других экзотических форматов архивов (не особо связанных с MOTW или поддерживаемых в Windows из коробки):
    • tar
    • cpio
    • pax
    • xar
    • ar
    • mtree
    • shar
    • tar
    • cpgz
    • uu

Забавный факт

Я прошу вас прочитать следующую строчку вслух и как можно быстрее перед зеркалом:

root@kitploit:~
py Pack My Payload dot py

Некоторые говорят, что это заклинание вызывает древнего DAEMON и Овец ( ͡~ ͜ʖ ͡°)


Участники

Аплодисменты и спасибо следующим участникам, которые помогли улучшить этот инструмент:

  • @ChoiSG (@_choisec) — добавлен флаг --hide для скрытия файлов в контейнерах ISO/IMG
  • Daniel Hauenstein (@dhauenstein) — исправлена проблема с флагом --hide

☕ Поддержка ☕

Этот и другие проекты являются результатом бессонных ночей и немалого труда. Если вам нравится то, что я делаю, и вы цените, что я всегда возвращаю сообществу долг, Купите мне кофе (или лучше пиво), чтобы сказать спасибо! 💪


root@kitploit:~
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ДаДаДаСкрипт в настоящее время не умеет создавать папки
  • lha
  • WinZip Pro также поддерживает извлечение следующих форматов — возможно, стоит добавить и их:
    • B64, BHX, BZ, BZ2, GZ, HQX, LHA, LZH, MIM, TAZ, TBZ,
    • TBZ2, TGZ, TXZ, TZ, UU, UUE, VMDK, XXE, XZ, Z, ZIPX