Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
GadgetToJScript — Ein Tool zum Generieren von .NET-serialisierten Gadgets, die beim Deserialisieren mit BinaryFormatter aus JS/VBS/VBA-basierten Skripten das Laden/Ausführen von .NET-Assemblys auslösen können. | Kitploit
Tools/GitHubGitHub/med0x2e/gadgettojscript
Payload-GenerierungPersistenzmechanismenExploitationLaterale BewegungPost-ExploitationRed TeamingPayload-EntwicklungAdversarial-Angriff
GitHubmed0x2e/gadgettojscript

GadgetToJScript

Ein Tool zum Generieren von .NET-serialisierten Gadgets, die beim Deserialisieren mit BinaryFormatter aus JS/VBS/VBA-basierten Skripten das Laden/Ausführen von .NET-Assemblys auslösen können.

1.1k17823vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigen
Teilen

Beschreibung

Ein Tool zum Generieren von .NET-serialisierten Gadgets, die das Laden/Ausführen von .NET-Assemblies auslösen können, wenn sie mithilfe von BinaryFormatter aus JS/VBS/VBA-Skripten deserialisiert werden.
Das aktuelle Gadget löst beim Deserialisieren mit BinaryFormatter aus jscript/vbscript/vba einen Aufruf von Activator.CreateInstance() aus. Das bedeutet, es kann verwendet werden, um die Ausführung Ihrer .NET-Assembly Ihrer Wahl über den standardmäßigen/öffentlichen Konstruktor auszulösen.

Das Tool wurde hauptsächlich zur Automatisierung der Bewaffnung von WSH-Skripten für RT-Einsätze (Initial Access, Lateral Movement, Persistence) entwickelt. Der für den PoC verwendete Shellcode-Loader wurde entfernt und durch eine Beispiel-Assembly ersetzt, die im TestAssembly-Projekt implementiert ist.

Details:

  • Umgeht AMSI, ohne den Registrierungsschlüssel AmsiEnable aktualisieren oder loadlibrary (AMSI.dll) kapern zu müssen.
  • Umgeht die in .NET 4.8+ neu eingeführten Kontrollen zur Blockierung von "Assembly.Load" und ActivitySurrogateSelector-Typprüfungen.
  • Das Gadget unterstützt die ordnungsgemäße Deserialisierung von Payloads, die auf .NET Framework 3.5 bis 4.8+ Umgebungen abzielen.
  • Hängt von ActivitySurrogateSelector ab, um eine Surrogate-Klasse zu erstellen, die als Wrapper fungiert, um ein Gadget zu deserialisieren, das so aufgebaut ist, dass es einen Aufruf von "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())" auslöst.
  • Nutzt ein auf TextFormattingRunProperties basierendes Gadget als erste Deserialisierungsstufe, um die ActivitySurrogateSelector-Typprüfung zu deaktivieren und damit kürzlich in (.NET Framework 4.8+) eingeführte Fixes zu umgehen.
  • Verlässt sich nicht hauptsächlich auf die Offenlegung eines .NET-basierten COM-Objekts, daher kein Aufruf von d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class) erforderlich.
  • Delegaten werden nur verwendet, um die Payload-Ausführung während der Deserialisierung auszulösen (Func<Assembly, IEnumerable>),eine Voraussetzung für die ordnungsgemäße Verkettung der Gadget-Elemente.
  • Die Länge serialisierter Gadgets oder Streams wird zur Laufzeit berechnet und automatisch in die generierten WSH-Skripte eingetragen (für VBA nicht erforderlich).
  • Generiert VBS/VBA- und JS/HTA-Skripte, die auf die registrierungsfreie Aktivierung von .NET-basierten COM-Komponenten setzen.

Verwendung & Hinweise:

