
Um assistente multiplataforma para criar documentos maliciosos do MS Office. Pode ocultar macros VBA, stomp código VBA (via P-Code) e confundir ferramentas de análise de macros. Executa no Linux, OSX e Windows.
Esta ferramenta foi lançada durante nossa palestra na BlackHat Asia (28 de março de 2019). Uma gravação em vídeo desta palestra está disponível em https://www.youtube.com/watch?v=9ULzZA70Dzg.
Um assistente multiplataforma para criar documentos maliciosos do MS Office. Pode ocultar macros VBA, stompar código VBA (via P-Code) e confundir ferramentas de análise de macros. Executa em Linux, OSX e Windows.
Se você é novo nesta ferramenta, talvez queira começar lendo nosso post no blog sobre Evil Clippy: https://outflank.nl/blog/2019/05/05/evil-clippy-ms-office-maldoc-assistant/
Este projeto deve ser usado apenas para testes autorizados ou fins educacionais.
Se você não tem ideia do que é tudo isso, confira os seguintes recursos primeiro:
No momento da escrita, esta ferramenta é capaz de fazer uma macro padrão do Cobalt Strike contornar a maioria dos principais produtos antivírus e várias ferramentas de análise de maldoc (usando stomping VBA em combinação com nomes de módulos aleatórios).
Evil Clippy usa a biblioteca OpenMCDF para manipular arquivos do Formato Binário Composto do MS Office (CFBF) e, para isso, abusa das especificações MS-OVBA e recursos. Reutiliza código de Kavod.VBA.Compression para implementar o algoritmo de compressão usado nos streams dir e module (veja MS-OVBA para especificações relevantes).
Evil Clippy compila perfeitamente com o compilador Mono C# e foi testado em Linux, OSX e Windows.
Não fornecemos uma versão binária para EvilClippy. Por favor, compile os executáveis você mesmo:
OSX e Linux
Certifique-se de ter o Mono instalado. Em seguida, execute o seguinte comando no terminal:
mcs /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Agora execute Evil Clippy no terminal:
mono EvilClippy.exe -h
Windows
Certifique-se de ter o Visual Studio instalado. Em seguida, execute o seguinte comando no prompt de comando do desenvolvedor do Visual Studio:
csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Agora execute Evil Clippy no prompt de comando:
EvilClippy.exe -h
Exibir ajuda
EvilClippy.exe -h
Ocultar/Exibir macros do GUI
Oculta todos os módulos de macro (exceto o módulo padrão "ThisDocument") do editor GUI VBA. Isso é feito removendo linhas de módulo do stream do projeto [MS-OVBA 2.3.1].
EvilClippy.exe -g macrofile.doc
Desfaz as alterações feitas pela opção de ocultar (-g) para que possamos depurar a macro no IDE VBA.
EvilClippy.exe -gg macrofile.doc
Stompar VBA (abuso de P-code)
Coloca código VBA falso do arquivo de texto fakecode.vba em todos os módulos, mantendo o P-code intacto. Isso abusa de um recurso não documentado dos streams de módulo [MS-OVBA 2.3.4.3]. Observe que a versão do projeto VBA deve corresponder ao programa host para que o P-code seja executado (veja o próximo exemplo para correspondência de versão).
EvilClippy.exe -s fakecode.vba macrofile.doc
Nota: O stomping VBA não funciona para arquivos salvos no formato Excel 97-2003 Workbook (.xls).
Definir versão alvo do Office para stomping VBA
Mesmo que o anterior, mas agora visando explicitamente o Word 2016 em x86. Isso significa que o Word 2016 em x86 executará o P-code, enquanto outras versões do Word executarão o código de fakecode.vba em vez disso. Isso é alcançado definindo os bytes de versão apropriados no stream _VBA_PROJECT [MS-OVBA 2.3.4.1].
EvilClippy.exe -s fakecode.vba -t 2016x86 macrofile.doc
Definir/redefinir nomes de módulo aleatórios (enganar ferramentas de análise)
Define nomes de módulo ASCII aleatórios no stream dir [MS-OVBA 2.3.4.2]. Isso abusa da ambiguidade nos registros MODULESTREAMNAME [MS-OVBA 2.3.4.2.3.2.3] - a maioria das ferramentas de análise usa os nomes de módulo ASCII especificados aqui, enquanto o MS Office usava a variante Unicode. Ao definir um nome de módulo ASCII aleatório, a maioria das ferramentas de análise de P-code e VBA travam, enquanto o P-code e VBA reais ainda funcionam perfeitamente no Word e Excel.
EvilClippy.exe -r macrofile.doc
Nota: isso é conhecido por ser eficaz em enganar pcodedmp e VirusTotal.
Define nomes de módulo ASCII no stream dir para corresponder às suas contrapartes Unicode. Isso reverte as alterações feitas usando a opção (-r) do EvilClippy.
EvilClippy.exe -rr macrofile.doc
Servir um template com VBA stomped via HTTP
Serve o macrofile.dot via porta HTTP 8080 após realizar o stomping VBA. Se este arquivo for recuperado, ele automaticamente corresponde à versão do Office do alvo (usando seus cabeçalhos HTTP e então definindo os bytes _VBA_PROJECT de acordo).
EvilClippy.exe -s fakecode.vba -w 8080 macrofile.dot
Nota: O arquivo que você está servindo deve ser um template (.dot em vez de .doc). Você pode definir um template via URL (extensão .dot não é necessária!) a partir da barra de ferramentas do desenvolvedor no Word. Além disso, fakecode.vba deve ter um atributo VB_Base definido para uma macro de um template (isso significa que seu fakecode.vba deve começar com uma linha como Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}").
Definir/Remover proteção de bloqueio/visualização de projeto VBA
Para definir os atributos Locked/Unviewable use a opção '-u':
EvilClippy.exe -u macrofile.doc
Para remover os atributos Locked/Unviewable use a opção '-uu':
EvilClippy.exe -uu macrofile.doc
Nota: Você também pode remover os atributos Locked/Unviewable em arquivos que não foram bloqueados com EvilClippy.
Desenvolvido para manipulação de documentos do Microsoft Word e Excel.
Conforme observado acima, o stomping VBA não é eficaz contra o formato Excel 97-2003 Workbook (.xls).
Stan Hegt (@StanHacked) / Outflank
Com contribuições significativas de Carrie Roberts (@OrOneEqualsOne / Walmart).
Agradecimentos especiais a Nick Landers (@monoxgas / Silent Break Security) por me apontar para OpenMCDF.