LittleCorporal: Un generador automatizado de Maldoc en C#
LittleCorporal: Un generador automatizado de maldocs en C#
C:\LittleCorporal\bin\Release>LittleCorporal.exe C:\beacon.bin explorer.exe
.____ .__ __ __ .__ _________ .__
| | |__|/ |__/ |_| | ____ \_ ___ \ _________________ ________________ | |
| | | \ __\ __\ | _/ __ \/ \ \/ / _ \_ __ \____ \ / _ \_ __ \__ \ | |
| |___| || | | | | |_\ ___/\ \___( <_> ) | \/ |_> > <_> ) | \// __ \| |__
| _______ \__||__| |__| |____/\___ >\______ /\____/|__| | __/ \____/|__| (____ /____/
\/ \/ \/ |__| \/
________
/ \
__ / (o)\__
/ ______\ \ I am the strongest debater in the whole Conseil.
| ____/__ __\____| I let myself be attacked, because I know how to defend myself.
[ --~~-- ] - Napoleon Bonaparte
| ( L )|
___----\ __ /----___
/ | < \____/ > | \
/ | < \--/ > | \
|||||| \ \/ / ||||||
| \ / o |
| | \/ === | |
| | |o ||| | |
| \______| +#* | |
| |o | |
\ | / /
|\__________|o / /
| | / /
[+] Parsed Arguments:
[>] Shellcode Path: C:\beacon.bin
[>] Target Process: explorer.exe
[+] Embedded shellcode in Loader.cs!
[+] Generated C# Loader artifact!
[+] Ran the .NET assembly through Donut!
[+] Donut artifact is located at: C:\LittleCorporal\Artifacts\payload.bin
[+] Path to Word document: C:\LittleCorporal\Artifacts\Form.doc
¡LEA TODO EL README ANTES DE USAR!
LittleCorporal acepta un argumento proporcionado por el usuario para un proceso en el que inyectar en una máquina remota, en la que planea ejecutar el documento malicioso de Word, y también acepta una ruta a un archivo de shellcode local almacenado en formato .bin, como un blob de shellcode Beacon Stageless en la máquina desde la que ejecuta LittleCorporal. Por lo tanto, si desea usar el maldoc generado por este proyecto, deberá especificar un proceso ya en ejecución en la máquina donde pretende ejecutar el maldoc (ya sea la máquina local u otra). explorer.exe siempre tendrá una instancia, así que úselo si no le importa en qué proceso inyecta.
LittleCorporal incrusta el shellcode y el nombre del proceso de destino en Loader.cs, compila Loader.cs sobre la marcha en un artefacto .NET .exe y luego utiliza secuestro de hilos para realizar la inyección remota de procesos. El artefacto .NET .exe, que es el cargador de secuestro de hilos, se pasa a través de Donut para generar shellcode independiente de la posición, que ejecutará el .exe. El shellcode generado por Donut se codifica en base64, se genera un documento de Word y el blob final de Donut se almacena en una propiedad de Word InlineShape.AlternativeText, que puede contener todo el payload. Esto se hace insertando una propiedad de imagen (actualmente una imagen en blanco, lo que le da al documento un aspecto "en blanco") en el documento de Word, como texto alternativo en la imagen, que contiene el payload. Luego, LittleCorporal aprovecha una "plantilla" VBA, contenida en este proyecto como un archivo de texto, e inyecta esta Macro en el documento de Word recién generado. La Macro se llama autoopen, por lo que se abre al abrir el documento y luego está configurada para extraer el valor del texto alternativo de la imagen generada previamente, que contiene el payload final, decodificarlo en base64 y finalmente usar llamadas a la API de Windows, en VBA, para realizar una inyección local en Word. En esencia, este proyecto utiliza un simple "cargador" en VBA para realizar una inyección local en Word, que está un poco menos escrutada que la inyección remota de procesos, y luego utiliza la ejecución de esa simple inyección local para ejecutar el shellcode de Donut, que es otro cargador que realiza el secuestro de hilos para la inyección remota final del shellcode proporcionado por el usuario en el proceso especificado por el usuario. Todo esto se hace de forma automatizada, incluida la generación del documento de Word.
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\) y en la máquina de destino donde planea ejecutar el documento.LittleCorporal.exe. Esto se debe a que LittleCorporal necesita interactuar a través de COM con Word. Tenga en cuenta también que el documento de Word generado descarga una imagen en blanco de internet, lo que significa que necesitará acceso a internet en la computadora donde ejecuta LittleCorporal y en la máquina remota donde planea detonar el documento de Word.CONTEXT de 64 bits, que tiene tipos de datos específicos de 64 bits. Esto se debe a que el secuestro de hilos actualmente solo es compatible con sistemas de 64 bits, ya que requiere shellcode personalizado que se adhiere específicamente a la convención de llamada __fastcall. No planeo implementar una versión de 32 bits de la capacidad de secuestro de hilos, pero si eventualmente hay una solicitud de extracción para soporte de 32 bits, ya que muchas instalaciones de Microsoft Word son de 32 bits, no descartaría totalmente esta posibilidad. Actualmente no debería ser un gran problema desde una perspectiva lógica, este problema se convierte en la carga y la molestia de mantener un seguimiento de la pila al pasar de __fastcall a __stdcall y calcular nuevos desplazamientos. Esto no es complejo desde una perspectiva técnica, pero es un poco tedioso.bool FUNC1 = true; antes de ejecutar LittleCorporal.exe para generar un documento de WordSi planea usar este proyecto para operaciones activas de equipo rojo, considere configurar la funcionalidad de "Salida" de su shellcode para realizar una salida "limpia" con una salida de hilo, en lugar de matar completamente el proceso en el que reside el shellcode. Esto se puede configurar con msfvenom mediante EXITFUNC=thread, y también se puede configurar en Cobalt Strike a través de Aggressor.
bin\Release (cd C:\Ruta\a\LittleCorporal\bin\Release). Se recomienda que, si decide recompilar este proyecto, utilice una compilación Release en lugar de Debug.LittleCorporal.exe y el proceso ya en ejecución en la máquina en la que desea ejecutar el documento de Word. (LittleCorporal.exe C:\Ruta\Al\Shellcode.bin explorer.exe)LittleCorporal.exe clean