Donut: Generador de Shellcode en Kali
Donut: Generador de Shellcode en Kali
Parece que estás interesado en Donut, una herramienta de generación de "shellcode" muy popular en el mundo de la ciberseguridad y el "Red Teaming", utilizada frecuentemente en entornos como Kali Linux.
Aquí tienes una guía rápida sobre qué es, para qué sirve y cómo empezar a usarla.
¿Qué es Donut?
Donut es un generador de código de posición independiente (PIC - Position Independent Code) que permite ejecutar archivos VBScript, JScript, EXE, DLL (incluyendo ensamblados .NET) directamente en la memoria de un proceso.
¿Por qué es tan importante?
Lo que hace especial a Donut es su capacidad para "enmascarar" programas normales y convertirlos en shellcode. Esto permite a los investigadores de seguridad:
Inyectar herramientas completas en procesos legítimos.
Evadir sistemas de detección (EDR/Antivirus) que suelen escanear archivos en disco, pero son menos eficaces analizando memoria volátil.
Ejecutar binarios de Windows sin que toquen el disco duro (Fileless Malware).
Cómo instalar Donut en Kali Linux
Aunque Donut es una herramienta de Windows en su núcleo, puedes compilarla y usarla perfectamente en Linux para generar tus cargas útiles.
Clona el repositorio oficial:
Bashgit clone https://github.com/TheWover/donut.gitEntra al directorio y compila:
Bashcd donut makeNota: Si prefieres usar la versión de Python, puedes instalarla con
pip install donut-shellcode.
Uso básico (Ejemplos)
La sintaxis básica de Donut es bastante directa. Aquí te dejo los casos más comunes:
1. Convertir un ejecutable (.exe) a Shellcode
Si tienes un binario llamado herramienta.exe y quieres convertirlo en un archivo de shellcode (payload.bin):
./donut -i herramienta.exe -o payload.bin
2. Especificar una clase y método (para .NET)
Si estás trabajando con una DLL de .NET, puedes indicar exactamente qué función quieres ejecutar:
./donut -i mi_libreria.dll -c MiClase -m MiMetodo
3. Generar salida en un formato específico
Donut puede generar el código en varios formatos para facilitar su uso en exploits:
C/C++:
-f 1Python:
-f 3Base64:
-f 4
Cómo funciona el flujo de Donut
Cuando ejecutas el shellcode generado por Donut, sucede lo siguiente:
Desencriptado: El shellcode se desencripta a sí mismo en la memoria (usa algoritmos como Chacha20).
Carga del Runtime: Si es un archivo .NET, Donut carga el Common Language Runtime (CLR).
Ejecución: El binario original se carga y se ejecuta desde la memoria, sin dejar rastro en el sistema de archivos.
Aviso de Ética: Esta herramienta debe utilizarse exclusivamente en entornos controlados, laboratorios de aprendizaje o auditorías de seguridad con permiso explícito.