Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
GadgetToJScript — 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. | Kitploit
Strumenti/GitHubGitHub/med0x2e/gadgettojscript
Generazione di PayloadMeccanismi di PersistenzaExploitMovimento LateralePost-ExploitRed TeamingSviluppo PayloadAttacco Avversario
GitHubmed0x2e/gadgettojscript

GadgetToJScript

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.

Vedi Repository
1.1k1785 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Descrizione

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.

Dettagli:

  • Bypassa AMSI senza dover aggiornare la chiave di registro AmsiEnable o dirottare loadlibrary (AMSI.dll).
  • Bypassa i controlli recentemente introdotti in .NET 4.8+ per bloccare "Assembly.Load" e i Type check di ActivitySurrogateSelector.
  • Il gadget supporta la corretta deserializzazione di payload destinati ad ambienti con .NET Framework dalla 3.5 fino alla 4.8+.
  • Dipende da ActivitySurrogateSelector per creare una classe Surrogate che funge da wrapper per deserializzare un gadget costruito in modo da innescare una chiamata a "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())".
  • Utilizza il gadget basato su TextFormattingRunProperties come primo stadio di deserializzazione per disabilitare il Type check di ActivitySurrogateSelector, bypassando così le correzioni introdotte recentemente in (.NET Framework 4.8+).
  • Non si basa principalmente sull'esposizione di un oggetto COM .NET, quindi non è necessario chiamare d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class).
  • I delegate vengono utilizzati solo per innescare l'esecuzione del payload durante la deserializzazione (Func<Assembly, IEnumerable>), un requisito per un corretto concatenamento degli elementi del gadget.
  • La lunghezza dei gadget serializzati o degli Stream viene calcolata in fase di esecuzione e popolata automaticamente negli script WSH generati (non richiesta per VBA).
  • Genera script VBS/VBA e JS/HTA che si affidano all'attivazione registration-free dei componenti COM basati su .NET.

Utilizzo e Note:

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:

    • Generare script WSH pensati per essere eseguiti in ambienti in cui .NET Framework 4.x non è disponibile o è precedente alla 4.8. (3.5 è la versione minima richiesta di .NET Framework). Questo richiede di compilare il payload C# o l'assembly .NET con .NET framework <= 3.5.
  • Usa la versione .NET 4.x di G2JS per:

    • Generare script WSH destinati ad ambienti in cui è disponibile .NET Framework 4.x. (Include 4.8+)
    • Generare script WSH per ambienti con .NET 4.8+ utilizzando l'opzione “--bypass” per bypassare il type checking.
  • 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.

Suggerimento OPSEC:

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:

  • Il gadget di primo stadio
  • Creare un oggetto Shell
  • Leggere la versione attuale di .NET Framework dal registro
  • Impostare la variabile d'ambiente COMPLUS_Version.

-> meno IOCs + destinato ad ambienti 3.5 < .NET < 4.x.

Crediti e Riferimenti

Lo strumento si basa sull'ottimo lavoro/ricerca svolto da:

  • @tyranid https://googleprojectzero.blogspot.com/2017/04/ => ha reso possibile la serializzazione/deserializzazione di classi non serializzabili)
  • @pwntester progetto 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

Disclaimer

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.

Scarica lo strumento
-w, --scriptType=jsImposta su js, vbs, vba o hta
-a, --assembly=TestAssembly.dllAssembly .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.csFile 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.dllAssembly di riferimento, esempio: -d System.Window- s.Forms.dll, System.dll
-b, --bypassBypassa 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=b64Codifica dei gadget VBA: b64 o hex (impostazione predefinita b64)
-o, --output=outputFile di output del payload generato, esempio: -o C:\Users\userX\Desktop\output (senza estensione)
-r, --regfreeattivazione registration-free dei componenti COM basati su .NET, applicabile solo a script JS/HTA.
-h, --helpMostra aiuto