
Una herramienta para generar gadgets serializados de .NET que pueden desencadenar la carga/ejecución de ensamblados .NET cuando se deserializan mediante BinaryFormatter desde scripts basados en JS/VBS/VBA.
Una herramienta para generar gadgets serializados de .NET que pueden desencadenar la carga/ejecución de ensamblados .NET cuando se deserializan usando BinaryFormatter desde scripts JS/VBS/VBA.
El gadget actual desencadena una llamada a Activator.CreateInstance() cuando se deserializa usando BinaryFormatter desde jscript/vbscript/vba, lo que significa que puede usarse para desencadenar la ejecución de su ensamblado .NET de elección a través del constructor público por defecto.
La herramienta se creó principalmente para automatizar el armado de scripts WSH para compromisos de RT (Acceso Inicial, Movimiento Lateral, Persistencia); el cargador de shellcode utilizado para la PoC se eliminó y se reemplazó por un ensamblado de ejemplo implementado en el proyecto TestAssembly.
Puede usar los binarios ubicados en la carpeta Release o usar VS2017 y reorientar su proyecto a la versión .NET 3.5 o 4.x para compilar G2JS desde el código fuente.
Use la versión .NET 3.5 de G2JS para:
Use la versión .NET 4.x de G2JS para:
El código fuente C# del payload debe colocarse dentro del constructor público por defecto de su clase. (Ejemplo de ejecución de Mimikatz desde jscript; https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74).
Las pruebas se realizaron en la última versión de Windows 10 Enterprise 1909 y Windows 7 con diferentes versiones de .NET Framework instaladas.
Asegúrese de que Windows Defender esté desactivado cuando use GadgetToJScript.exe para generar scripts WSH; puede volver a activarlo una vez que los scripts estén generados.
Use la versión .NET 3.5 de G2JS para generar scripts JScript/HTA WSH sin registro que aún pueden omitir la comprobación de tipos de .NET framework 4.8+ sin tener que deshabilitar dicha mitigación usando la primera etapa de gadget TextFormattingRunProperties. Considere esto como un mejor/más limpio bypass para ejecutar payloads JScript/HTA sin registro dirigidos a entornos .NET 4.8+, ya que no requiere:
ShellCOMPLUS_Version.-> menos IOCs + apuntando a entornos 3.5 < .NET < 4.x.
La herramienta se basa en la increíble investigación/trabajo realizada por:
GadgetToJScript debe usarse solo para ejercicio de red team autorizado y/o fines educativos sin fines de lucro. Cualquier mal uso de este software no será responsabilidad del autor. Úselo en sus propias redes y/o con el permiso del propietario de la red.
-w, --scriptType=js | Establecer a js, vbs, vba o hta |
-a, --assembly=TestAssembly.dll | Ensamble .NET, ejemplo: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe, alternativamente puede especificar un archivo de código fuente C# usando el interruptor de línea de comandos -c. |
-c, --csfile=TestAssembly.cs | Archivo de código fuente C#, ejemplo: -c C:\Users\userX\Desktop\shellcode_loader.cs, asegúrese de colocar su código dentro del constructor predeterminado de su clase y especifique las dependencias requeridas usando el interruptor de línea de comandos -d. |
-d, --references=Example.dll | Ensamble de referencia, ejemplo: -d System.Window- s.Forms.dll, System.dll |
-b, --bypass | Omite las comprobaciones de tipo introducidas en la versión .NET 4.8+, por defecto establecido en false, establézcalo en true (--bypass/-b) en caso de que los scripts WSH se generen para ejecutarse en entornos con versión .NET > 4.8+. Esta opción debe usarse solo con el ejecutable G2JS .NET 4.x |
-e, --encodeType=b64 | Codificación de gadgets VBA: b64 o hex (por defecto b64) |
-o, --output=output | Archivo de salida del payload generado, ejemplo: -o C:\Users\userX\Desktop\output (Sin extensión) |
-r, --regfree | activación sin registro de componentes COM basados en .NET, aplicable solo a scripts JS/HTA. |
-h, --help | Mostrar ayuda |