# T1140 - Deobfuscaté/Decode Files or Information ## Descrição Deobfuscar ou decodificar arquivos e informações é a contrapartida operacional da técnica de ofuscação ([[t1027-obfuscated-files|T1027 - Obfuscated Files or Information]]). O mecanismo é direto: um adversário armazena seu payload real em formato codificado ou criptografado - Base64, XOR, RC4, AES, strings hex - para que análises estáticas de antivírus e sandboxes não reconheçam o código malicioso. Somente em tempo de execução, dentro do ambiente alvo, o payload é decodificado e executado diretamente na memória, sem jámais tocar o disco em formato "limpo". A técnica é amplamente utilizada em todas as fases de uma intrusão. No estágio de acesso inicial, macros de documentos Office decodificam stagers em Base64 antes de chamá-los via PowerShell. Em fases mais avançadas, backdoors e implants carregam módulos adicionais como blobs criptografados que só ganham forma executável após decodificação em memória - padrão que contorna não apenas antivírus mas também muitas soluções EDR baseadas em assinatura de arquivo. O uso combinado com [[t1055-process-injection|injeção de processo]] torna a detecção particularmente desafiadora: o código malicioso nunca existe como arquivo executável em disco. Os métodos de decodificação mais comuns incluem: funções nativas do sistema operacional (`certutil -decode`, `[System.Convert]::FromBase64String` no PowerShell), bibliotecas de criptografia embutidas na linguagem do implant, e rotinas customizadas de XOR ou substituição de bytes. Atores mais sofisticados utilizam decodificação em múltiplas camadas - Base64 → XOR → AES - onde cada camada desvela apenas a próxima chave, aumentando exponencialmente a complexidade da análise reversa. **Contexto Brasil/LATAM:** A T1140 é uma das técnicas mais documentadas em malware com origem ou foco no Brasil. O [[s0531-grandoreiro|Grandoreiro]] - banking trojan brasileiro com operações que se estendem à Europa e México - utiliza decodificação de payload em runtime como elemento central de sua cadeia de infecção multicamada, com payloads codificados em Base64 dentro de arquivos ZIP distribuídos via e-mail. O [[g0032-lazarus-group|Lazarus Group]], ativo na região em campanhas de espionagem e roubo financeiro como a [[operation-dreamjob|Operation DreamJob]], emprega AES-128 e ChaCha20 em loaders que decodificam implants diretamente na memória de processos legítimos. A técnica também é observada em campanhas de phishing direcionadas ao setor financeiro brasileiro, onde scripts VBS e PowerShell decodificam stagers antes de contactar infraestrutura C2. ## Attack Flow ```mermaid graph TB A["T1027<br/>Obfuscated Files<br/>/ Payload Codificado"] --> B["T1140<br/>Deobfuscaté/Decode<br/>em Runtime"]:::highlight B --> C["T1059<br/>Script Interpreter<br/>Execução"] B --> D["T1055<br/>Process Injection<br/>Sem Toque em Disco"] classDef highlight fill:#e74c3c,color:#fff ``` ## Como Funciona 1. **Preparação:** O adversário prepara o payload final (backdoor, RAT, ransomware) e o codifica/criptografa usando um algoritmo escolhido. O payload codificado é então incorporado ao vetor de entrega: string dentro de um script PowerShell, blob dentro de um arquivo PE, dado dentro de uma chave de registro, ou arquivo separado no disco. A chave de decodificação pode estar hardcoded no loader, derivada de informações do sistema alvo (*environment keying*), ou carregada dinâmicamente de um servidor C2. 2. **Execução:** No momento da execução, o loader ou dropper aplica a rotina de decodificação. Exemplos práticos: `certutil.exe -decode encoded.txt decoded.exe` (abuso de ferramenta legítima), PowerShell com `[System.Convert]::FromBase64String()` seguido de `[System.Reflection.Assembly]::Load()`, ou rotina customizada em C que aplica XOR byte a byte sobre um array de dados. O resultado é o payload real, carregado diretamente na memória do processo atual ou injetado em outro processo. 3. **Pós-execução:** O payload decodificado é executado - frequentemente sem jámais ser gravado em disco em formato executável. Técnicas de [[t1055-process-injection|injeção de processo]] como process hollowing ou reflective DLL injection garantem que o código malicioso rode dentro de processos legítimos. O loader original pode se auto-deletar ou permanecer para gerenciar atualizações periódicas do payload codificado recebido via C2. ## Detecção **Fontes de dados:** - **Sysmon Event ID 1** - Process Creaté: `certutil.exe` com flags `-decode`, `-urlcache`; `expand.exe`; ou scripts de interpretadores (`powershell.exe`, `wscript.exe`) com argumentos suspeitos contendo strings Base64 longas - **Sysmon Event ID 7** - Image Loaded: DLLs de criptografia carregadas por processos inesperados (`bcrypt.dll`, `advapi32.dll` por scripts) - **Sysmon Event ID 8** - CreateRemoteThread / **Event ID 10** - ProcessAccess: injeção de processo subsequente à decodificação - **PowerShell Script Block Logging (Event ID 4104)** - Captura o conteúdo completo de scripts PowerShell, incluindo strings decodificadas e comandos após deobfuscação - **AMSI (Antimalware Scan Interface)** - Intercepta chamadas de decodificação em memória em scripts PowerShell, VBScript e JScript - habilitar logging AMSI no SIEM - **EDR Memory Scanning** - Varredura de memória em busca de padrões de PE headers em regiões de memória não-executáveis (indicativo de reflective loading) **Sigma Rule:** ```yaml title: Certutil Decode or Suspicious Base64 Execution id: 9b3c1f7a-2e4d-5a8b-c6f0-3d9e7b2a4c1f status: stable description: Detects use of certutil for file decoding or PowerShell executing decoded payloads - common T1140 indicators author: RunkIntel daté: 2026/03/24 logsource: category: process_creation product: windows detection: certutil_decode: Image|endswith: '\certutil.exe' CommandLine|contains: - '-decode' - '-decodehex' - 'urlcache' powershell_frombase64: Image|endswith: - '\powershell.exe' - '\pwsh.exe' CommandLine|contains: - 'FromBase64String' - 'Convert]::FromBase64' - '[Text.Encoding]' - 'IO.MemoryStream' powershell_reflection: Image|endswith: - '\powershell.exe' - '\pwsh.exe' CommandLine|contains: - 'Reflection.Assembly' - '::Load(' - 'LoadWithPartialName' condition: certutil_decode or powershell_frombase64 or powershell_reflection falsepositives: - Scripts legítimos de administração que usam certutil para decodificação de certificados - Ferramentas de desenvolvimento que carregam assemblies .NET dinâmicamente - Gerenciadores de pacotes (Chocolatey, Scoop) com instalação via scripts level: medium tags: - attack.defense_evasion - attack.t1140 - attack.t1027 ``` ## Mitigação | Mitigação | Recomendação Prática | |-----------|---------------------| | PowerShell Constrained Language Mode | Habilitar Constrained Language Mode via AppLocker ou WDAC para bloquear chamadas de reflexão e decodificação em PowerShell. Configurar Script Block Logging e Module Logging para capturar todo conteúdo executado. | | Restrição de `certutil.exe` | Bloquear `certutil.exe` via AppLocker para usuários não administrativos - a ferramenta tem uso administrativo legítimo limitado e é frequentemente abusada para decode (LOLBin). Em ambientes com WDAC, criar regras explícitas de negação para `certutil -decode`. | | AMSI (Antimalware Scan Interface) | Garantir que o AMSI estejá habilitado e integrado à solução de segurança. O AMSI inspeciona scripts antes da execução, incluindo conteúdo após deobfuscação em memória. Monitorar tentativas de bypass de AMSI via Event ID 1101. | | EDR com Análise de Memória | Soluções EDR modernas (CrowdStrike Falcon, SentinelOne, Microsoft Defender for Endpoint) realizam varredura de memória em tempo real e detectam payloads injetados via reflective loading mesmo sem assinatura de arquivo. | | Análise Comportamental em Sandbox | Submeter anexos e downloads suspeitos a sandboxes antes de entrega ao usuário final. Sandboxes com análise comportamental detectam chamadas de decodificação seguidas de execução de código, independentemente do formato de codificação utilizado. | ## Grupos que Utilizam Esta Técnica %% ```dataview TABLE WITHOUT ID link(file.link, title) AS "Ator", origin AS "Origem" FROM "cti/groups" WHERE contains(techniques, this.file.link) ``` %% <!-- QueryToSerialize: TABLE WITHOUT ID link(file.link, title) AS "Nota", title AS "Ator", origin AS "Origem" FROM "cti/groups" WHERE contains(techniques, this.file.link) --> <!-- SerializedQuery: TABLE WITHOUT ID link(file.link, title) AS "Nota", title AS "Ator", origin AS "Origem" FROM "cti/groups" WHERE contains(techniques, this.file.link) --> | Nota | Ator | Origem | | ---- | ---- | ------ | <!-- SerializedQuery END --> ## Campanhas Relacionadas %% ```dataview TABLE WITHOUT ID link(file.link, title) AS "Campanha" FROM "cti/campaigns" WHERE contains(techniques, this.file.link) ``` %% <!-- QueryToSerialize: TABLE WITHOUT ID link(file.link, title) AS "Nota", title AS "Campanha" FROM "cti/campaigns" WHERE contains(techniques, this.file.link) --> <!-- SerializedQuery: TABLE WITHOUT ID link(file.link, title) AS "Nota", title AS "Campanha" FROM "cti/campaigns" WHERE contains(techniques, this.file.link) --> | Nota | Campanha | | ------------------------------------------------------------------------- | ------------------------- | | [[astaroth-guildma-campaign\|Astaroth/Guildma Campaign]] | Astaroth/Guildma Campaign | <!-- SerializedQuery END --> ## Software Associado Os seguintes implants e ferramentas utilizam decodificação em runtime como parte de seu mecanismo de evasão: - [[s0531-grandoreiro|Grandoreiro]] - banking trojan brasileiro com decodificação multicamada de payload - [[s0053-seaduke|SeaDuke]] - backdoor APT29 que decodifica configurações e módulos em memória - [[s0013-plugx|PlugX]] - implant modular APT que carrega componentes adicionais via blobs criptografados - [[s0046-cozycar|CozyCar]] - dropper APT29 com payloads codificados em múltiplos formatos --- *Fonte: [MITRE ATT&CK - T1140](https://attack.mitre.org/techniques/T1140)*