# 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)*