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
GadgetToJScript — 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. | Kitploit
Herramientas/GitHubGitHub/med0x2e/gadgettojscript
Generación de PayloadsMecanismos de PersistenciaExplotaciónMovimiento LateralPost-ExplotaciónRed TeamingDesarrollo de PayloadsAtaque Adversario
GitHubmed0x2e/gadgettojscript

GadgetToJScript

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.

1.1k178hace 5 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
Ver Repositorio

Descripción

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.

Detalles:

  • Omite AMSI sin tener que actualizar la clave de registro AmsiEnable ni secuestrar loadlibrary (AMSI.dll).
  • Omite los controles recientemente introducidos en .NET 4.8+ para bloquear "Assembly.Load" y las comprobaciones de tipo ActivitySurrogateSelector.
  • El gadget soporta la deserialización adecuada de payloads dirigidos a entornos .NET Framework 3.5 hasta 4.8+.
  • Depende de ActivitySurrogateSelector para crear una clase Surrogate que actúa como envoltorio para deserializar un gadget construido de manera que desencadene una llamada a "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())".
  • Aprovecha el gadget basado en TextFormattingRunProperties como primera etapa de deserialización para deshabilitar la comprobación de tipo ActivitySurrogateSelector, evitando así las correcciones introducidas recientemente en (.NET Framework 4.8+).
  • No depende principalmente de exponer un objeto COM basado en .NET, por lo que no es necesario llamar a d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class).
  • Los delegados se usan solo para desencadenar la ejecución del payload durante la deserialización (Func<Assembly, IEnumerable>), un requisito para el encadenamiento adecuado de los elementos del gadget.
  • La longitud de los gadgets o flujos serializados se calcula en tiempo de ejecución y se rellena automáticamente en los scripts WSH generados (no requerido para VBA).
  • Genera scripts VBS/VBA y JS/HTA que dependen de la activación sin registro de componentes COM basados en .NET.

Uso y notas:

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:

    • Generar scripts WSH dirigidos a entornos donde .NET Framework 4.x no está disponible o es menor que 4.8. (3.5 es la versión mínima de .NET Framework requerida). Esto requiere compilar su payload C# o ensamblado .NET con .NET framework <= 3.5.
  • Use la versión .NET 4.x de G2JS para:

    • Generar scripts WSH diseñados para ejecutarse en entornos donde .NET Framework 4.x está disponible. (Incluye 4.8+).
    • Generar scripts WSH para entornos con .NET 4.8+ usando la opción "--bypass" para omitir la comprobación de tipos.
  • 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.

Consejo de OPSEC:

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:

  • La primera etapa del gadget
  • Crear un objeto Shell
  • Leer la versión actual de .NET Framework del registro
  • Establecer la variable de entorno COMPLUS_Version.

-> menos IOCs + apuntando a entornos 3.5 < .NET < 4.x.

Créditos y referencias

La herramienta se basa en la increíble investigación/trabajo realizada por:

  • @tyranid https://googleprojectzero.blogspot.com/2017/04/ => hizo posible serializar/deserializar clases no serializables)
  • @pwntester proyecto yoserial.net https://github.com/pwntester/ysoserial.net
  • @olekmirosh https://community.microfocus.com/t5/Security-Research-Blog/New-NET-deserialization-gadget-for-compact-payload-When-size/ba-p/1763282
  • @monoxgas https://silentbreaksecurity.com/re-animating-activitysurrogateselector/
  • @zcgonvh http://www.zcgonvh.com/post/weaponizing_CVE-2020-0688_and_about_dotnet_deserialize_vulnerability.html

Descargo de responsabilidad

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.

Descargar herramienta
-w, --scriptType=jsEstablecer a js, vbs, vba o hta
-a, --assembly=TestAssembly.dllEnsamble .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.csArchivo 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.dllEnsamble de referencia, ejemplo: -d System.Window- s.Forms.dll, System.dll
-b, --bypassOmite 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=b64Codificación de gadgets VBA: b64 o hex (por defecto b64)
-o, --output=outputArchivo de salida del payload generado, ejemplo: -o C:\Users\userX\Desktop\output (Sin extensión)
-r, --regfreeactivación sin registro de componentes COM basados en .NET, aplicable solo a scripts JS/HTA.
-h, --helpMostrar ayuda