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

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

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

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

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

Категории

Все категории
Loading categories
ProtectMyTooling — Multi-Packer обёртка, позволяющая связывать цепочкой различные упаковщики, обфускаторы и другое ориентированное на Red Team оружие. Оснащена маркировкой артефактов, сбором IOCs и бэкдорингом PE. Вы передаёте ей свой имплант, она проделывает много скрытных операций и выдаёт обфусцированный исполняемый файл. | Kitploit
Инструменты/GitHubGitHub/mgeeky/protectmytooling
Управление индикаторами компрометации (IOC)Фреймворки для пентестаФреймворки для эксплойтовГенерация полезной нагрузкиАнализ вредоносных программАнализ Бинарных ФайловRed TeamingРазработка Полезной Нагрузки

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

GitHub
mgeeky/protectmytooling

ProtectMyTooling

РепозиторийСайт
1.1k14810 месяцев назадПроверено Kitploit

Multi-Packer обёртка, позволяющая связывать цепочкой различные упаковщики, обфускаторы и другое ориентированное на Red Team оружие. Оснащена маркировкой артефактов, сбором IOCs и бэкдорингом PE. Вы передаёте ей свой имплант, она проделывает много скрытных операций и выдаёт обфусцированный исполняемый файл.

Поделиться

1.png

Не обнаруживать инструменты — обнаруживать техники

Обоснование выпуска этого программного обеспечения было изложено в сопроводительной статье блога:

  • ProtectMyTooling — Не обнаруживать инструменты, обнаруживать техники

Введение

Скрипт, который объединяет множество упаковщиков, протекторов, обфускаторов, загрузчиков шеллкода, кодировщиков, генераторов для создания сложных защищённых имплантов для Red Team. Ваш идеальный помощник в конвейере CI/CD разработки вредоносного ПО, помогающий маркировать ваши артефакты, собирать IOCs, внедрять бэкдоры и многое другое.

ProtectMyToolingGUI.py

3.png

С помощью ProtectMyTooling вы можете быстро обфусцировать ваши бинарные файлы, не беспокоясь о том, чтобы щёлкать по всем диалогам, интерфейсам, меню, создавать проекты для обфускации одного бинарника, щёлкать по всем доступным опциям и тратить время на всю эту ерунду. Он сразу переходит к делу — к обфускации вашего инструмента.

Цель — предложить максимально удобный интерфейс и позволить использовать цепочку из нескольких упаковщиков, применяемых к одному бинарному файлу.

Верно — мы можем запустить ProtectMyTooling сразу с несколькими упаковщиками:``` C:> py ProtectMyTooling.py hyperion,upx mimikatz.exe mimikatz-obf.exe

root@kitploit:~
В приведённом выше примере сначала `mimikatz.exe` передаётся в Hyperion для обфускации, а затем результат передаётся в UPX для сжатия. В итоге получается `UPX(Hyperion(file))`

## Возможности

- Поддержка множества различных упаковщиков PE, обфускаторов .NET, загрузчиков/сборщиков шелл-кода
- Возможность цепочного объединения упаковщиков, когда вывод одного упаковщика передаётся следующему: `callobf,hyperion,upx` создаст артефакт `UPX(Hyperion(CallObf(file)))`
- Сбор IOC на каждом этапе обфускации, чтобы удовлетворить запросы аудита и синей команды
- Предоставляет функциональность для внедрения пользовательских водяных знаков в результирующие артефакты PE — в DOS Stub, ControlSum, как отдельную секцию PE, в оверлей файла
- Включает удобный скрипт aggressor для Cobalt Strike, добавляющий команды `protected-upload` и `protected-execute-assembly`
- Простое использование через командную строку

## Установка

**Этот инструмент разработан для работы в Windows, так как большинство упаковщиков изначально нацелены на эту платформу.**

Некоторые функции, однако, могут работать и в Linux, но эта поддержка полностью не протестирована, сообщайте об ошибках и проблемах.

1. Во-первых, **отключите ваш антивирус** и добавьте каталог `contrib` в исключения. Этот каталог содержит обфускаторы и протекторы, которые будут помечены антивирусом и удалены.
2. Затем клонируйте этот репозиторий```
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
  1. Фактическая установка проста:

Windows``` PS C:\ProtectMyTooling> .\install.ps1

root@kitploit:~
**Linux**```
bash# ./install.sh

Особенности

