Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/redsiege/excelntdonut
Herramientas de PhishingGeneración de PayloadsExplotaciónShellcodePhishingRed TeamingGeneración de Shellcode
GitHubredsiege/excelntdonut

EXCELntDonut

Generador de macros de Excel 4.0 (XLM) para inyectar DLLs y EXEs en memoria.

Ver Repositorio
5178977hace 6 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
_______
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                

EXCELntDonut es un generador de macros XLM (Excel 4.0). Comience con código fuente C# (EXE) y termine con una macro XLM (Excel 4.0) que ejecutará su código en memoria. Las macros XLM (Excel 4.0) se pueden guardar en archivos .XLS.

Instalación

chmod +x install.sh
./install.sh

¿Qué se instala?

  • pip3
  • mono-complete (tanto mcs como todas las bibliotecas posibles que referencie en sus archivos fuente)
  • EXCELntDonut como CLI

Si desea ejecutar EXCELntDonut solo como un script de Python, deberá configurar un entorno virtual con dos paquetes: "pandas" y "donut-shellcode". Además, necesitará instalar mono-complete mediante apt-get y llamar al script drive.py con python3. Recomendamos usar simplemente el script bash ./install.sh, pero depende de usted.

Uso

Uso:
	$ EXCELntDonut -f exe_source.cs -r System.Windows.Forms.dll --sandbox --obfuscate

Banderas:
	(obligatorio)
	-f ruta al archivo que contiene su código fuente C# (solo exe)

	-r Referencias necesarias para compilar su código C# (las mismas que al usar mcs para compilar en Linux)
	(ej: -r 'System.Management')

	(opcional)
	-o nombre del archivo de salida
	--sandbox 
		Realiza comprobaciones básicas de sandbox. Esto se actualizará a medida que se descubran nuevos enfoques.
	--obfuscate 
		Realiza ofuscación básica de macros. 

Cómo funciona

Usted proporciona un archivo C# que contiene su payload (como un EXE con un método main que ejecuta un payload de Cobalt Strike). Ese archivo C# se compila usando MCS en dos ensamblados .NET: x86 y x64. Después de la compilación, las increíbles herramientas Donut (para x86) y CLRvoyance (para x64) convierten cada ensamblado en shellcode independiente de la posición. A continuación, se eliminan todos los bytes nulos, ya que las macros XLM (Excel 4.0) no funcionan bien con bytes nulos, y el payload se divide en líneas de no más de 255 caracteres (para x86) o 10 caracteres (para x64).

Una vez que el shellcode está preparado, se combina con funciones básicas de inyección de procesos (VirtualAlloc, WriteProcessMemory y CreateThread), así como con una función de verificación de arquitectura para determinar qué payload (x86 o x64) ejecutar en el sistema de destino. Si opta por ejecutar comprobaciones de sandbox u ofuscación básica, esas funciones actualizarán su macro. Finalmente, la salida se coloca en un archivo CSV (guardado como .txt).

Cómo crear una macro XLM (Excel 4.0)

Una vez que tenga el archivo de salida de EXCELntDonut, abra el archivo de salida en un editor de texto y copie todo su contenido (Ctrl-A, Ctrl-C). Abra Excel en una máquina virtual Windows, haga clic derecho en "Hoja 1" y seleccione "Insertar". Elija "Macro de MS Excel 4.0". Vaya a la celda A1 y pegue la salida de EXCELntDonut. Es probable que todos los datos se peguen en una sola columna. Los datos están separados por punto y coma ";". Vaya a la pestaña "Datos" y luego haga clic en "Texto en columnas". Seleccione "Delimitados" y en la siguiente pantalla seleccione "Punto y coma" y luego haga clic en "Finalizar". La macro se distribuirá en las columnas y filas correspondientes.

(Nota: si seleccionó la bandera "--obfuscate", deberá desplazarse horizontalmente bastante para encontrar su código real, ya que parte de la lógica de ofuscación mueve la macro a una sección aleatoria de la hoja de cálculo).

En este punto, recomendamos dos cosas:

  1. Encuentre la celda inicial (será la celda superior izquierda de su código de macro, probablemente A1). Haga clic derecho y seleccione "Ejecutar". Pruebe su macro para asegurarse de que funcione.
  2. Una vez que verifique que la macro funciona, seleccione nuevamente esa misma celda superior izquierda. En el lado izquierdo de la pantalla, debería haber un menú desplegable que indique la celda en la que se encuentra (probablemente "A1"). Haga clic en el menú desplegable y cambie el valor de texto a "Auto_open". Eso producirá la misma funcionalidad de ejecución automática a la que está acostumbrado en las macros VBA.

Guarde el archivo (.xls) e intente abrirlo. Debería ejecutar su payload automáticamente.

Comprobaciones de Sandbox

Estas comprobaciones se basan en lo que los actores de amenazas reales están utilizando en sus malware.

  1. ¿Hay un ratón activo?
  2. ¿El tamaño de la pantalla es mayor a 770 de ancho y 381 de alto?
  3. ¿Puede el host reproducir sonidos?
  4. ¿Es esta una máquina Windows?

Ofuscación

  1. Para las instrucciones de inyección de procesos (VirtualAlloc, WriteProcessMemory, CreateThread) y las comprobaciones de sandbox, todas las funciones de macro se convertirán en la siguiente estructura:
=FORMULA(D3&D23&D54&D23&D44,E45)

La función FORMULA nos permite colocar una fórmula, que luego se puede ejecutar, en otra celda. Entonces, en este caso, colocamos las instrucciones de inyección de procesos y luego usamos la función FORMULA para colocar la función real en otra celda para que se ejecute. Esto evita que los defensores que realizan análisis estático vean cosas como "VirtualAlloc".

  1. Toda la macro desplazará algún valor hacia la derecha, de modo que cuando abra inicialmente la hoja con las macros, parezca en blanco.

Cosas que saber

  • Los payloads menos sofisticados simplemente usan el comando =EXEC() para ejecutar comandos. Algunos también usan URLMON para descargar archivos. Otros archivos incluso incluyen la palabra "SHELL". Todo eso nos pareció una mala idea. Esta herramienta no incluye nada de eso. En su lugar, inyecta su código fuente C# en el proceso de Excel (ya sea de 32 o 64 bits) y luego lo ejecuta. A partir de ahí, depende de su payload lo que haga a continuación.

Consejos

  • Su código fuente C# puede hacer cualquier cosa que desee. Recomendamos que su código fuente rompa la relación Padre > Hijo entre Excel y lo que sea que genere.
  • Hay muchas publicaciones de blog útiles sobre hojas de Excel "Muy ocultas". Considere usar eso.
  • No olvide hacer que su archivo de Excel parezca real.

Solución de problemas

"El tipo o nombre de espacio de nombres ... no existe en el espacio de nombres ... ¿Le falta una referencia de ensamblado?"
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs
 _______  ______ _____ _           _   ____                    _   
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                
[i] Generando su ensamblado .NET x86.
warning CS8001: No se pudo resolver la ruta del SDK
test.cs(2,14): error CS0234: El tipo o nombre de espacio de nombres `Management' no existe en el espacio de nombres `System'. ¿Le falta una referencia de ensamblado?

Este error probablemente significa que le falta un ensamblado de referencia durante la compilación con mono. Para solucionarlo, simplemente pase el espacio de nombres mencionado en la bandera -r. En este caso, agregaríamos -r 'System.Management' a la línea de comandos. El nuevo comando sería:

root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r 'System.Management'

"No se pudo encontrar el archivo de metadatos ..."
Descargar herramienta