# T1546.010 - AppInit DLLs ## Descrição Adversários podem estabelecer persistência e/ou elevar privilégios executando conteúdo malicioso acionado por AppInit DLLs carregadas em processos do Windows. As DLLs (Dynamic-link libraries) específicadas no valor `AppInit_DLLs` das chaves de registro `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows` ou `HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows` são carregadas pela `user32.dll` em práticamente todos os processos que utilizam essa biblioteca - o que, na prática, abrange a grande maioria dos aplicativos Windows, pois `user32.dll` é uma das bibliotecas mais amplamente usadas no sistema operacional. Essa característica transforma a chave `AppInit_DLLs` em um mecanismo de injeção de código de escopo extremamente amplo. Semelhante à [[t1055-process-injection|Injeção de Processo]], esses valores podem ser abusados para obter privilégios elevados ao forçar o carregamento e a execução de uma DLL maliciosa no contexto de outros processos. DLLs maliciosas de AppInit também podem fornecer persistência contínua ao serem acionadas repetidamente pela atividade da API do sistema. O resultado prático é que o código do adversário é executado dentro de processos legítimos, dificultando a detecção e permitindo acesso a recursos de outros processos. É importante notar que a funcionalidade AppInit DLL foi **desabilitada no Windows 8 e versões posteriores quando o Secure Boot está ativado**. No entanto, em ambientes onde o Secure Boot não está configurado - o que ainda é comum em sistemas legados, máquinas virtuais e organizações com políticas de atualização deficientes - a técnica permanece funcional e representa um vetor de ataque relevante. ## Como Funciona O mecanismo AppInit DLL é implementado dentro de `user32.dll` e utiliza a função `LoadLibraryEx` para carregar as DLLs específicadas no registro. O processo de execução ocorre da seguinte forma: 1. **Registro da DLL maliciosa**: O adversário escreve o caminho da DLL maliciosa no valor `AppInit_DLLs` da chave de registro relevante. Isso requer privilégios administrativos, pois a chave reside em `HKLM`. 2. **Configuração de LoadAppInit_DLLs**: O valor `LoadAppInit_DLLs` deve estar definido como `1` para que o mecanismo sejá ativado. Adversários verificam e modificam esse valor conforme necessário. 3. **Carregamento automático via user32.dll**: Quando qualquer processo carrega `user32.dll` - o que ocorre durante a inicialização da maioria dos aplicativos com interface gráfica - o sistema automaticamente carrega todas as DLLs listadas em `AppInit_DLLs`. 4. **Execução no contexto do processo alvo**: A DLL maliciosa é executada com os mesmos privilégios do processo hospedeiro. Se o processo alvo for um aplicativo privilegiado (como o Explorador do Windows ou um serviço de sistema), o código malicioso herda esses privilégios. 5. **Persistência contínua**: Como o carregamento ocorre em práticamente todos os processos com GUI, a DLL maliciosa é carregada repetidamente, garantindo persistência mesmo que processos individuais sejam encerrados. O método é especialmente eficaz para **keylogging** (captura de teclado), **roubo de credenciais** e **monitoramento de comúnicações**, pois a DLL maliciosa pode interceptar chamadas de API dentro de qualquer processo carregado. ## Attack Flow ```mermaid graph TB A["Acesso Inicial<br/>Comprometimento com<br/>privilégios administrativos"] --> B["Modificação do Registro<br/>Escrita em AppInit_DLLs<br/>e LoadAppInit_DLLs=1"] B --> C["DLL Maliciosa em Disco<br/>Payload colocado em caminho<br/>registrado no HKLM"] C --> D["Carregamento Automático<br/>user32.dll carrega DLL<br/>em cada processo iniciado"] D --> E["Execução no Contexto<br/>Código roda com privilégios<br/>do processo hospedeiro"] E --> F1["Keylogging<br/>Captura de teclas<br/>e credenciais"] E --> F2["Hooking de API<br/>Interceptação de<br/>chamadas de sistema"] F1 --> G["Exfiltração e Impacto"] F2 --> G ``` ## Exemplos de Uso ### APT39 (Chafer - Irã) O grupo [[g0087-apt39|APT39]], vinculado ao Ministério de Inteligência do Irã (MOIS), utilizou o mecanismo AppInit DLLs como parte de sua infraestrutura de persistência em campanhas de espionagem direcionadas a telecomúnicações e viagens. O APT39 é conhecido por comprometer operadoras de telecom no Oriente Médio e na África - setores com presença significativa de empresas brasileiras em mercados internacionais. A utilização de AppInit DLLs permite ao grupo manter acesso persistente e realizar coleta de credenciais em escala dentro de redes comprometidas. ### T9000 (Malware de espionagem) O malware [[s0098-t9000|T9000]], uma backdoor sofisticada usada em campanhas de espionagem atribuídas a grupos chineses, utiliza AppInit DLLs como mecanismo de persistência e injeção. O T9000 instala uma DLL de persistência via AppInit_DLLs para garantir que sua funcionalidade de captura de tela e áudio sejá mantida mesmo após reinicializações. A capacidade de se injetar em múltiplos processos simultaneamente amplifica significativamente o escopo de coleta de dados. ### Cherry Picker (Malware financeiro) O malware [[s0107-cherry-picker|Cherry Picker]], documentado em ataques ao setor de varejo e financeiro norte-americano com ramificações na América Latina, abusou do mecanismo AppInit DLLs para realizar scraping de memória de processos de ponto de venda (PoS). A injeção em processos de aplicações de pagamento permitiu a captura de dados de cartões de crédito em trânsito na memória. ### Ramsay (APT air-gap) O framework [[s0458-ramsay|Ramsay]], utilizado para comprometer redes air-gapped, emprega AppInit DLLs como um dos seus mecanismos de persistência em sistemas Windows, demonstrando que a técnica permanece relevante mesmo em cenários de ataque sofisticados e direcionados. ## Detecção ```yaml title: Modificação Suspeita de AppInit_DLLs no Registro status: experimental logsource: category: registry_set product: windows detection: selection_key: TargetObject|contains: - '\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs' - '\Microsoft\Windows NT\CurrentVersion\Windows\LoadAppInit_DLLs' filter_empty: Details: '' condition: selection_key and not filter_empty level: high tags: - attack.privilege_escalation - attack.persistence - attack.t1546.010 ``` **Estrategias adicionais de detecção:** - Monitorar **eventos de modificação de registro** nas chaves `AppInit_DLLs` e `LoadAppInit_DLLs` via Sysmon Event ID 13 - Auditar o carregamento de **DLLs não assinadas ou incomuns** em processos como `explorer.exe`, `svchost.exe` e aplicações de negócio via Sysmon Event ID 7 - Verificar regularmente o conteúdo das chaves `AppInit_DLLs` via scripts de compliance e comparar com baseline aprovado - Implementar regras de detecção no EDR para DLLs carregadas via AppInit que não estejam em listas de permissão - Correlacionar carregamentos de DLL suspeitos com eventos de rede para identificar C2 beacon ## Mitigação | ID | Mitigação | Descrição | |----|-----------|-----------| | [[m1038-execution-prevention\|M1038]] | Execution Prevention | Utilizar controles de aplicação como Windows Defender Application Control (WDAC) ou AppLocker para restringir quais DLLs podem ser carregadas via AppInit_DLLs. Bloquear DLLs não assinadas ou não aprovadas. | | [[m1051-update-software\|M1051]] | Updaté Software | Manter sistemas atualizados para Windows 8+ e garantir que o Secure Boot estejá habilitado. No Windows 8 e posteriores com Secure Boot ativo, a funcionalidade AppInit DLL é desabilitada automaticamente para DLLs não assinadas. | **Controles adicionais recomendados:** - Habilitar e configurar o **Secure Boot** em todos os sistemas Windows - isso desativa efetivamente a funcionalidade AppInit DLL para DLLs não assinadas - Implementar o **Windows Defender Credential Guard** em ambientes com Windows 10+ - Auditar regularmente o valor `AppInit_DLLs` em todos os endpoints via solução de gerenciamento de configuração - Restringir permissões de escrita nas chaves de registro relevantes via GPO ## Contexto Brasil/LATAM A técnica AppInit DLLs possui relevância específica no contexto brasileiro e latino-americano por razões que vão além do escopo técnico. O Brasil possui um dos maiores parques instalados de sistemas Windows legados da região, especialmente em órgãos públicos municipais e estaduais, pequenas e médias empresas, e setores como varejo e saúde - onde o ciclo de atualização de hardware e software tende a ser mais lento. Em ambientes com Windows 7 ou Windows 8 sem Secure Boot - cenário ainda comum em redes governamentais e industriais brasileiras - a técnica AppInit DLL permanece completamente funcional e não requer mitigações especiais para execução. Isso representa uma superfície de ataque considerável que grupos de [[_groups|ameaça]] ativos na região podem explorar. O [[g0087-apt39|APT39]], com foco histórico em telecomúnicações, opera em um setor com vasta presença de empresas brasileiras como Claro, Vivo e TIM, além de suas subsidiárias na América Latina. Embora a atribuição específica de campanhas ao APT39 no Brasil não estejá documentada públicamente, o perfil de vitimologia do grupo inclui operadoras similares às brasileiras em outros países. Adicionalmente, grupos de cibercrime financeiro focados no Brasil - como os responsáveis pelos trojans bancários Grandoreiro, Mekotio e Amavaldo - têm demonstrado capacidade crescente de adotar técnicas de persistência avançadas. A combinação de AppInit DLLs com [[t1055-process-injection|injeção de processos]] é uma evolução natural para esses grupos à medida que amadurecem suas capacidades técnicas. ## Referências - [[t1546-event-triggered-execution|T1546 - Event Triggered Execution]] (técnica pai) - [[t1055-process-injection|T1055 - Process Injection]] (técnica relacionada de injeção) - [[g0087-apt39|APT39]] (grupo ameaça documentado usando esta técnica) - [[s0098-t9000|T9000]] (malware que utiliza AppInit DLLs) - [[s0107-cherry-picker|Cherry Picker]] (malware financeiro com uso documentado) - [[s0458-ramsay|Ramsay]] (framework APT que emprega esta técnica) - [[m1038-execution-prevention|M1038 - Execution Prevention]] (mitigação primária) - [[m1051-update-software|M1051 - Updaté Software]] (mitigação via atualização) --- *Fonte: [MITRE ATT&CK - T1546.010](https://attack.mitre.org/techniques/T1546/010)*