
Uno strumento per generare gadget serializzati .NET in grado di attivare il caricamento/esecuzione di assembly .NET quando deserializzati tramite BinaryFormatter da script basati su JS/VBS/VBA.
Uno strumento per generare gadget serializzati .NET in grado di innescare il caricamento/esecuzione di assembly .NET quando vengono deserializzati tramite BinaryFormatter da script JS/VBS/VBA.
Il gadget attuale innesca una chiamata a Activator.CreateInstance() quando viene deserializzato tramite BinaryFormatter da jscript/vbscript/vba; ciò significa che può essere utilizzato per attivare l'esecuzione dell'assembly .NET scelto tramite il costruttore predefinito/pubblico.
Lo strumento è stato creato principalmente per automatizzare la weaponizzazione di script WSH in engagement di Red Team (Accesso Iniziale, Movimento Laterale, Persistenza); il loader di shellcode utilizzato per la PoC è stato rimosso e sostituito da un assembly di esempio implementato nel progetto TestAssembly.
Puoi utilizzare i binari presenti nella cartella Release oppure usare VS2017 e reimpostare il target del progetto su .NET versione 3.5 o 4.x per compilare G2JS dal sorgente.
Usa la versione .NET 3.5 di G2JS per:
Usa la versione .NET 4.x di G2JS per:
Il payload in C# deve essere inserito all'interno del costruttore pubblico predefinito della tua classe. (Esempio di esecuzione di Mimikatz da jscript; https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)
I test sono stati condotti sull'ultima release di Windows 10 Enterprise 1909 e su Windows 7 con diverse versioni di .NET Framework installate.
Assicurati che Windows Defender sia disattivato quando utilizzi GadgetToJScript.exe per generare script WSH; può essere riattivato una volta generati gli script.
Usa la versione .NET 3.5 di G2JS per generare script WSH Registration-free JScript/HTA che possono comunque bypassare il type checking di .NET Framework 4.8+ senza dover disabilitare tale mitigazione usando il primo gadget di stadio TextFormattingRunProperties. Consideralo un bypass migliore/pulito per eseguire payload Reg-free JScript/HTA destinati ad ambienti .NET 4.8+, poiché non richiede:
ShellCOMPLUS_Version.-> meno IOCs + destinato ad ambienti 3.5 < .NET < 4.x.
Lo strumento si basa sull'ottimo lavoro/ricerca svolto da:
GadgetToJScript dovrebbe essere utilizzato solo per attività di red team autorizzate e/o scopi educativi senza fini di lucro. Qualsiasi uso improprio di questo software non sarà responsabilità dell'autore. Usalo sulle tue reti e/o con il permesso del proprietario della rete.
-w, --scriptType=js | Imposta su js, vbs, vba o hta |
-a, --assembly=TestAssembly.dll | Assembly .NET, esempio: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe, in alternativa puoi specificare un file sorgente c# usando invece l'opzione da riga di comando -c. |
-c, --csfile=TestAssembly.cs | File sorgente C#, esempio: -c C:\Users\userX\Desktop\shellcode_loader.cs, assicurati di inserire il tuo codice all'interno del costruttore predefinito della tua classe e di specificare le dipendenze necessarie usando l'opzione da riga di comando -d. |
-d, --references=Example.dll | Assembly di riferimento, esempio: -d System.Window- s.Forms.dll, System.dll |
-b, --bypass | Bypassa i controlli di type check introdotti nella versione .NET 4.8+, per impostazione predefinita è false; impostalo a true (--bypass/-b) nel caso in cui gli script WSH vengano generati per essere eseguiti in ambienti con versione .NET > 4.8+. Questa opzione dovrebbe essere usata solo con l'eseguibile G2JS .NET 4.x |
-e, --encodeType=b64 | Codifica dei gadget VBA: b64 o hex (impostazione predefinita b64) |
-o, --output=output | File di output del payload generato, esempio: -o C:\Users\userX\Desktop\output (senza estensione) |
-r, --regfree | attivazione registration-free dei componenti COM basati su .NET, applicabile solo a script JS/HTA. |
-h, --help | Mostra aiuto |