Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
GadgetToJScript — Uma ferramenta para gerar gadgets serializados .NET que podem acionar o carregamento/execução de assemblies .NET quando desserializados usando BinaryFormatter a partir de scripts baseados em JS/VBS/VBA. | Kitploit
Ferramentas/GitHubGitHub/med0x2e/gadgettojscript
Geração de PayloadsMecanismos de PersistênciaExploraçãoMovimento LateralPós-ExploraçãoRed TeamingDesenvolvimento de PayloadsAtaque Adversário
GitHubmed0x2e/gadgettojscript

GadgetToJScript

Uma ferramenta para gerar gadgets serializados .NET que podem acionar o carregamento/execução de assemblies .NET quando desserializados usando BinaryFormatter a partir de scripts baseados em JS/VBS/VBA.

Ver Repositório
1.1k178há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Descrição

Uma ferramenta para gerar gadgets serializados .NET que podem acionar o carregamento/execução de assemblies .NET quando desserializados usando BinaryFormatter a partir de scripts JS/VBS/VBA.
O gadget atual aciona uma chamada a Activator.CreateInstance() quando desserializado usando BinaryFormatter a partir de jscript/vbscript/vba, o que significa que pode ser usado para acionar a execução do assembly .NET de sua escolha por meio do construtor padrão/público.

A ferramenta foi criada principalmente para automatizar a weaponização de scripts WSH para engajamentos de RT (Acesso Inicial, Movimento Lateral, Persistência); o carregador de shellcode usado para PoC foi removido e substituído por um assembly de exemplo implementado no projeto TestAssembly.

Detalhes:

  • Contorna o AMSI sem precisar atualizar a chave de registro AmsiEnable ou sequestrar loadlibrary (AMSI.dll).
  • Contorna os controles introduzidos recentemente no .NET 4.8+ para bloquear as verificações de tipo de "Assembly.Load" e ActivitySurrogateSelector.
  • O gadget suporta a desserialização adequada de payloads direcionados a ambientes com .NET Framework 3.5 até 4.8+.
  • Depende do ActivitySurrogateSelector para criar uma classe Surrogate que atua como um wrapper para desserializar um gadget construído de forma a acionar uma chamada a "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())".
  • Utiliza um gadget baseado em TextFormattingRunProperties como primeiro estágio de desserialização para desabilitar a verificação de tipo do ActivitySurrogateSelector, contornando assim as correções introduzidas recentemente no (.NET Framework 4.8+)
  • Não depende principalmente de expor um objeto COM baseado em .NET, portanto não há necessidade de chamar d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class)
  • Delegates são usados apenas para acionar a execução do payload durante a desserialização (Func<Assembly, IEnumerable>), um requisito para o encadeamento adequado dos elementos do gadget.
  • O comprimento dos gadgets ou Streams serializados é calculado em tempo de execução e preenchido automaticamente nos scripts WSH gerados (não necessário para VBA).
  • Gera scripts VBS/VBA e JS/HTA que dependem da ativação sem registro de componentes COM baseados em .NET

Uso e Notas:

Você pode usar os binários localizados na pasta Release ou usar o VS2017 e redirecionar seu projeto para a versão .NET 3.5 ou 4.x para compilar o G2JS a partir do código-fonte.

  • Use a versão .NET 3.5 do G2JS para:

    • Gerar scripts WSH destinados a serem executados em ambientes onde o .NET Framework 4.x não está disponível ou é menor que 4.8. (3.5 é a versão mínima necessária do .NET Framework). Isso requer compilar seu payload C# ou assembly .NET com .NET framework <= 3.5.
  • Use a versão .NET 4.x do G2JS para:

    • Gerar scripts WSH destinados a serem executados em ambientes onde o .NET Framework 4.x está disponível. (Inclui 4.8+)
    • Gerar scripts WSH para ambientes com .NET 4.8+ usando a opção “--bypass” para contornar a verificação de tipos.
  • O código-fonte C# do payload deve ser colocado dentro do construtor público padrão da sua classe. (Exemplo de execução do Mimikatz a partir de jscript; https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)

  • Os testes foram realizados na versão mais recente do Windows 10 Enterprise 1909 e no Windows 7 com diferentes versões do .NET Framework instaladas.

  • Certifique-se de que o Windows Defender esteja desativado ao usar o GadgetToJScript.exe para gerar scripts WSH; ele pode ser reativado depois que os scripts forem gerados.

Dica de OPSEC:

Use a versão .NET 3.5 do G2JS para gerar scripts WSH JScript/HTA sem registro que ainda podem contornar a verificação de tipos do .NET Framework 4.8+ sem precisar desabilitar essa mitigação usando o gadget de primeiro estágio TextFormattingRunProperties. Considere isso como um bypass melhor/mais limpo para executar payloads JScript/HTA sem registro direcionados a ambientes .NET 4.8+, pois não requer:

  • O gadget de primeiro estágio
  • Criar um objeto Shell
  • Ler a versão atual do .NET Framework do registro
  • Definir a variável de ambiente COMPLUS_Version.

-> menos IOCs + direcionamento a ambientes 3.5 < .NET < 4.x.

Créditos e Referências

A ferramenta é baseada no excelente trabalho/pesquisa feito por:

  • @tyranid https://googleprojectzero.blogspot.com/2017/04/ => tornou possível serializar/desserializar classes não serializáveis)
  • @pwntester projeto 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

Aviso Legal

O GadgetToJScript deve ser usado apenas para red teaming autorizado e/ou fins educacionais sem fins lucrativos. Qualquer uso indevido deste software não será de responsabilidade do autor. Use-o em suas próprias redes e/ou com a permissão do proprietário da rede.

Baixar ferramenta
-w, --scriptType=jsDefina como js, vbs, vba ou hta
-a, --assembly=TestAssembly.dllAssembly .NET, exemplo: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe, alternativamente você pode especificar um arquivo de código-fonte c# usando a opção de linha de comando -c.
-c, --csfile=TestAssembly.csArquivo de código-fonte C#, exemplo: -c C:\Users\userX\Desktop\shellcode_loader.cs, certifique-se de colocar seu código dentro do construtor padrão da sua classe e especifique as dependências necessárias usando a opção de linha de comando -d.
-d, --references=Example.dllAssemblies de referência, exemplo: -d System.Window- s.Forms.dll, System.dll
-b, --bypassContorna os controles de verificação de tipos introduzidos no .NET versão 4.8+; por padrão, definido como false, defina como true (--bypass/-b) caso os scripts WSH estejam sendo gerados para execução em ambientes com versão do .NET > 4.8+. esta opção deve ser usada apenas com o executável G2JS .NET 4.x
-e, --encodeType=b64Codificação de gadgets VBA: b64 ou hex (padrão definido como b64)
-o, --output=outputArquivo de saída do payload gerado, exemplo: -o C:\Users\userX\Desktop\output (Sem extensão)
-r, --regfreeativação sem registro de componentes COM baseados em .NET, aplicável apenas a scripts JS/HTA.
-h, --helpMostrar Ajuda