Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
GadgetToJScript — Un outil pour générer des gadgets sérialisés .NET capables de déclencher le chargement/l'exécution d'assemblys .NET lorsqu'ils sont désérialisés à l'aide de BinaryFormatter à partir de scripts basés sur JS/VBS/VBA. | Kitploit
Outils/GitHubGitHub/med0x2e/gadgettojscript
Génération de PayloadsMécanismes de PersistanceExploitationMouvement LatéralPost-ExploitationRed TeamingDéveloppement de Charges UtilesAttaque Adversariale
GitHubmed0x2e/gadgettojscript

GadgetToJScript

Un outil pour générer des gadgets sérialisés .NET capables de déclencher le chargement/l'exécution d'assemblys .NET lorsqu'ils sont désérialisés à l'aide de BinaryFormatter à partir de scripts basés sur JS/VBS/VBA.

1.1k1787il y a 5 ansVérifié par Kitploit
Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Description

Un outil pour générer des gadgets sérialisés .NET capables de déclencher le chargement/l'exécution d'assemblys .NET lors de la désérialisation via BinaryFormatter à partir de scripts JS/VBS/VBA.
Le gadget actuel déclenche un appel à Activator.CreateInstance() lors de la désérialisation via BinaryFormatter à partir de jscript/vbscript/vba, ce qui signifie qu'il peut être utilisé pour déclencher l'exécution de l'assembly .NET de votre choix via le constructeur par défaut/public.

L'outil a été créé principalement pour automatiser l'armement de scripts WSH pour des engagements de red team (Accès Initial, Mouvement Latéral, Persistance). Le chargeur de shellcode utilisé pour la preuve de concept (PoC) a été retiré et remplacé par un exemple d'assembly implémenté dans le projet TestAssembly.

Détails :

  • Contourne AMSI sans avoir à mettre à jour la clé de registre AmsiEnable ni à détourner loadlibrary (AMSI.dll).
  • Contourne les contrôles nouvellement introduits dans .NET 4.8+ visant à bloquer les vérifications de type "Assembly.Load" et ActivitySurrogateSelector.
  • Le gadget prend en charge la désérialisation correcte des charges utiles ciblant des environnements .NET Framework 3.5 à 4.8+.
  • Dépend d'ActivitySurrogateSelector pour créer une classe Surrogate qui agit comme un wrapper afin de désérialiser un gadget conçu pour déclencher un appel à "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())".
  • Exploite un gadget basé sur TextFormattingRunProperties comme première étape de désérialisation pour désactiver la vérification de type d'ActivitySurrogateSelector, contournant ainsi les correctifs introduits récemment dans (.NET Framework 4.8+).
  • Ne repose pas principalement sur l'exposition d'un objet COM basé sur .NET, il n'est donc pas nécessaire d'appeler d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class).
  • Les délégués sont utilisés uniquement pour déclencher l'exécution de la charge utile pendant la désérialisation (Func<Assembly, IEnumerable>), une exigence pour un chaînage correct des éléments du gadget.
  • La longueur des gadgets ou flux sérialisés est calculée à l'exécution et automatiquement renseignée dans les scripts WSH générés (non requis pour VBA).
  • Génère des scripts VBS/VBA et JS/HTA reposant sur l'activation sans inscription (registration-free) de composants COM basés sur .NET.
  • Utilisation et notes :

    Vous pouvez soit utiliser les binaires situés dans le dossier Release, soit utiliser VS2017 et recibler votre projet vers .NET 3.5 ou 4.x afin de compiler G2JS à partir des sources.

    • Utilisez la version .NET 3.5 de G2JS pour :

      • Générer des scripts WSH destinés à s'exécuter dans des environnements où .NET Framework 4.x n'est pas disponible ou est inférieur à 4.8. (3.5 est la version minimale requise de .NET Framework). Cela nécessite de compiler votre charge utile C# ou votre assembly .NET avec .NET Framework <= 3.5.
    • Utilisez la version .NET 4.x de G2JS pour :

      • Générer des scripts WSH destinés à s'exécuter dans des environnements où .NET Framework 4.x est disponible. (Y compris 4.8+).
      • Générer des scripts WSH pour des environnements .NET 4.8+ en utilisant l'option “--bypass” pour contourner la vérification de type.
    • Le code source C# de la charge utile doit être placé dans le constructeur public par défaut de votre classe. (Exemple d'exécution de Mimikatz depuis jscript ; https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)

    • Les tests ont été effectués sur la dernière version de Windows 10 Entreprise 1909 et Windows 7 avec différentes versions de .NET Framework installées.

    • Assurez-vous que Windows Defender est désactivé lors de l'utilisation de GadgetToJScript.exe pour générer des scripts WSH, il peut être réactivé une fois les scripts générés.

    -w, --scriptType=jsDéfinir sur js, vbs, vba ou hta
    -a, --assembly=TestAssembly.dllAssembly .NET, exemple : -a C:\Users\userX\Desktop\shellcode_loader.dll/exe, ou vous pouvez spécifier un fichier source c# à la place en utilisant l'option de ligne de commande -c.
    -c, --csfile=TestAssembly.csFichier de code source C#, exemple : -c C:\Users\userX\Desktop\shellcode_loader.cs, assurez-vous de placer votre code dans le constructeur par défaut de votre classe et de spécifier les dépendances requises à l'aide de l'option -d.
    -d, --references=Example.dllAssemblys de référence, exemple : -d System.Window- s.Forms.dll, System.dll
    -b, --bypassContourne les contrôles de vérification de type introduits dans .NET version 4.8+, par défaut défini sur false, passez à true (--bypass/-b) si les scripts WSH sont générés pour s'exécuter sur des environnements .NET version > 4.8+. Cette option ne doit être utilisée qu'avec l'exécutable G2JS .NET 4.x
    -e, --encodeType=b64Encodage des gadgets VBA : b64 ou hex (défaut défini sur b64)
    -o, --output=outputFichier de sortie de la charge utile générée, exemple : -o C:\Users\userX\Desktop\output (sans extension)
    -r, --regfreeactivation sans inscription (registration-free) des composants COM basés sur .NET, applicable uniquement aux scripts JS/HTA.
    -h, --helpAfficher l'aide

    Astuce OPSEC :

    Utilisez la version .NET 3.5 de G2JS pour générer des scripts JScript/HTA WSH sans inscription (Registration-free) qui peuvent toujours contourner la vérification de type .NET Framework 4.8+ sans avoir à désactiver cette atténuation à l'aide du gadget de première étape TextFormattingRunProperties. Considérez ceci comme un contournement meilleur/plus propre pour exécuter des charges utiles JScript/HTA sans inscription (Reg-free) ciblant des environnements .NET 4.8+, car il ne nécessite pas :

    • Le gadget de première étape
    • La création d'un objet Shell
    • La lecture de la version actuelle de .NET Framework depuis le registre
    • La définition de la variable d'environnement COMPLUS_Version.

    -> moins d'IOC + ciblage des environnements 3.5 < .NET < 4.x.

    Crédits et références

    L'outil s'appuie sur les recherches/travaux remarquables de :

    • @tyranid https://googleprojectzero.blogspot.com/2017/04/ => a rendu possible la sérialisation/désérialisation de classes non sérialisables)
    • @pwntester projet 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

    Avertissement

    GadgetToJScript ne doit être utilisé qu'à des fins de red team autorisées et/ou d'éducation à but non lucratif. Toute utilisation abusive de ce logiciel n'engagera pas la responsabilité de l'auteur. Utilisez-le sur vos propres réseaux et/ou avec l'autorisation du propriétaire du réseau.

    Télécharger l’outil