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
Shinigami — Una herramienta de desempaquetado dinámico | Kitploit
Herramientas/GitHubGitHub/buzzer-re/shinigami
Análisis Dinámico (Sandboxing)Ingeniería InversaShellcodeAnálisis de MalwareAnálisis de Binarios
GitHubbuzzer-re/shinigami

Shinigami

Una herramienta de desempaquetado dinámico

Ver Repositorio
152127hace 2 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

Shinigami

Build Release

descripción de la imagen

Shinigami es una herramienta experimental diseñada para detectar y desempaquetar implantes de malware que se inyectan mediante process hollowing o rutinas genéricas de empaquetado.

Cómo funciona

La herramienta opera enganchando (hooking) funciones NT relacionadas con Process Hollowing y marcando las páginas de memoria recién ejecutables con el bit page guard. Esta técnica permite a Shinigami detectar cambios indirectos de flujo, típicamente causados por shellcode o código desempaquetado, que a menudo son indicativos de malware. Shinigami crea el ejecutable objetivo en estado suspendido e inyecta una librería DLL llamada "Ichigo". Esta librería engancha automáticamente todas las funciones necesarias para detectar y extraer el implante. Una vez que el artefacto se extrae por completo, la herramienta termina el proceso.

La efectividad de Shinigami puede variar dependiendo del malware específico al que se enfrente. Sin embargo, es una valiosa adición a cualquier kit de herramientas de análisis de malware y puede resultar útil para detectar y analizar malware que utiliza process hollowing o rutinas genéricas de empaquetado.

Importante: Esta es una herramienta de desempaquetado dinámico y no debe ejecutarse en tu máquina personal ni en un laboratorio de análisis estático

Métodos de desempaquetado actuales

Descargar herramienta

Process Hollowing

El método principal de Shinigami para extraer implantes inyectados mediante process hollowing consiste en enganchar dos funciones NT: NtResumeThread y NtWriteVirtualMemory. Así es como funciona:

  • NtResumeThread Hook

    • Shinigami busca en toda la memoria previamente asignada mediante NtAllocateVirtualMemory para comprobar si contiene la firma de cabecera DOS. Si la encuentra, extrae el archivo PE remoto, lo parchea para que las secciones queden alineadas y lo guarda en disco con el formato filename_dumped.bin.
  • NtWriteVirtualMemory Hook

    • Shinigami detecta si el ejecutable intenta escribir un archivo PE en el proceso remoto enganchando NtWriteVirtualMemory. Si se encuentra un archivo PE, se extrae usando el puntero Buffer y se guarda en disco como filename_before_written.bin, esta opción solo se utiliza si se pasa la bandera --stop-at-write.

Desempaquetador genérico

El módulo de desempaquetado genérico de Shinigami marca las áreas de memoria recién asignadas con el bit PAGE_GUARD; también aplica este bit si algún área de memoria existente tiene sus protecciones reemplazadas por algo ejecutable. Mediante el uso de guard pages, puede rastrear qué área de memoria se va a utilizar para asignar shellcode o imágenes PE.

Por cada shellcode detectado, Shinigami guarda el shellcode sin procesar en disco. También escanea esa región de memoria para encontrar archivos PE y los guarda igualmente. Shinigami trata cada ejecución de shellcode diferente como una nueva etapa, por lo que al final tendrás en tu directorio de trabajo archivos llamados filename_shellcode_STAGENUM.bin or .exe.

Uso

La herramienta tiene un par de opciones:

root@kitploit:~
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name

Positional arguments:
  program_name                  Name of the program to execute

Optional arguments:
  -h, --help                    shows help message and exits
  -v, --version                 prints version information and exits
  -o, --output                  Directory to dump artefacts
  --stop-at-write               Unhollow: Stop the execution when the PE file is being to be written
  --verbose                     Display a verbose output
  -p, --only-executables        Only extract PE artefacts
  -e, --exported                Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)

Algunas opciones importantes son:

-o, --output: Especifica el directorio donde se volcarán los artefactos extraídos. Por defecto, los artefactos extraídos se guardarán en un directorio llamado output en el directorio de trabajo actual. Puedes especificar un directorio diferente pasando su ruta como argumento.

--stop-at-write: Este argumento se utiliza durante el desempaquetado de un proceso hueco. Cuando Shinigami detecta que el archivo PE se está escribiendo en el proceso hueco, detiene la ejecución y guarda el archivo PE extraído. Esta opción puede ser útil si quieres evitar ejecutar todo el proceso hueco y solo necesitas extraer el código desempaquetado.

--verbose: Muestra una salida detallada. Esto puede ser útil para depurar o comprender el funcionamiento interno de Shinigami.

Ejemplo de uso:

Unhollow

Probando contra Dridex

Una vez finalizada la extracción, el proceso se termina y tendrás (eso espero) el PE extraído:

Implante volcado

El implante detectado se volcará siguiendo el formato descrito en la sección métodos de detección

Desempaquetado

Desempaquetando un loader aleatorio descrito aquí

En el ejemplo anterior, Shinigami detectó automáticamente el comportamiento de un loader genérico y extrajo todos los shellcodes e imágenes ejecutados dentro de él, sin requerir ningún interruptor específico para habilitar o deshabilitar la rutina de desempaquetado. Esto fue posible porque Shinigami comparte algunas funciones con el módulo unhollow, utilizando hooks compartidos proporcionados por la librería Gancho.

Emotet

Desempaquetando la DLL de Emotet

Shinigami también tiene soporte para DLL y la capacidad de reconstruir binarios inyectados utilizando cabeceras DOS separadas. Notablemente, muestras de malware como Emotet usan esta técnica para evadir los escáneres de PE en memoria. Shinigami detecta esas partes faltantes (cabecera DOS) y emplea heurísticas para reconstruirlas.

Instalación

Descarga tu versión preferida en la página de Release.

Compilación y desarrollo

Sería increíble que ayudaras a este proyecto, así que si quieres, aquí tienes las dependencias y los pasos

  • Instala Visual Studio >= 2019 con la carga de trabajo de C++.
  • Instala Zydis, un desensamblador x86/x86-64 rápido y ligero; recomiendo usar el método vcpkg.
    • Zydis se utiliza para asegurar que el enganche de API sea más preciso y para garantizar que no se pierda ningún opcode al copiar.
  • Abre el archivo de solución Shinigami.sln en Visual Studio y compila/desarrolla el proyecto.

Por favor, abre un issue o pull request para cualquier cambio que quieras hacer.

Conclusión

Esta genial imagen de mascota se inspiró en Bleach y fue generada por Dall-E.