
Este repositório aborda alguns métodos de execução de código e evasão de AV para Macros em documentos do Office.
Em preparação para uma transmissão/vídeo sobre evasão de AV em VBS, eu estava fazendo algumas pesquisas sobre métodos de execução de código e técnicas de evasão para Macros do Office.
A lista foi ficando cada vez maior e não encontrei um local centralizado para templates ofensivos de VBA - então este repositório pode ser usado para isso. Está muito longe de estar completo. Se você conhece alguma outra técnica legal ou template útil, sinta-se à vontade para contribuir e criar um pull request!
A maioria dos templates neste repositório já foram publicados em algum lugar. Apenas copiei e colei a maioria dos templates de sites ms-docs, postagens de blog ou de outras ferramentas.
| Arquivo | Descrição |
|---|---|
| ShellApplication_ShellExecute.vba | Executa um comando do SO através do objeto ShellApplication e do método ShellExecute |
| ShellApplication_ShellExecute_privileged.vba | Executa um comando do SO privilegiado através do objeto ShellApplication e do método ShellExecute - prompt UAC |
| Shellcode_CreateThread.vba | Executa shellcode no processo atual via Win32 CreateThread |
| Shellcode_EnumChildWindowsCallback.vba | Executa shellcode no processo atual via EnumChildWindows |
| Win32_CreateProcess.vba | Cria um novo processo para execução de código via função Win32 CreateProcess |
| Win32_ShellExecute.vba | Cria um novo processo para execução de código via função Win32 ShellExecute |
| WMI_Process_Create.vba | Cria um novo processo via WMI para execução de código |
| WMI_Process_Create2.vba | Outro exemplo de execução de código via WMI |
| WscriptShell_Exec.vba | Executa um comando do SO através do objeto WscriptShell e do método Exec |
| WscriptShell_run.vba | Executa um comando do SO através do objeto WscriptShell e do método Run |
| VBA-RunPE | Técnica RunPE do @itm4n em VBA |
| Arquivo | Descrição |
|---|---|
| Unhooker.vba | Desvincula APIs na memória para se livrar de hooks |
| Syscalls.vba |
Bypass de ASR: http://blog.sevagas.com/IMG/pdf/bypass_windows_defender_attack_surface_reduction.pdf
Conversão de Shellcode para VBScript: https://github.com/DidierStevens/DidierStevensSuite/blob/master/shellcode2vbscript.py
Bypass de AMSI em VBA: https://outflank.nl/blog/2019/04/17/bypassing-amsi-for-vba/
Purga de VBA: https://www.mandiant.com/resources/purgalicious-vba-macro-obfuscation-with-vba-purging
Postagem de evasão e detecção de VBA da F-Secure: https://blog.f-secure.com/dechaining-macros-and-evading-edr/
Mais um blog da F-Secure: https://labs.f-secure.com/archive/dll-tricks-with-vba-to-improve-offensive-macro-capability/
| GadgetToJScript | Script C# do med0x2e para gerar gadgets serializados .NET que podem disparar o carregamento/execução de assemblies .NET quando desserializados usando BinaryFormatter a partir de scripts baseados em JS/VBS/VBA. |
| PPID_Spoof.vba | Cópia do spoofing-office-macro do christophetd |
| AMSIBypass_AmsiScanBuffer_ordinal.vba | Bypass de AMSI do rmdavy para aplicar patch no AmsiScanBuffer usando valores ordinais para um bypass de assinatura |
| AMSIBypass_AmsiScanBuffer_Classic.vba | Patch clássico do AmsiScanBuffer do rasta-mouse |
| AMSIBypass_Heap.vba | Cópia do repositório HeapsOfFun do rmdavy |
| AMSIbypasses.vba | Blog de bypass de AMSI do outflanknl |
| COMHijack_DLL_Load.vba | Carrega DLL via sequestro de COM |
| COM_Process_create.vba | Cria processo via objeto COM |
| Download_Autostart.vba | Baixa um arquivo de um servidor remoto e o coloca na pasta de Inicialização |
| Download_Autostart_WinAPI.vba | Baixa um arquivo de um servidor remoto via URLDownloadtoFileA e o coloca na pasta de Inicialização |
| Dropper_Autostart.vba | Coloca um arquivo batch na pasta de Inicialização |
| Registry_Persist_wmi.vba | Cria chave de registro de Inicialização para persistência via WMI |
| Registry_Persist_wscript.vba | Cria chave de registro de Inicialização para persistência via objeto wscript |
| ScheduledTask_Create.vba | Cria e inicia uma tarefa agendada para execução de código/persistência |
| XMLDOM_Load_XSL_Process_create.vba | Carrega XSL de um servidor remoto para executar código |
| regsvr32_sct_DownloadExecute.vba | Executa regsvr32 para baixar um arquivo SCT de um servidor remoto para execução de código |
| BlockETW.vba | Aplica patch no EtwEventWrite na ntdll.dll para bloquear a coleta de dados do ETW |
| BlockETW_COMPLUS_ETWEnabled_ENV.vba | Bloqueia a coleta de dados do ETW definindo a variável de ambiente COMPLUS_ETWEnabled como 0, crédito para @xpn |
| ShellWindows_Process_create.vba | Criação de processo do ShellWindows para obter o explorer.exe como processo pai |
| AES.vba | Um exemplo de uso de criptografia/descriptografia AES em VBA de Aqui |
| Dropper_Executable_Autostart.vba | Obtém bytes de um executável a partir do VBA e os coloca na Inicialização - sem download neste caso |
| MarauderDrop.vba | Coloca uma DLL .NET registrada via COM na pasta temp, importa a função e executa código - neste caso carrega um binário C# remoto de um servidor web na memória e o executa - crédito para @Jean_Maes_1994 pelo MaraudersMap |
| Dropper_Workfolders_lolbas_Execute.vba | Coloca um executável embutido no diretório TEMP e o executa usando C:\windows\system32\Workfolders.exe como LOLBAS - crédito para @YoSignals |
| SandBoxEvasion | Alguns templates de evasão de SandBox |
| Evasion Dropper Autostart.vba | Coloca um arquivo no diretório de Inicialização ignorando o monitoramento de gravação de arquivos através de operação de renomeação de pasta |
| Evasion MsiInstallProduct.vba | Instala um pacote MSI remoto usando WindowsInstaller ActiveXObject evitando a criação de um processo filho suspeito do Office; a instalação do msi será executada como filho do serviço MSIEXEC /V |
| StealNetNTLMv2.vba | Rouba hash NetNTLMv2 via conexão de compartilhamento - crédito para https://book.hacktricks.xyz/windows/ntlm/places-to-steal-ntlm-creds |
| Parse-Outlook.vba | Analisa o Outlook em busca de palavras-chave sensíveis e extensões de arquivo, e os exfiltra por e-mail - crédito para JohnWoodman |
| Reverse-Shell.vba | Reverse shell escrito inteiramente em VBA usando chamadas da API do Windows - crédito para JohnWoodman |
| Uso de Syscalls - diretamente do disco ou como Syswhispers |
| Manymore.vba | Se você tiver mais ideias, sinta-se à vontade para contribuir |