# 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]]