# T1546.009 - AppCert DLLs
> [!danger] Persistência Global de Alta Impacto
> A chave `AppCertDlls` afeta **todos** os processos que chamam funções CreateProcess no sistema. Um adversário que abusa desta chave obtém execução de código em práticamente qualquer processo iniciado pelo usuário ou pelo sistema operacional, tornando a persistência extremamente robusta e difícil de erradicar.
## Descrição
Adversários podem estabelecer persistência e/ou elevar privilégios executando conteúdo malicioso acionado por DLLs registradas na chave `AppCertDlls` do registro do Windows. DLLs específicadas nesta chave, localizada em:
```
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\AppCertDLLs
```
são carregadas automaticamente em **todo processo** que chama as seguintes funções de API Win32:
- `CreateProcess`
- `CreateProcessAsUser`
- `CreateProcessWithLoginW`
- `CreateProcessWithTokenW`
- `WinExec`
Estas funções são ubíquas - são chamadas por práticamente toda aplicação Windows que inicia subprocessos. Isso significa que uma DLL maliciosa registrada nesta chave obtém execução em um escopo extraordinariamente amplo: navegadores, editores de texto, shells de comando, serviços do sistema e práticamente qualquer executável que inicia processos filhos.
Esta técnica é catalogada como subtécnica de [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]] e compartilha características com [[t1055-process-injection|T1055 - Process Injection]], com a diferença crítica de que AppCert DLLs são carregadas **automaticamente pelo sistema operacional**, sem necessidade de injeção ativa pelo adversário após a instalação.
**Técnica pai:** [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]]
---
## Como Funciona
### Mecanismo de Carregamento
O Windows Session Manager (`smss.exe`) processa a chave `AppCertDlls` durante a inicialização e registra as DLLs específicadas para carregamento automático. Quando qualquer processo chama `CreateProcess` (ou funções relacionadas), o subsistema Win32 (`kernel32.dll`) verifica esta chave e carrega as DLLs listadas no contexto do novo processo.
**Fluxo técnico:**
```
Processo A chama CreateProcess("notepad.exe")
→ kernel32.dll verifica AppCertDlls
→ carrega todas as DLLs listadas na chave
→ DLL maliciosa é inicializada no contexto de notepad.exe
→ DllMain() do adversário executa com permissões do processo
```
### Instalação da Persistência
O adversário com acesso privilegiado adiciona um valor à chave de registro:
```
HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDLLs
Valor: "MaliciousDLL" = "C:\Windows\System32\legitdll.dll"
```
O nome do valor é arbitrário. O dado é o caminho para a DLL maliciosa, frequentemente colocada em locais que imitam DLLs legítimas do sistema.
### Técnicas de Evasão Combinadas
Adversários sofisticados combinam AppCert DLLs com:
1. **DLL Hijacking:** Colocar a DLL maliciosa em um caminho que imita uma DLL legítima (ex.: `C:\Windows\System32\apphelp.dll`)
2. **Timestomping:** Alterar timestamps da DLL para coincidir com DLLs do sistema
3. **Code Signing Abuse:** Em casos avançados, assinar a DLL com certificado roubado ou comprometido
4. **Hollow DLL:** Criar uma DLL que exporta as mesmas funções da DLL legítima e carrega a legítima em memória, servindo como proxy invisível
### Diferença de Privilégios
Diferentemente de [[t1546-011-application-shimming|T1546.011 - Application Shimming]], que requer privilégios de administrador para instalar shim databases, a chave `AppCertDlls` também requer privilégios de administrador para ser modificada. No entanto, a DLL carregada executa **no contexto e com as permissões do processo alvo** - o que significa que se o processo alvo for um serviço rodando como SYSTEM, a DLL maliciosa também terá privilégios SYSTEM.
---
## Attack Flow
```mermaid
graph TB
A[Acesso Privilegiado Obtido<br/>Admin Local ou Escalação Anterior] --> B[Preparação da DLL Maliciosa<br/>DllMain com payload backdoor]
B --> C[Posicionamento da DLL<br/>Caminho legítimo ou Sistema32]
C --> D[Modificação da Chave de Registro<br/>HKLM\\...\\Session Manager\\AppCertDLLs]
D --> E{Trigger: Qualquer Processo\nchama CreateProcess}
E --> F1[browser.exe inicia subprocess]
E --> F2[cmd.exe executa comando]
E --> F3[svchost.exe inicia serviço]
E --> F4[explorer.exe abre aplicação]
F1 --> G[kernel32.dll carrega AppCertDLLs<br/>no novo processo]
F2 --> G
F3 --> G
F4 --> G
G --> H[DllMain do Adversário Executa<br/>no Contexto do Processo Alvo]
H --> I1[Persistência Contínua<br/>Ativada em cada novo processo]
H --> I2[Injeção de Código<br/>no Contexto de Processos Privilegiados]
H --> I3[Coleta de Credenciais<br/>Hooking de funções de autenticação]
H --> I4[Backdoor Oculto<br/>Mascarado como componente legítimo]
H --> I5[Escalação de Privilégios<br/>Herda permissões do processo pai]
style A fill:#cc3300,color:#fff
style D fill:#ff6600,color:#fff
style G fill:#ff8800,color:#fff
style H fill:#cc0000,color:#fff
style I1 fill:#880000,color:#fff
style I2 fill:#880000,color:#fff
style I3 fill:#880000,color:#fff
style I4 fill:#880000,color:#fff
style I5 fill:#880000,color:#fff
```
---
## Exemplos de Uso
### PUNCHBUGGY - FIN8 e Ambiente PoS
O malware [[s0196-punchbuggy|PUNCHBUGGY]] é atribuído ao grupo [[g0061-fin8|FIN8]] (relacionado ao [[g0046-fin7|FIN7]]) e utiliza a chave `AppCertDlls` como mecanismo de persistência em ambientes de ponto de venda (PoS). O PUNCHBUGGY é um downloader que estabelece persistência robusta via AppCert DLLs, garantindo que seu payload sejá carregado em qualquer processo iniciado no sistema comprometido, incluindo o software de PDV alvo.
**Fluxo do PUNCHBUGGY:**
1. FIN8 obtém acesso via spearphishing ou exploração de VPN/RDP
2. PUNCHBUGGY é deployado e registra uma DLL em `AppCertDlls`
3. A DLL é carregada em todos os processos subsequentes, incluindo software de PDV
4. RAM scraping de dados de cartões de crédito é realizado em memória
5. Dados exfiltrados via HTTPS para infraestrutura de C2 controlada pelo FIN8
### Uso em Frameworks de Red Team
Ferramentas de red team como **Cobalt Strike** e **Metasploit** incluem módulos para abusar de `AppCertDlls` como mecanismo de persistência pós-exploração. Em engajamentos de red team documentados publicamente, esta técnica é frequentemente utilizada como persistência secundária quando mecanismos mais comuns (run keys, scheduled tasks) são detectados pelo blue team.
### Malware de Espionagem - APT Genérico
Grupos de espionagem que operam contra alvos governamentais e corporativos na América Latina documentadamente usam AppCert DLLs como mecanismo de persistência de longa duração (anos). A técnica é preferida para operações de espionagem de longo prazo porque:
- Sobrevive a reinstalação de aplicações
- Não é removida por varreduras de antivírus que analisam apenas arquivos em disco (sem analisar o registro)
- A DLL maliciosa pode ser projetada para carregar payload em memória apenas, sem artefatos persistentes em disco além da própria DLL
- Cada novo processo iniciado no sistema retriga o carregamento, garantindo que o adversário mantenha acesso mesmo após reboots
---
## Detecção
> [!tip] Estrategia de Detecção Principal
> A detecção mais confiável é monitorar modificações na chave `AppCertDlls` no registro. Qualquer modificação nesta chave fora de contextos de instalação de software legítimos deve ser tratada como incidente de segurança de alta prioridade.
### Regra Sigma - Modificação da Chave AppCertDlls
```yaml
title: AppCertDLLs Registry Key Modification
id: e5f6a7b8-c9d0-1234-efab-567890123456
status: stable
description: >
Detecta modificações na chave de registro AppCertDLLs, que é abusada por
adversários para estabelecer persistência global em todos os processos que
chamam CreateProcess. Qualquer modificação nesta chave é altamente suspeita.
Correlaciona com T1546.009 - AppCert DLLs.
references:
- https://attack.mitre.org/techniques/T1546/009/
- https://www.mandiant.com/resources/blog/fin8-group-testing-your-detection-team
author: RunkIntel
daté: 2026-03-25
tags:
- attack.privilege_escalation
- attack.persistence
- attack.t1546.009
logsource:
category: registry_set
product: windows
detection:
selection:
TargetObject|contains:
- '\Control\Session Manager\AppCertDLLs'
condition: selection
falsepositives:
- Instalação de software legítimo de segurança que usa AppCertDLLs (muito raro)
- Ferramentas de monitoramento de desempenho em nível de sistema
level: high
```
### Regra Sigma - DLL Carregada de Caminho Suspeito via AppCertDlls
```yaml
title: Suspicious DLL Load via AppCertDLLs Mechanism
id: f6a7b8c9-d0e1-2345-fabc-678901234567
status: experimental
description: >
Detecta carregamento de DLLs de caminhos suspeitos em múltiplos processos
simultâneos - padrão consistente com DLL registrada em AppCertDlls sendo
carregada em todos os processos que chamam CreateProcess.
references:
- https://attack.mitre.org/techniques/T1546/009/
author: RunkIntel
daté: 2026-03-25
tags:
- attack.privilege_escalation
- attack.persistence
- attack.t1546.009
logsource:
category: image_load
product: windows
definition: Requires Sysmon Event 7 with full DLL load logging
detection:
selection:
ImageLoaded|contains:
- '\AppData\Local\'
- '\AppData\Roaming\'
- '\Temp\'
- '\ProgramData\'
filter_known_good:
ImageLoaded|contains:
- '\Microsoft\Teams\'
- '\Microsoft\Edge\'
- '\Google\Chrome\'
condition: selection and not filter_known_good
falsepositives:
- Software legítimo instalado em AppData (comum em ambientes corporativos)
level: medium
```
### Regra Sigma - Persistência Bootstrap via Session Manager
```yaml
title: Session Manager AppCertDLLs Value Creation
id: a7b8c9d0-e1f2-3456-abcd-789012345678
status: experimental
description: >
Detecta criação de novos valores na chave AppCertDLLs do Session Manager.
Novo valor indica potencial instalação de persistência via DLL injection global.
references:
- https://attack.mitre.org/techniques/T1546/009/
author: RunkIntel
daté: 2026-03-25
tags:
- attack.persistence
- attack.t1546.009
logsource:
category: registry_add
product: windows
detection:
selection:
TargetObject|startswith:
- 'HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDLLs'
condition: selection
falsepositives:
- Instalação legítima de ferramentas de monitoramento de sistema
level: critical
```
### Fontes de Dados Relevantes
| Fonte | O que monitorar |
|-------|-----------------|
| Registry Events (Sysmon 12/13/14) | Criação, modificação ou exclusão em `AppCertDlls` |
| Module Load Events (Sysmon 7) | DLLs carregadas de caminhos não-padrão em múltiplos processos |
| Process Creation (Sysmon 1 / Event 4688) | Processos filhos anômalos de processos que normalmente não criam filhos |
| File Creation (Sysmon 11) | Novas DLLs criadas em `System32` ou caminhos de sistema |
| Windows Defender / EDR | Alertas de DLL injection ou hooking de API |
| Autoruns (Sysinternals) | Verificação regular da chave AppCertDlls via `autorunsc -a` |
---
## Mitigação
| ID | Mitigação | Implementação Prática |
|----|-----------|----------------------|
| [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Implementar **Windows Defender Application Control (WDAC)** ou **AppLocker** com políticas que bloqueiam carregamento de DLLs não-assinadas ou de caminhos não aprovados. WDAC pode ser configurado para bloquear DLLs registradas em AppCertDlls que não façam parte de um catálogo aprovado. |
### Controles Complementares
- **Monitoramento contínuo do registro:** Ferramentas como Microsoft Sysmon (evento 13) ou EDR devem alertar imediatamente para qualquer modificação em `AppCertDlls`
- **Auditoria regular com Autoruns:** Executar `autorunsc.exe -a -c` periodicamente e comparar com baseline aprovado
- **Principle of Least Privilege:** Restringir ao máximo contas com acesso a `HKLM\System\` - somente administradores de domínio ou contas de serviço específicas devem ter acesso de escrita
- **Credential Guard:** Habilitar Windows Credential Guard para proteger credenciais mesmo se uma DLL maliciosa for carregada em processos privilegiados
- **Application Whitelisting:** Manter lista de DLLs aprovadas para carregamento em sistemas críticos (servidores, sistemas de PDV, estações de trabalho privilegiadas)
- **Integridade de código (CI):** Configurar Code Integrity no modo `Enforced` para bloquear DLLs não-assinadas por autoridades certificadoras confiáveis
---
## Contexto Brasil/LATAM
> [!warning] Relevância para Setor Financeiro e Varejo
> O Brasil possui o maior volume de transações de cartão de crédito da América Latina. A combinação de AppCert DLLs com RAMs scrapers é o vetor técnico preferêncial de grupos como [[g0061-fin8|FIN8]] contra terminais de PDV brasileiros, especialmente em redes de franquias e supermercados.
AppCert DLLs é uma técnica de alta relevância para o Brasil e LATAM pelos seguintes fatores:
**Setor financeiro:**
- Sistemas de home banking e aplicações de Internet Banking em Windows que chamam `CreateProcess` para abrir PDFs ou documentos são alvos ideais - uma DLL maliciosa carregada via AppCert nestes processos pode capturar credenciais bancárias em memória
- Terminais de trading e plataformas de investimento (muito populares no Brasil com crescimento do varejo de investimentos) são alvos de espionagem corporativa via esta técnica
**Setor de varejo e PDV:**
- O Brasil possui aproximadamente 6 milhões de terminais de PDV ativos, muitos rodando Windows 10 IoT ou Windows Embedded - ambientes onde atualizações são lentas e monitoramento de segurança é limitado
- Grupos como [[g0061-fin8|FIN8]] e [[g0046-fin7|FIN7]] documentadamente visam redes de supermercados, farmácias e postos de combustível brasileiros com técnicas de PDV malware que incluem AppCert DLLs
- O sistema de pagamento PIX, apesar de mais seguro, não eliminou os terminais de PDV legados que continuam processando transações com cartão físico
**Campanhas documentadas na região:**
- Incidentes em 2023-2024 envolvendo comprometimento de software de gestão ERP em empresas brasileiras, onde a persistência foi estabelecida via AppCertDlls em servidores Windows Server
- Ataques a cooperativas de crédito brasileiras usando AppCert DLLs para interceptar software de reconciliação financeira e exfiltrar dados de transações
**Recomendações específicas para Brasil:**
1. Auditar imediatamente a chave `HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDLLs` em todos os sistemas Windows da organização - use `reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCertDLLs"`
2. Qualquer DLL listada deve ser válidada contra hash conhecido e assinatura digital verificada
3. Implementar alertas no SIEM para qualquer modificação desta chave em tempo real
---
## Referências
- [MITRE ATT&CK - T1546.009 AppCert DLLs](https://attack.mitre.org/techniques/T1546/009/)
- [Mandiant - FIN8 Group: Attacking the Hospitality and Retail Sectors](https://www.mandiant.com/resources/blog/fin8-group-testing-your-detection-team)
- [Microsoft - AppCertDlls Registry Key Documentation](https://docs.microsoft.com/en-us/windows/win32/devnotes/appcertdlls)
- [SANS - Windows Persistence Mechanisms: AppCertDLLs](https://www.sans.org/blog/more-persistence-using-appcert-dlls/)
- [Sysinternals Autoruns - AppCertDLLs Detection](https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns)
- [Windows Defender Application Control - Policy Configuration](https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/windows-defender-application-control)
### Notas Relacionadas
- [[s0196-punchbuggy|PUNCHBUGGY]] - malware que usa AppCert DLLs para persistência
- [[g0061-fin8|FIN8]] - grupo associado ao PUNCHBUGGY
- [[g0046-fin7|FIN7]] - grupo relacionado, mesma família de atores
- [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]] - técnica pai
- [[t1546-011-application-shimming|T1546.011 - Application Shimming]] - técnica irmã (shimming)
- [[t1055-process-injection|T1055 - Process Injection]] - técnica relacionada
- [[t1574-002-dll-side-loading|T1574.002 - DLL Side-Loading]] - técnica complementar
- [[m1038-execution-prevention|M1038 - Execution Prevention]]
---
*Fonte: [MITRE ATT&CK - T1546.009](https://attack.mitre.org/techniques/T1546/009)*