
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.
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.
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 :
Utilisez la version .NET 4.x de G2JS pour :
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=js | Définir sur js, vbs, vba ou hta |
-a, --assembly=TestAssembly.dll | Assembly .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.cs | Fichier 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.dll | Assemblys de référence, exemple : -d System.Window- s.Forms.dll, System.dll |
-b, --bypass | Contourne 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=b64 | Encodage des gadgets VBA : b64 ou hex (défaut défini sur b64) |
-o, --output=output | Fichier de sortie de la charge utile générée, exemple : -o C:\Users\userX\Desktop\output (sans extension) |
-r, --regfree | activation sans inscription (registration-free) des composants COM basés sur .NET, applicable uniquement aux scripts JS/HTA. |
-h, --help | Afficher l'aide |
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 :
ShellCOMPLUS_Version.-> moins d'IOC + ciblage des environnements 3.5 < .NET < 4.x.
L'outil s'appuie sur les recherches/travaux remarquables de :
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.