Для работы упаковщика ScareCrow в Windows 10 необходимо установить WSL и обеспечить доступность bash.exe (в %PATH%). Затем в WSL нужно установить golang версии не ниже 1.16:``` cmd> bash bash$ sudo apt update ; sudo apt upgrade -y ; sudo apt install golang=2:1.18~3 -y

root@kitploit:~
## Конфигурация

Чтобы подключить поддерживаемые обфускаторы, изменить параметры по умолчанию или указать **ProtectMyTooling** путь к исполняемому файлу обфускатора, необходимо настроить файл конфигурации `config\ProtectMyTooling.yaml`.

Также есть файл `config\sample-full-config.yaml`, содержащий все доступные опции для всех поддерживаемых паковщиков и служащий справочной точкой.


## Дружеское напоминание

- Если созданный вами бинарник аварийно завершает работу или не запускается, как ожидалось, попробуйте другую цепочку паковщиков.
- Паковщики не гарантируют стабильности создаваемых бинарников, поэтому ProtectMyTooling также не может этого гарантировать.
- При объединении в цепочку тщательно сопоставляйте форматы выходных и входных полезных нагрузок в соответствии с тем, что ожидает следующий паковщик.

---

## Использование

Перед первым использованием `ProtectMyTooling` необходимо настроить файл конфигурации YAML `ProtectMyTooling.yaml`. 
Порядок обработки параметров следующий:

- Сначала используются параметры по умолчанию
- Затем они перезаписываются значениями из YAML
- Наконец, всё, что указано в командной строке, перезаписывает соответствующие значения

Там должны быть заданы пути к поддерживаемым паковщикам и их опции для включения.

### Сценарий 1: Простое обфускация с ConfuserEx

Использование очень простое, всё, что нужно, — передать имя обфускатора, пути к входному и выходному файлам:```
C:\> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe

    ::::::::::.:::::::..      ...  :::::::::::.,::::::  .,-::::::::::::::::
     `;;;```.;;;;;;``;;;;  .;;;;;;;;;;;;;;;\''';;;;\'\''',;;;'````;;;;;;;;\'\'''
      `]]nnn]]' [[[,/[[[' ,[[     \[[,  [[     [[cccc [[[           [[
       $$$""    $$$$$$c   $$$,     $$$  $$     $$"""" $$$           $$
       888o     888b "88bo"888,_ _,88P  88,    888oo,_`88bo,__,o,   88,
    .  YMMMb :.-:.MM   ::-. "YMMMMMP"   MMM    """"YUMMM"YUMMMMMP"  MMM
    ;;,.    ;;;';;.   ;;;;'
    [[[[, ,[[[[, '[[,[[['
    $$$$$$$$"$$$   c$$"
    888 Y88" 888o,8P"`
    ::::::::::::mM...        ...     :::    :::::.    :::. .,-:::::/
    ;;;;;;;;\'''.;;;;;;;.  .;;;;;;;.  ;;;    ;;`;;;;,  `;;,;;-'````'
         [[   ,[[     \[[,[[     \[[,[[[    [[[ [[[[[. '[[[[   [[[[[[/
         $$   $$$,     $$$$$,     $$$$$'    $$$ $$$ "Y$c$"$$c.    "$$
         88,  "888,_ _,88"888,_ _,88o88oo,._888 888    Y88`Y8bo,,,o88o
         MMM    "YMMMMMP"  "YMMMMMP"""""YUMMMMM MMM     YM  `'YMUP"YMM

    Red Team implants protection swiss knife.

    Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
    Mariusz Banach / mgeeky '20-'22, <[email protected]>
    v0.16

[.] Processing x86 file: "\Rubeus.exe"
[.] Generating output of ConfuserEx(<file>)...

[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(<file>): 756224, ratio: 181.23%

Сценарий 2: Простая обфускация ConfuserEx с последующим тестом артефакта

Также можно обфусцировать файл и сразу же попытаться запустить его (также с предоставленными необязательными параметрами), чтобы убедиться, что он работает корректно, с опциями -r --cmdline CMDLINE:``` C:> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe -r --cmdline "hash /password:foobar"

root@kitploit:~
[...]

[.] Processing x86 file: "\Rubeus.exe" [.] Generating output of ConfuserEx()...

[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(): 758272, ratio: 181.72%

Running application to test it...


(_____ \ | | ) ) | | _____ _ _ ___ | __ /| | | | _ | ___ | | | |/) | | \ | || | |) ) | || | | || ||/|/|_____)__/(_/

v2.0.0

[*] Action: Calculate Password Hash(es)

[] Input password : foobar [] rc4_hmac : BAAC3929FABC9E6DCD32421BA94A84D4

[!] /user:X and /domain:Y need to be supplied to calculate AES and DES hash types!

root@kitploit:~
### Сценарий 3: Комплексная обфускация вредоносного ПО с внедрением водяных знаков и сбором IOCs

В приведённом ниже сценарии использования на вход подаётся `beacon.exe`, который последовательно обрабатывается обфускаторами `CallObf` -> `UPX` -> `Hyperion`.

Затем в финальный сгенерированный артефакт внедряется указанный водяной знак `fooobar` в DOS Stub, а также изменяется контрольная сумма этого артефакта на значение `0xAABBCCDD`.

Наконец, ProtectMyTooling собирает все IOCs (md5, sha1, sha256, imphash и другие метаданные) и сохраняет их во вспомогательном CSV-файле. Этот файл может использоваться для сопоставления IOCs по мере развития взаимодействия.```
PS> py .\ProtectMyTooling.py callobf,upx,hyperion beacon.exe beacon-obf.exe -i -I operation_chimera -w dos-stub=fooobar -w checksum=0xaabbccdd

    [...]

[.] Processing x64 file: "beacon.exe"
[>] Generating output of CallObf(<file>)...

[.] Before obfuscation file's PE IMPHASH:       17b461a082950fc6332228572138b80c
[.] After obfuscation file's PE IMPHASH:        378d9692fe91eb54206e98c224a25f43
[>] Generating output of UPX(CallObf(<file>))...

[>] Generating output of Hyperion(UPX(CallObf(<file>)))...

[+] Setting PE checksum to 2864434397 (0xaabbccdd)
[+] Successfully watermarked resulting artifact file.
[+] IOCs written to: beacon-obf-ioc.csv

[+] SUCCEEDED. Original file size: 288256 bytes, new file size Hyperion(UPX(CallObf(<file>))): 175616, ratio: 60.92%

Сгенерированный CSV-файл с IOCs будет выглядеть следующим образом:```csv timestamp,filename,author,context,comment,md5,sha1,sha256,imphash 2022-06-10 03:15:52,beacon.exe,mgeeky@commandoVM,Input File,test,dcd6e13754ee753928744e27e98abd16,298de19d4a987d87ac83f5d2d78338121ddb3cb7,0a64768c46831d98c5667d26dc731408a5871accefd38806b2709c66cd9d21e4,17b461a082950fc6332228572138b80c 2022-06-10 03:15:52,y49981l3.bin,mgeeky@commandoVM,Obfuscation artifact: CallObf(),test,50bbce4c3cc928e274ba15bff0795a8c,15bde0d7fbba1841f7433510fa9aa829f8441aeb,e216cd8205f13a5e3c5320ba7fb88a3dbb6f53ee8490aa8b4e1baf2c6684d27b,378d9692fe91eb54206e98c224a25f43 2022-06-10 03:15:53,nyu2rbyx.bin,mgeeky@commandoVM,Obfuscation artifact: UPX(CallObf()),test,4d3584f10084cded5c6da7a63d42f758,e4966576bdb67e389ab1562e24079ba9bd565d32,97ba4b17c9bd9c12c06c7ac2dc17428d509b64fc8ca9e88ee2de02c36532be10,9aebf3da4677af9275c461261e5abde3 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Obfuscation artifact: Hyperion(UPX(CallObf())),test,8b706ff39dd4c8f2b031c8fa6e3c25f5,c64aad468b1ecadada3557cb3f6371e899d59790,087c6353279eb5cf04715ef096a18f83ef8184aa52bc1d5884e33980028bc365,a46ea633057f9600559d5c6b328bf83d 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Output obfuscated artifact,test,043318125c60d36e0b745fd38582c0b8,a7717d1c47cbcdf872101bd488e53b8482202f7f,b3cf4311d249d4a981eb17a33c9b89eff656fff239e0d7bb044074018ec00e20,a46ea633057f9600559d5c6b328bf83d

root@kitploit:~
## Поддерживаемые упаковщики

`ProtectMyTooling` был спроектирован для поддержки не только обфускаторов/упаковщиков, но и всевозможных билдеров/генераторов/загрузчиков shellcode, используемых из командной строки.

На данный момент программа поддерживает различные коммерческие и открытые упаковщики/обфускаторы. Открытые включены в проект. Коммерческие потребуют от пользователя приобретения продукта и настройки его расположения в файле `ProtectMyTooling.yaml`, чтобы указать скрипту, где их найти.

1. [`Amber`](https://github.com/EgeBalci/amber) - Reflective PE упаковщик, который принимает на вход EXE/DLL и создает EXE/PIC shellcode
2. [`AtomPePacker`](https://github.com/ORCx41/AtomPePacker) - Высокопроизводительный Pe упаковщик
3. [`AsStrongAsFuck`](https://github.com/Charterino/AsStrongAsFuck) - Консольный обфускатор для .NET сборок от Charterino
4. [`CallObfuscator`](https://github.com/d35ha/CallObfuscator) - Обфусцирует определенные windows api с помощью различных api.
5. [`ConfuserEx`](https://github.com/mkaring/ConfuserEx) - Популярный .NET обфускатор, форкнутый из [Martin Karing](https://github.com/mkaring)
6. [`Donut`](https://github.com/TheWover/donut) - Популярный PE загрузчик, который принимает на вход EXE/DLL/.NET и создает PIC shellcode
7. [`Enigma`](https://enigmaprotector.com/) - Мощная система, предназначенная для всесторонней защиты исполняемых файлов
8. [`Freeze`](https://github.com/optiv/Freeze) - Принимает на вход EXE/DLL файл и создает выходной файл с клонированным сертификатом, удаленными специфичными для Golang индикаторами компрометации (IoC) и раздутым размером. Автор: Matt Eidelberg (@Tyl0us).
9. [`Hyperion`](https://nullsecurity.net/tools/binary.html) - шифровальщик времени выполнения для 32-битных и 64-битных portable executables. Это эталонная реализация, основанная на статье "Hyperion: Implementation of a PE-Crypter"
10. [`IntelliLock`](https://www.eziriz.com/intellilock.htm) - объединяет надежную защиту лицензий, высокоадаптируемую функциональность/схему лицензирования с надежной защитой сборок
11. [`InvObf`](https://github.com/danielbohannon/Invoke-Obfuscation) - Обфусцирует Powershell скрипты с помощью `Invoke-Obfuscation` (автор: Daniell Bohannon)
12. [`LoGiC.NET`](https://github.com/AnErrupTion/LoGiC.NET) - Более продвинутый бесплатный и открытый .NET обфускатор, использующий dnlib, от AnErrupTion
13. [`Mangle`](https://github.com/optiv/Mangle) - Принимает на вход EXE/DLL файл и создает выходной файл с клонированным сертификатом, удаленными специфичными для Golang индикаторами компрометации (IoC) и раздутым размером. Автор: Matt Eidelberg (@Tyl0us).
14. [`MPRESS`](https://www.autohotkey.com/mpress/mpress_web.htm) - Компрессор MPRESS от Vitaly Evseenko. Принимает на вход EXE/DLL/.NET/MAC-DARWIN (x86/x64) и сжимает его.
15. [`NetReactor`](https://www.eziriz.com/dotnet_reactor.htm) - Непревзойденная система защиты .NET кода, которая полностью предотвращает декомпиляцию вашего кода
16. [`NetShrink`](https://www.pelock.com/pl/produkty/netshrink) - упаковщик exe, он же компрессор исполняемых файлов, защитник паролем приложений и виртуальный связыватель DLL для .NET приложений Windows и Linux.
17. [`Nimcrypt2`](https://github.com/icyguider/Nimcrypt2) - Генерирует загрузчик Nim, запускающий входной .NET, PE или Raw Shellcode. Автор: [(@icyguider)](https://twitter.com/icyguider)
18. [`NimPackt-v1`](https://github.com/chvancooten/NimPackt-v1) - Принимает на вход Shellcode или .NET исполняемый файл, создает загрузчик EXE или DLL. Предоставлено Cas van Cooten [(@chvancooten)](https://twitter.com/chvancooten)
19. [`NimSyscallPacker`](https://github.com/S3cur3Th1sSh1t-Sponsors/NimSyscallPacker) - Принимает PE/Shellcode/.NET исполняемый файл и генерирует надежный загрузчик EXE/DLL на Nim+Syscalls. Sponsorware, автор: [(@S3cur3Th1sSh1t)](https://twitter.com/ShitSecure)
20. [`Packer64`](https://github.com/jadams/Packer64) - обёртка вокруг `Packer64` от John Adams
21. [`pe2shc`](https://github.com/hasherezade/pe_to_shellcode) - Преобразует PE в shellcode. От вашего покорного слуги [@hasherezade](https://twitter.com/hasherezade)
22. [`peCloak`](https://github.com/v-p-b/peCloakCapstone/blob/master/peCloak.py) - Многопроходный кодировщик и инструмент обхода эвристических песочниц для обхода AV
23. [`peresed`](https://github.com/avast/pe_tools) - Использует "peresed" из **avast/pe_tools** для удаления всех существующих PE ресурсов и подписи _(вспомните иконку Mimikatz)._
24. [`peunion`](https://bytecode77.com/pe-union) - Шифрует исполняемые файлы (x86 или .NET x86/x64), которые расшифровываются во время выполнения и выполняются в памяти
25. [`ScareCrow`](https://github.com/optiv/ScareCrow) - EDR-уклончивый загрузчик x64 shellcode, который создает артефактный загрузчик DLL/CPL/XLL/JScript/HTA
26. [`sgn`](https://github.com/EgeBalci/sgn) - Кодировщик Shikata ga nai (仕方がない), портированный на Go с несколькими улучшениями. Принимает shellcode, создает закодированный shellcode
27. [`SmartAssembly`](https://www.red-gate.com/products/dotnet-development/smartassembly/) - обфускатор, который помогает защитить ваше приложение от реверс-инжиниринга или модификации, затрудняя доступ к исходному коду третьим лицам
28. [`sRDI`](https://github.com/monoxgas/sRDI) - Преобразует DLL в позиционно-независимый shellcode. Автор: [Nick Landers, @monoxgas](https://twitter.com/monoxgas)
29. [`Themida`](https://www.oreans.com/Themida.php) - Продвинутая система защиты программного обеспечения Windows
30. [`UPX`](https://upx.github.io/) - бесплатный, портативный, расширяемый, высокопроизводительный упаковщик исполняемых файлов для нескольких форматов.
31. [`VMProtect`](https://vmpsoft.com/) - защищает код, выполняя его на виртуальной машине с нестандартной архитектурой, что делает чрезвычайно сложным анализ и взлом программного обеспечения

Вы можете быстро вывести список поддерживаемых упаковщиков с помощью опции `-L` (столбцы таблицы выбираются в зависимости от ширины терминала: чем шире, тем больше информации отображается):```
C:\> py ProtectMyTooling.py -L
    [...]

    Red Team implants protection swiss knife.

    Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
    Mariusz Banach / mgeeky '20-'22, <[email protected]>
    v0.16

+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| #  |      Name      |     Type    |       Licensing       |            Input            |         Output         |                         Author                         |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| 1  |     amber      | open-source |    Shellcode Loader   |              PE             |     EXE, Shellcode     |                       Ege Balci                        |
| 2  | asstrongasfuck | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                 Charterino, klezVirus                  |
| 3  |  atompepacker  | open-source |  PE EXE/DLL Protector |              PE             |        EXE, DLL        |            ORCA (@ORCx41, [email protected])            |
| 4  |    backdoor    | open-source |    Shellcode Loader   |          Shellcode          |           PE           |              Mariusz Banach, @mariuszbit               |
| 5  |    callobf     | open-source |  PE EXE/DLL Protector |              PE             |           PE           |                Mustafa Mahmoud, @d35ha                 |
| 6  |   confuserex   | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                        mkaring                         |
| 7  |  donut-packer  | open-source |  Shellcode Converter  | PE, .NET, VBScript, JScript |       Shellcode        |                        TheWover                        |
| 8  |     enigma     |  commercial |  PE EXE/DLL Protector |              PE             |           PE           |          The Enigma Protector Developers Team          |
| 9  |     freeze     | open-source |    Shellcode Loader   |          Shellcode          |           PE           |                Matt Eidelberg (@Tyl0us)                |
| 10 |    hyperion    | open-source |  PE EXE/DLL Protector |              PE             |           PE           |                   nullsecurity team                    |
| 11 |  intellilock   |  commercial |    .NET Obfuscator    |              PE             |           PE           |                         Eziriz                         |
| 12 |     invobf     | open-source | Powershell Obfuscator |          Powershell         |       Powershell       |                    Daniel Bohannon                     |
| 13 |    logicnet    | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                 AnErrupTion, klezVirus                 |
| 14 |     mangle     | open-source |   Executable Signing  |              PE             |           PE           |                Matt Eidelberg (@Tyl0us)                |
| 15 |     mpress     |   freeware  | PE EXE/DLL Compressor |              PE             |           PE           |                    Vitaly Evseenko                     |
| 16 |   netreactor   |  commercial |    .NET Obfuscator    |             .NET            |          .NET          |                         Eziriz                         |
| 17 |   netshrink    | open-source |    .NET Obfuscator    |             .NET            |          .NET          |                     Bartosz Wójcik                     |
| 18 |   nimcrypt2    | open-source |    Shellcode Loader   |     PE, .NET, Shellcode     |           PE           |                       @icyguider                       |
| 19 |    nimpackt    | open-source |    Shellcode Loader   |       .NET, Shellcode       |           PE           |             Cas van Cooten (@chvancooten)              |
| 20 |   nimsyscall   | sponsorware |    Shellcode Loader   |     PE, .NET, Shellcode     |           PE           |                    @S3cur3Th1sSh1t                     |
| 21 |    packer64    | open-source | PE EXE/DLL Compressor |              PE             |           PE           |                  John Adams, @jadams                   |
| 22 |     pe2shc     | open-source |  Shellcode Converter  |              PE             |       Shellcode        |                      @hasherezade                      |
| 23 |    pecloak     | open-source |  PE EXE/DLL Protector |              PE             |           PE           |     Mike Czumak, @SecuritySift, buherator / v-p-b      |
| 24 |    peresed     | open-source |  PE EXE/DLL Protector |              PE             |           PE           |                  Martin Vejnár, Avast                  |
| 25 |    peunion     |   freeware  | PE EXE/DLL Compressor |           PE, .NET          |           PE           |  Martin Fischer / bytecode77 <[email protected]>   |
| 26 |   scarecrow    | open-source |    Shellcode Loader   |          Shellcode          | DLL, JScript, CPL, XLL |                Matt Eidelberg (@Tyl0us)                |
| 27 |      sgn       | open-source |   Shellcode Encoder   |          Shellcode          |       Shellcode        |                       Ege Balci                        |
| 28 | smartassembly  |  commercial |    .NET Obfuscator    |             .NET            |          .NET          |                        Red-Gate                        |
| 29 |      srdi      | open-source |   Shellcode Encoder   |             DLL             |       Shellcode        |                Nick Landers, @monoxgas                 |
| 30 |    themida     |  commercial |  PE EXE/DLL Protector |              PE             |           PE           |                         Oreans                         |
| 31 |      upx       | open-source | PE EXE/DLL Compressor |              PE             |           PE           | Markus F.X.J. Oberhumer, László Molnár, John F. Reiser |
| 32 |   vmprotect    |  commercial |  PE EXE/DLL Protector |              PE             |           PE           |                        vmpsoft                         |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+

Выше перечислены поддерживаемые упаковщики, но это не значит, что они у вас настроены и готовы к использованию. Чтобы подготовить их к работе, необходимо сначала поместить необходимые бинарные файлы в каталог contrib, а затем соответствующим образом настроить ваш YAML-файл.

RedWatermarker — встроенное нанесение водяных знаков на артефакты

Нанесение водяных знаков на артефакты и сбор IOC

Эта программа предназначена для профессиональных Red Teams и идеально подходит для использования в типичном CI/CD-конвейере разработки имплантов. Как участнику Red Team, мне всегда нужно предоставлять качественный список IOC, соответствующих всем моим имплантам, а также я считаю необходимым маркировать все свои импланты для учёта, атрибуции и отслеживаемости.

Для удовлетворения этих требований ProtectMyTooling предоставляет базовую поддержку данных функций.

Нанесение водяных знаков на артефакты

ProtectMyTooling может наносить водяные знаки после этапов обфускации, просто используя опцию --watermark:``` py ProtectMyTooling [...] -w dos-stub=fooooobar -w checksum=0xaabbccdd -w section=.coco,ALLYOURBASEAREBELONG

root@kitploit:~
Существует также автономный подход, включенный в скрипт `RedWatermarker.py`.

На вход он принимает исполняемый артефакт и принимает несколько параметров, указывающих, куда внедрить водяной знак и какое значение должно быть вставлено.

Пример запуска установит контрольную сумму PE в 0xAABBCCDD, вставит `foooobar` в DOS-заглушку PE-файла (байты, содержащие _This program cannot be run..._), добавит `bazbazbaz` в оверлей файла, а затем создаст новый раздел PE с именем `.coco`, добавит его в конец файла и заполнит этот раздел заранее установленным маркером.```
py RedWatermarker.py beacon-obf.exe -c 0xaabbccdd -t fooooobar -e bazbazbaz -s .coco,ALLYOURBASEAREBELONG

Полное использование watermarker:``` cmd> py RedWatermarker.py --help

root@kitploit:~
                  ;
                  ED.
                 ,E#Wi

j. f#iE###G. EW, .E#t E#fD#W; E##j i#W, E#t t##L E###D. L#D. E#t .E#K, E#jG#W; :K#Wfff; E#t j##f E#t t##f i##WLLLLtE#t :E#K: E#t :K#E: .E#L E#t t##L E#KDDDD###i f#E: E#t .D#W; ,; G: ,; E#f,t#Wi,,, ,WW; E#tiW#G. f#i j. j. E#, : f#i j. E#t ;#W: ; .D#;E#K##i .. GEEEEEEEL .E#t EW, .. : .. EW, E#t .GE .E#t EW, DWi ,K.DL ttE##D. ;W, ,;;L#K;;. i#W, E##j ,W, .Et ;W, E##j E#t j#K; i#W, E##j f. :K#L LWL E#t j##, t#E L#D. E###D. t##, ,W#t j##, E###D. E#GK#f L#D. E###D. EW: ;W##L .E#f L: G###, t#E :K#Wfff; E#jG#W; L###, j###t G###, E#jG#W; E##D. :K#Wfff; E#jG#W; E#t t#KE#L ,W#; :E####, t#E i##WLLLLt E#t t##f .E#j##, G#fE#t :E####, E#t t##f E##Wi i##WLLLLt E#t t##f E#t f#D.L#L t#K: ;W#DG##, t#E .E#L E#t :K#E: ;WW; ##,:K#i E#t ;W#DG##, E#t :K#E:E#jL#D: .E#L E#t :K#E: E#jG#f L#LL#G j###DW##, t#E f#E: E#KDDDD###i j#E. ##f#W, E#t j###DW##, E#KDDDD###E#t ,K#j f#E: E#KDDDD###i E###; L###j G##i,,G##, t#E ,WW; E#f,t#Wi,,,.D#L ###K: E#t G##i,,G##, E#f,t#Wi,,E#t jD ,WW; E#f,t#Wi,,, E#K: L#W; :K#K: L##, t#E .D#; E#t ;#W: :K#t ##D. E#t :K#K: L##, E#t ;#W: j#t .D#; E#t ;#W: EG LE. ;##D. L##, fE tt DWi ,KK:... #G .. ;##D. L##, DWi ,KK: ,; tt DWi ,KK: ; ;@ ,,, .,, : j ,,, .,,

root@kitploit:~
Watermark thy implants, track them in VirusTotal
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>

usage: RedWatermarker.py [options]

options: -h, --help show this help message and exit

Required arguments: infile Input implant file

Optional arguments: -C, --check Do not actually inject watermark. Check input file if it contains specified watermarks. -v, --verbose Verbose mode. -d, --debug Debug mode. -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile.

PE Executables Watermarking: -t STR, --dos-stub STR Insert watermark into PE DOS Stub (This program cannot be run...). -c NUM, --checksum NUM Preset PE checksum with this value (4 bytes). Must be number. Can start with 0x for hex value. -e STR, --overlay STR Append watermark to the file's Overlay (at the end of the file). -s NAME,STR, --section NAME,STR Append a new PE section named NAME and insert watermark there. Section name must be shorter than 8 characters. Section will be marked Read-Only, non-executable.

root@kitploit:~
В настоящее время поддерживается только водяные знаки для PE-файлов, но в будущем будут добавлены документы Office и другие форматы.


### Сбор IOCs

IOCs могут быть собраны простым использованием опции `-i` в запуске `ProtectMyTooling`.

Они собираются на следующих этапах:

- на входном файле
- после каждого раунда обфускации на промежуточном файле
- на финальном выходном файле

Они будут содержать следующие поля, сохраненные в виде CSV файла:

- `timestamp`
- `filename`
- `author` - формируется как `username@hostname`
- `context` - указывает, относится ли запись к входному, выходному или промежуточному файлу
- `comment` - значение, задаваемое пользователем через опцию `-I value`
- `md5`
- `sha1`
- `sha256`
- `imphash` - хеш импортов PE, если доступен
- (TODO) `typeref_hash` - хеш TypeRef .NET, если доступен

В результате будет создан CSV файл с именем `outfile-ioc.csv`, расположенный рядом с сгенерированным выходным артефактом. Этот файл записывается в режиме APPEND, что означает, что он будет получать все последующие IOCs.


# RedBackdoorer - встроенный бэкдоринг PE

`ProtectMyTooling` использует мой собственный скрипт `RedBackdoorer.py`, который предоставляет несколько методов для бэкдоринга PE-исполняемых файлов.
Поддержка реализована в виде выделенного упаковщика с именем `backdoor`. Пример использования:

**Принимает шелл-код Cobalt Strike на входе, кодирует с помощью SGN (Shikata Ga-Nai), затем внедряет бэкдор в SysInternals DbgView64.exe, после чего создает рефлексивный загрузчик Amber EXE**```
PS> py ProtectMyTooling.py sgn,backdoor,amber beacon64.bin dbgview64-infected.exe -B dbgview64.exe

    ::::::::::.:::::::..      ...  :::::::::::.,::::::  .,-::::::::::::::::
     `;;;```.;;;;;;``;;;;  .;;;;;;;;;;;;;;;;;;;,;;;'````;;;;;;;;
      `]]nnn]]' [[[,/[[[' ,[[     \[[,  [[     [[cccc [[[           [[
       $$$""    $$$$$$c   $$$,     $$$  $$     $$"""" $$$           $$
       888o     888b "88bo"888,_ _,88P  88,    888oo,_`88bo,__,o,   88,
    .  YMMMb :.-:.MM   ::-. "YMMMMMP"   MMM    """"YUMMM"YUMMMMMP"  MMM
    ;;,.    ;;;';;.   ;;;;'
    [[[[, ,[[[[, '[[,[[['
    $$$$$$$$"$$$   c$$"
    888 Y88" 888o,8P"`
    ::::::::::::mM...        ...     :::    :::::.    :::. .,-:::::/
    ;;;;;;;;.;;;;;;;.  .;;;;;;;.  ;;;    ;;`;;;;,  `;;,;;-'````'
         [[   ,[[     \[[,[[     \[[,[[[    [[[ [[[[[. '[[[[   [[[[[[/
         $$   $$$,     $$$$$,     $$$$$'    $$$ $$$ "Y$c$"$$c.    "$$
         88,  "888,_ _,88"888,_ _,88o88oo,._888 888    Y88`Y8bo,,,o88o
         MMM    "YMMMMMP"  "YMMMMMP"""""YUMMMMM MMM     YM  `'YMUP"YMM

    Red Team implants protection swiss knife.

    Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
    Mariusz Banach / mgeeky '20-'22, <[email protected]>
    v0.16

[.] Processing x64 file :  beacon64.bin
[>] Generating output of sgn(<file>)...
[>] Generating output of backdoor(sgn(<file>))...
[>] Generating output of Amber(backdoor(sgn(<file>)))...

[+] SUCCEEDED. Original file size: 265959 bytes, new file size Amber(backdoor(sgn(<file>))): 1372672, ratio: 516.12%

Полное использование RedBackdoorer:``` cmd> py RedBackdoorer.py --help

root@kitploit:~
 ██▀███ ▓█████▓█████▄
▓██ ▒ ██▓█   ▀▒██▀ ██▌
▓██ ░▄█ ▒███  ░██   █▌
▒██▀▀█▄ ▒▓█  ▄░▓█▄   ▌
░██▓ ▒██░▒████░▒████▓
░ ▒▓ ░▒▓░░ ▒░ ░▒▒▓  ▒
  ░▒ ░ ▒░░ ░  ░░ ▒  ▒
  ░░   ░   ░   ░ ░  ░
 ▄▄▄▄   ▄▄▄░  ░  ▄████▄  ██ ▄█▓█████▄ ▒█████  ▒█████  ██▀███ ▓█████ ██▀███
▓█████▄▒████▄  ░▒██▀ ▀█  ██▄█▒▒██▀ ██▒██▒  ██▒██▒  ██▓██ ▒ ██▓█   ▀▓██ ▒ ██▒
▒██▒ ▄█▒██  ▀█▄ ▒▓█    ▄▓███▄░░██   █▒██░  ██▒██░  ██▓██ ░▄█ ▒███  ▓██ ░▄█ ▒
▒██░█▀ ░██▄▄▄▄██▒▓▓▄ ▄██▓██ █▄░▓█▄   ▒██   ██▒██   ██▒██▀▀█▄ ▒▓█  ▄▒██▀▀█▄
░▓█  ▀█▓▓█   ▓██▒ ▓███▀ ▒██▒ █░▒████▓░ ████▓▒░ ████▓▒░██▓ ▒██░▒████░██▓ ▒██▒
░▒▓███▀▒▒▒   ▓▒█░ ░▒ ▒  ▒ ▒▒ ▓▒▒▒▓  ▒░ ▒░▒░▒░░ ▒░▒░▒░░ ▒▓ ░▒▓░░ ▒░ ░ ▒▓ ░▒▓░
▒░▒   ░  ▒   ▒▒ ░ ░  ▒  ░ ░▒ ▒░░ ▒  ▒  ░ ▒ ▒░  ░ ▒ ▒░  ░▒ ░ ▒░░ ░  ░ ░▒ ░ ▒░
 ░    ░  ░   ▒  ░       ░ ░░ ░ ░ ░  ░░ ░ ░ ▒ ░ ░ ░ ▒   ░░   ░   ░    ░░   ░
 ░           ░  ░ ░     ░  ░     ░       ░ ░     ░ ░    ░       ░  ░  ░
      ░         ░              ░


Your finest PE backdooring companion.
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>

usage: RedBackdoorer.py [options]

options: -h, --help show this help message and exit

Required arguments: mode PE Injection mode, see help epilog for more details. shellcode Input shellcode file infile PE file to backdoor

Optional arguments: -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile. -v, --verbose Verbose mode.

Backdooring options: -n NAME, --section-name NAME If shellcode is to be injected into a new PE section, define that section name. Section name must not be longer than 7 characters. Default: .qcsw -i IOC, --ioc IOC Append IOC watermark to injected shellcode to facilitate implant tracking.

Authenticode signature options: -r, --remove-signature Remove PE Authenticode digital signature since its going to be invalidated anyway.


PE Backdooring consists of two comma-separated options. First one denotes where to store shellcode, second how to run it:

root@kitploit:~
save,run
  |   |
  |   +---------- 1 - change AddressOfEntryPoint
  |               2 - hijack branching instruction at Original Entry Point (jmp, call, ...)
  |               3 - setup TLS callback
  |
  +-------------- 1 - store shellcode in the middle of a code section
                  2 - append shellcode to the PE file in a new PE section

Example:

root@kitploit:~
py RedBackdoorer.py 1,2 beacon.bin putty.exe putty-infected.exe
root@kitploit:~
# Интеграция с Cobalt Strike

Также существует скрипт, интегрирующий `ProtectMyTooling.py`, который используется как обёртка вокруг настроенных PE/.NET упаковщиков/протекторов для лёгкого преобразования входных исполняемых файлов в их защищённые и сжатые выходные формы, а затем их загрузки или использования из CobaltStrike.

Идея заключается в автоматизации процесса защиты всех загружаемых бинарников или .NET сборок, используемых `execute-assembly`, и забыть об их ручной защите или обфускации перед каждым использованием. Дополнительное преимущество автоматизированного подхода к преобразованию исполняемых файлов — возможность каждый раз получать один и тот же исполняемый файл, защищённый по-новому, что приводит к уникальным образцам, запускаемым на целевых машинах. Это должно хорошо обманывать EDR/AV при поиске одинаковых артефактов на разных машинах в масштабах предприятия.

Кроме того, команда `protected-execute-assembly` может искать сборки, для которых было указано только имя, в предварительно настроенной директории сборок (задаётся в настройке `dotnet_assemblies_directory`).

Чтобы использовать:

1. Загрузите `CobaltStrike/ProtectMyTooling.cna` в ваш Cobalt Strike.
2. Перейдите в меню и настройте все опции

![options](https://assets.kitploit.com/production/public/readmes/5634/45a8a4f1c128ccf0c0712410e5972c0197b5089b228eaaed38b5a23fa46ca5fd.png)

3. Затем в консоли вашего Beacon станут доступны следующие команды:

  * `protected-execute-assembly` — выполняет локальную, предварительно защищённую и сжатую .NET программу в памяти на цели.
  * `protected-upload` — принимает входной файл, защищает его, если это PE-исполняемый файл, и затем загружает этот файл в указанное удалённое расположение.
  * `bofnet_load_protected` — принимает входной .NET файл сборки, пропускает его через настроенную цепочку .NET упаковщиков, загружает сгенерированный результат с помощью `bofnet_load`. Для работы этого требуется предварительно загрузить [BOFNET](https://github.com/CCob/BOF.NET/).

В основном эти команды открывают входные файлы, передают их сначала скрипту `CobaltStrike/cobaltProtectMyTooling.py`, который, в свою очередь, вызывает `ProtectMyTooling.py`. Как только бинарник будет обфусцирован, он передаётся вашему beacon для выполнения/загрузки.

## Опции, связанные с Cobalt Strike

Вот список опций, необходимых для интегратора Cobalt Strike:

* `python3_interpreter_path` — укажите путь к исполняемому файлу интерпретатора Python3
* `protect_my_tooling_dir` — укажите путь к главной директории ProtectMyTooling
* `protect_my_tooling_config` — укажите путь к конфигурационному файлу ProtectMyTooling с различными опциями упаковщиков
* `dotnet_assemblies_directory` — укажите локальный путь, где следует искать .NET сборки, если они не найдены `execute-assembly`
* `cache_protected_executables` — включите кэширование уже защищённых исполняемых файлов для повторного использования при необходимости
* `protected_executables_cache_dir` — укажите путь к директории для хранения кэшированных защищённых исполняемых файлов
* `default_exe_x86_packers_chain` — цепочка протекторов/упаковщиков для нативных x86 EXE-исполняемых файлов
* `default_exe_x64_packers_chain` — цепочка протекторов/упаковщиков для нативных x64 EXE-исполняемых файлов
* `default_dll_x86_packers_chain` — цепочка протекторов/упаковщиков для нативных x86 DLL-исполняемых файлов
* `default_dll_x64_packers_chain` — цепочка протекторов/упаковщиков для нативных x64 DLL-исполняемых файлов
* `default_dotnet_packers_chain` — цепочка протекторов/упаковщиков для .NET исполняемых файлов

---

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

- `ScareCrow` очень сложно запустить из Windows. То, что сработало у меня, следующее:
  1. Запустите на Windows 10 с установленным WSL (команда `bash.exe` доступна в Windows)
  2. Установите `golang` в WSL версии `1.16+` (проверено на `1.18`)
  3. Убедитесь, что установлено `PackerScareCrow.Run_ScareCrow_On_Windows_As_WSL = True`

---

## Благодарности и используемые технологии

- Все заслуги за упаковщики, обфускаторы, конвертеры, загрузчики принадлежат их авторам. Этот инструмент — всего лишь обёртка вокруг их технологий!
  - Надеюсь, никто из них не против таких обёрток. Если есть вопросы — свяжитесь со мной.

- _ProtectMyTooling_ также использует [`denim.exe`](https://github.com/moloch--/denim) от **moloch--** для некоторых упаковщиков на основе Nim.

---

## TODO

- Написать собственный инжектор PE и предложить его в качестве «протектора»
- Добавить водяные знаки для других форматов файлов, таких как документы Office, WSH-скрипты (VBS, JS, HTA) и контейнеры
- Добавить поддержку нескольких других упаковщиков/загрузчиков/генераторов в ближайшем будущем:
  - [`GadgetToJScript`](https://github.com/med0x2e/GadgetToJScript)
  - [`Limelighter`](https://github.com/Tylous/Limelighter)
  - [`PEZor`](https://github.com/phra/PEzor)
  - [`msfevenom`](https://github.com/rapid7/metasploit-framework) — два варианта: один для входного шелл-кода, другой для исполняемого файла

---

## Отказ от ответственности

Использование этого инструмента, а также любых других проектов, автором которых я являюсь, в незаконных целях, несанкционированном взломе, кибершпионаже строго запрещено.
Этот и другие распространяемые мной инструменты помогают профессиональным пентестерам, консультантам по безопасности, инженерам по безопасности и другим специалистам в области безопасности улучшать защиту киберпространства их клиентов.
Ни при каких обстоятельствах авторы или правообладатели не несут ответственности за любые претензии, убытки или другую ответственность, возникающие в результате незаконного использования этого программного обеспечения.

Если есть вопросы, проблемы с авторскими правами, угрозы, вызванные этим программным обеспечением, или другие запросы — я открыт к сотрудничеству для их ответственного решения.

Инструмент предоставляет удобный интерфейс для использования в основном открытых или коммерческих упаковщиков/протекторов/обфускаторов, поэтому не представляет каких-либо немедленных новых угроз для ландшафта кибербезопасности.

---

### ☕ Поддержка ☕

Этот и другие проекты — результат бессонных ночей и **много тяжёлой работы**. Если вам нравится то, что я делаю, и вы цените, что я всегда отдаю сообществу,
[Купите мне кофе](https://github.com/sponsors/mgeeky) _(или лучше пива)_, просто чтобы сказать спасибо! 💪 

---

## Автор```   
   Mariusz Banach / mgeeky, '20-'22
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky) 
Скачать инструмент