# T1564.007 - VBA Stomping > [!warning] Técnica de Evasão de Alto Impacto > VBA Stomping permite que adversários entreguem macros maliciosas em documentos Office que passam invisivelmente por scanners estáticos de AV. Arquivos aparentam ter código benigno ou nenhum código - mas executam p-code malicioso compilado em memória. ## Descrição **VBA Stomping** é uma sub-técnica de [[t1564-hide-artifacts|T1564 - Hide Artifacts]] pela qual adversários manipulam a estrutura interna de documentos Microsoft Office para ocultar código VBA malicioso de ferramentas de análise estática. Documentos Office que contêm macros VBA armazenam o código em duas representações distintas dentro do arquivo composto (formato OLE/CFB - Compound File Binary): - **Código-fonte VBA** - texto legível armazenado nos module streams, descomprimido via algoritmo RLE. É o que ferramentas como `olevba`, `oledump` e scanners AV tradicionais leem. - **P-code (pseudo-código compilado)** - versão pré-compilada armazenada no campo `PerformanceCache` de cada module stream. O p-code é dependente da versão do Office e é executado diretamente quando a versão registrada no stream `_VBA_PROJECT` corresponde à versão do Office instalada no host. A técnica consiste em **substituir o código-fonte VBA** (área legível) por bytes nulos (`\x00`), conteúdo benigno, ou dados aleatórios, enquanto o **p-code malicioso permanece intacto e funcional**. Ferramentas que dependem exclusivamente de análise do código-fonte reportarão o arquivo como benigno ou como "sem macros". > **Técnica pai:** [[t1564-hide-artifacts|T1564 - Hide Artifacts]] --- ## Como Funciona ### Estrutura Interna de um Documento Office com Macros Documentos `.doc`, `.xls`, `.ppt` (formatos legados) e seus equivalentes modernos com macros habilitadas (`.docm`, `.xlsm`) armazenam projetos VBA em um container OLE embutido chamado `VBA/`. Dentro dele: | Stream | Conteúdo | |--------|---------| | `_VBA_PROJECT` | Metadados do projeto, incluindo a versão de compilação do Office | | `VBA/Module1` (e variações) | Código-fonte comprimido (RLE) + p-code no `PerformanceCache` | | `VBA/dir` | Diretório de módulos e suas propriedades | ### Mecanismo de Execução 1. Quando o usuário abre o documento e habilita macros, o Office lê o stream `_VBA_PROJECT` para verificar a versão de compilação. 2. Se a versão no stream corresponde ao Office instalado, o p-code é executado **diretamente** - sem descompressão ou recompilação do código-fonte. 3. Se a versão não corresponde, o Office descomprime e recompila o código-fonte, descartando o p-code. Nesse cenário, o código benigno/nulo é executado, não o malicioso. ### Por Que Engana Scanners - Ferramentas como `olevba`, `ViperMonkey`, e a maioria dos antivírus leem apenas o **código-fonte** VBA descomprimido. - Com o código-fonte zerado ou substituído por conteúdo benigno, scanners retornam falso negativo - "nenhum código malicioso detectado". - O p-code, sendo binário compilado específico de versão, é raramente inspecionado por ferramentas tradicionais. --- ## Attack Flow ```mermaid graph TB A["🎣 Entrega<br/>(Phishing / Download Drive-By)"] --> B["📄 Documento Office com Macro"] B --> C["🔧 Engenharia do Documento<br/>(Manipulação OLE)"] C --> D["✏️ Código-Fonte VBA<br/>(Substituído por conteúdo benigno ou zeros)"] C --> E["⚙️ P-Code Malicioso<br/>PerformanceCache - intacto"] D --> F["🔍 Scanner AV / olevba<br/>(Lê código-fonte → Benigno)"] E --> G{"Versão Office<br/>corresponde ao _VBA_PROJECT?"} G -->|"Sim"| H["💥 P-Code Executado<br/>(Payload malicioso)"] G -->|"Não"| I["🟢 Código benigno executado<br/>(Evasão bem-sucedida mesmo assim)"] H --> J["⬇️ Download de Payload<br/>(Stager / RAT)"] J --> K["🏠 C2 Estabelecido<br/>(Persistence)"] F --> L["✅ Documento aprovado<br/>pela solução de segurança"] L --> H ``` --- ## Exemplos de Uso ### Grupos e Campanhas Documentados #### Phishing com Documentos Office - Padrão Geral APT VBA Stomping foi identificado em campanhas de [[t1566-phishing|phishing]] direcionadas por grupos como [[g0065-leviathan|APT40]] e atores de ameaça focados em espionagem corporativa, que entregam documentos Word via e-mail com macros aparentemente inofensivas. A técnica é especialmente prevalente em ataques contra setores [[_sectors|financeiro e governamental]], onde gateways de e-mail realizam sandboxing de documentos Office. #### Ferramentas que Facilitam a Técnica | Ferramenta | Uso | |-----------|-----| | `EvilClippy` (GitHub) | Automatiza a criação de documentos com VBA stomping - substitui código-fonte por código benigno enquanto preserva p-code | | `mraptor` (oletools) | Detecta presença de código executável em macros (pode ser evadido pelo stomping) | | `pcodedmp` | Ferramenta forense - desmonta o p-code compilado para análise | | `Metasploit modules` | Vários módulos de geração de documentos maliciosos incorporaram variantes desta técnica | #### Relação com Outras Técnicas VBA Stomping é frequentemente combinada com: - [[t1566-002-spearphishing-link|T1566.002 - Spearphishing Attachment]] - vetor de entrega primário - [[t1204-002-malicious-file|T1204.002 - Malicious File]] - enganar o usuário para habilitar macros - [[t1027-obfuscated-files-or-information|T1027 - Obfuscated Files or Information]] - ofuscação adicional do payload - [[t1059-005-visual-basic|T1059.005 - Command and Scripting Interpreter: Visual Basic]] - execução via VBA --- ## Detecção ### Indicadores de Comprometimento | Indicador | Descrição | Confiança | |----------|-----------|-----------| | Divergência código-fonte × p-code | Código-fonte benigno mas p-code contém referências a APIs suspeitas (`Shell`, `CreateObject`, `WScript`) | Alta | | Código-fonte zerado | Module streams com código-fonte comprimido de tamanho mínimo (< 100 bytes) mas PerformanceCache volumoso | Alta | | Versão `_VBA_PROJECT` manipulada | Versão declarada diferente das versões comuns de Office em uso na organização | Média | | Acesso a APIs Win32 via p-code | Chamadas a `VirtualAlloc`, `ShellExecute`, `CreateThread` visíveis no desmontamento do p-code | Alta | ### Regra Sigma ```yaml title: VBA Stomping - Source Code Mismatch in Office Document id: f3a2e1b4-8c9d-4f2a-b5e3-1a7c6d9f0e2b status: experimental description: > Detecta documentos Office onde o código-fonte VBA está ausente ou zerado mas o PerformanceCache (p-code) contém conteúdo substancial - indicativo de VBA Stomping. Requer análise pré-execução via ferramenta de inspeção OLE. references: - https://attack.mitre.org/techniques/T1564/007/ - https://github.com/outflanknl/EvilClippy author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1564.007 logsource: product: windows category: process_creation detection: selection_office_macro: EventID: 4688 NewProcessName|contains: - '\WINWORD.EXE' - '\EXCEL.EXE' - '\POWERPNT.EXE' selection_suspicious_child: ParentProcessName|contains: - '\WINWORD.EXE' - '\EXCEL.EXE' NewProcessName|contains: - '\cmd.exe' - '\powershell.exe' - '\wscript.exe' - '\cscript.exe' - '\mshta.exe' condition: selection_office_macro and selection_suspicious_child falsepositives: - Macros legítimas de automação corporativa - Ferramentas de relatório que invocam Office com macros level: high ``` > [!tip] Detecção Avançada > Para detecção definitiva de VBA Stomping, utilize ferramentas de análise OLE como `pcodedmp` e `oledump` para comparar o tamanho e conteúdo do código-fonte comprimido com o `PerformanceCache`. Uma discrepância severa (código-fonte mínimo, p-code extenso) é sinal forte da técnica. --- ## Mitigação | ID | Mitigação | Implementação | Efetividade | |----|-----------|--------------|-------------| | [[m1042-disable-or-remove-feature-or-program\|M1042 - Disable or Remove Feature or Program]] | Desabilitar macros VBA por padrão via GPO em toda a organização | Group Policy: `User Configuration > Administrative Templates > Microsoft Office > Block macros from running in Office files from the internet` | Alta | | Allowlisting de macros | Permitir apenas macros assinadas digitalmente por CA interna confiável | Configuração de Trusted Publishers no Office Trust Center | Alta | | Análise p-code em gateway | Implementar inspeção de p-code em soluções de e-mail gateway (ex: Proofpoint, Mimecast com análise VBA avançada) | Configuração de sandbox com análise OLE | Média | | AMSI para Office VBA | Habilitar integração AMSI (Antimalware Scan Interface) no Office 365/2019+ | Registro: `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AMSI` | Média | | Atualização de versão | Manter Office atualizado - versões recentes verificam integridade do p-code | Windows Updaté / Microsoft 365 auto-updaté | Baixa-Média | --- ## Contexto Brasil/LATAM O VBA Stomping representa uma ameaça relevante para o contexto brasileiro por razões operacionais específicas: ### Fragmentação de Versões Office no Brasil O Brasil apresenta alta fragmentação de versões Microsoft Office em uso - especialmente no setor público e em PMEs, onde versões legadas como Office 2010, 2013 e 2016 são comuns. Esta fragmentação **favorece** o atacante: ao compilar o p-code para a versão correta da vítima (obtida via [[t1592-gather-victim-host-information|reconhecimento prévio]]), a técnica garante execução confiável. ### Vetor Predominante: Phishing Fiscal e Bancário Campanhas de [[t1566-002-spearphishing-link|spearphishing]] no Brasil frequentemente utilizam documentos Office com temática fiscal (SEFAZ, Receita Federal, boletos, NFe) e bancária. A adoção de VBA Stomping nesses documentos permitiu que grupos como **Guildma** e **Grandoreiro** - famílias de [[_malware|malware]] financeiro prevalentes no Brasil - evadissem soluções de segurança em endpoints corporativos. ### Setores de Alto Risco - **[[_sectors|Setor Financeiro]]** - instituições bancárias e fintechs são alvos primários de campanhas com documentos Office maliciosos - **Setor Público** - uso de versões Office legadas aumenta superfície de ataque - **Contabilidade e Advocacia** - alto volume de troca de documentos Office, criando oportunidade para inserção de payloads > [!note] Relevância LATAM > Além do Brasil, a técnica foi observada em campanhas direcionadas ao México, Argentina e Chile, especialmente em ataques de BEC (Business Email Compromise) contra empresas exportadoras e importadoras que trocam documentos com parceiros internacionais. --- ## Referências - [MITRE ATT&CK - T1564.007](https://attack.mitre.org/techniques/T1564/007/) - [EvilClippy - Outflank (GitHub)](https://github.com/outflanknl/EvilClippy) - [Subverting Trust in Windows - SpecterOps](https://specterops.io/assets/resources/Subverting_Trust_in_Windows.pdf) - [pcodedmp - Disassembler for VBA p-code](https://github.com/bontchev/pcodedmp) - [oletools - Python tools for OLE files analysis](https://github.com/decalage2/oletools) - [VBA Stomping - Didier Stevens Blog](https://blog.didierstevens.com/2016/03/14/vba-stomping/) **Relacionado:** [[t1564-hide-artifacts|T1564 - Hide Artifacts]] · [[t1566-002-spearphishing-link|T1566.002 - Spearphishing Attachment]] · [[t1204-002-malicious-file|T1204.002 - Malicious File]] · [[t1059-005-visual-basic|T1059.005 - Visual Basic]] · [[t1027-obfuscated-files-or-information|T1027 - Obfuscated Files]] · [[m1042-disable-or-remove-feature-or-program|M1042 - Disable or Remove Feature or Program]] · [[_malware|Malware Index]] · [[_sectors|Sectors Index]]