Sie können entweder die Binärdateien im Release-Ordner verwenden oder VS2017 nutzen und Ihr Projekt auf .NET Version 3.5 oder 4.x umstellen, um G2JS aus dem Quellcode zu erstellen.

  • Verwenden Sie die .NET 3.5-Version von G2JS, um:

    • WSH-Skripte zu generieren, die in Umgebungen ausgeführt werden sollen, in denen .NET Framework 4.x nicht verfügbar oder älter als 4.8 ist. (3.5 ist die minimal erforderliche .NET Framework-Version). Dies erfordert, dass Sie Ihre C#-Payload oder .NET-Assembly mit .NET Framework <= 3.5 erstellen.
  • Verwenden Sie die .NET 4.x-Version von G2JS, um:

    • WSH-Skripte zu generieren, die in Umgebungen mit verfügbarem .NET Framework 4.x ausgeführt werden sollen. (Enthält 4.8+)
    • WSH-Skripte für Umgebungen mit .NET 4.8+ zu generieren, indem die Option “--bypass” verwendet wird, um die Typprüfung zu umgehen.
  • Der C#-Quellcode der Payload sollte im standardmäßigen öffentlichen Konstruktor Ihrer Klasse platziert werden. (Beispiel zum Ausführen von Mimikatz aus jscript; https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)

  • Tests wurden auf dem neuesten Windows 10 Enterprise 1909 Release und Windows 7 mit verschiedenen installierten .NET Framework-Versionen durchgeführt.

  • Stellen Sie sicher, dass Windows Defender deaktiviert ist, wenn Sie GadgetToJScript.exe zum Generieren von WSH-Skripten verwenden. Er kann wieder aktiviert werden, sobald die Skripte generiert sind.

-w, --scriptType=jsAuf js, vbs, vba oder hta setzen
-a, --assembly=TestAssembly.dll.NET-Assembly, Beispiel: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe, alternativ können Sie stattdessen eine C#-Quelldatei angeben, indem Sie die Befehlszeilenoption -c verwenden.
-c, --csfile=TestAssembly.csC#-Quelldatei, Beispiel: -c C:\Users\userX\Desktop\shellcode_loader.cs, stellen Sie sicher, dass Sie Ihren Code im Standardkonstruktor Ihrer Klasse platzieren und alle erforderlichen Abhängigkeiten über die Befehlszeilenoption -d angeben.
-d, --references=Example.dllReferenzassemblys, Beispiel: -d System.Window- s.Forms.dll, System.dll
-b, --bypassUmgeht die in .NET Version 4.8+ eingeführten Typprüfungskontrollen. Standardmäßig auf false gesetzt; setzen Sie es auf true (--bypass/-b), falls WSH-Skripte zur Ausführung in Umgebungen mit .NET Version > 4.8+ generiert werden. Diese Option sollte nur mit der .NET 4.x G2JS-Executable verwendet werden.
-e, --encodeType=b64VBA-Gadget-Kodierung: b64 oder hex (Standard: b64)
-o, --output=outputGenerierte Payload-Ausgabedatei, Beispiel: -o C:\Users\userX\Desktop\output (Ohne Erweiterung)
-r, --regfreeRegistrierungsfreie Aktivierung von .NET-basierten COM-Komponenten, nur für JS/HTA-Skripte anwendbar.
-h, --helpHilfe anzeigen

OPSEC-Tipp:

Verwenden Sie die .NET 3.5-Version von G2JS, um registrierungsfreie JScript/HTA-WSH-Skripte zu generieren, die die .NET Framework 4.8+ Typprüfung weiterhin umgehen können, ohne diese Abschwächung mithilfe des ersten TextFormattingRunProperties-Stufen-Gadgets deaktivieren zu müssen. Betrachten Sie dies als einen besseren/saubereren Bypass, um Reg-freie JScript/HTA-Payloads auszuführen, die auf .NET 4.8+ Umgebungen abzielen, da er Folgendes nicht erfordert:

  • Das Gadget der ersten Stufe
  • Das Erstellen eines Shell-Objekts
  • Das Auslesen der aktuellen .NET Framework-Version aus der Registrierung
  • Das Festlegen der Umgebungsvariable COMPLUS_Version.

-> weniger IOCs + zielt auf 3.5 < .NET < 4.x Umgebungen ab.

Danksagungen & Referenzen

Das Tool basiert auf der großartigen Forschung/Arbeit von:

  • @tyranid https://googleprojectzero.blogspot.com/2017/04/ => machte das Serialisieren/Deserialisieren nicht serialisierbarer Klassen möglich)
  • @pwntester yoserial.net-Projekt 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

Haftungsausschluss

GadgetToJScript sollte nur für autorisiertes Red Teaming und/oder gemeinnützige Bildungszwecke verwendet werden. Für jeglichen Missbrauch dieser Software übernimmt der Autor keine Verantwortung. Verwenden Sie es nur in Ihren eigenen Netzwerken und/oder mit Genehmigung des Netzwerkeigentümers.

Tool herunterladen