
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.
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.
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:
Use a versão .NET 4.x do G2JS para:
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.
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:
ShellCOMPLUS_Version.-> menos IOCs + direcionamento a ambientes 3.5 < .NET < 4.x.
A ferramenta é baseada no excelente trabalho/pesquisa feito por:
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.
-w, --scriptType=js | Defina como js, vbs, vba ou hta |
-a, --assembly=TestAssembly.dll | Assembly .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.cs | Arquivo 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.dll | Assemblies de referência, exemplo: -d System.Window- s.Forms.dll, System.dll |
-b, --bypass | Contorna 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=b64 | Codificação de gadgets VBA: b64 ou hex (padrão definido como b64) |
-o, --output=output | Arquivo de saída do payload gerado, exemplo: -o C:\Users\userX\Desktop\output (Sem extensão) |
-r, --regfree | ativação sem registro de componentes COM baseados em .NET, aplicável apenas a scripts JS/HTA. |
-h, --help | Mostrar Ajuda |