# T1547.004 - Winlogon Helper DLL ## Técnica Pai Esta é uma sub-técnica de [[t1547-boot-logon-autostart-execution|T1547 - Execução na Inicialização]]. ## Descrição Adversários podem abusar de funcionalidades do processo `Winlogon.exe` para executar DLLs ou executáveis maliciosos toda vez que um usuário realiza logon no sistema Windows. O `Winlogon.exe` é um componente essencial do sistema operacional responsável pelo processo de logon/logoff, pelo bloqueio de tela e pela sequência de aténção segura (SAS) ativada por `Ctrl+Alt+Delete`. As chaves de registro abaixo são utilizadas para gerenciar programas auxiliares integrados ao Winlogon e são historicamente exploradas para persistência furtiva: - `HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\` - `HKLM\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon\` - `HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\` Dentro dessas chaves, os subvalores mais frequentemente abusados são: | Subvalor | Função legítima | Abuso | |----------|----------------|-------| | `Notify` | DLLs de notificação de eventos de logon | Carregar DLL maliciosa na sessão | | `Userinit` | `userinit.exe` - inicialização do ambiente do usuário | Anexar caminho de executável malicioso | | `Shell` | `explorer.exe` - shell padrão do Windows | Substituir por shell trojanizado | Modificações maliciosas nessas chaves fazem com que o Winlogon carregue código adversário em cada evento de logon, garantindo persistência e execução elevada no contexto do processo de autenticação do sistema. ### Relevância para Brasil e LATAM O grupo [[g0010-turla|Turla]] - associado ao serviço de inteligência russo (FSB) - utilizou sua família de malware [[s0168-gazer|Gazer]] com esta técnica em operações de espionagem contra embaixadas e órgãos governamentais na Europa Oriental e América Latina. No contexto regional, a técnica é especialmente relevante porque muitos endpoints Windows em organizações do [[_sectors|governo]] brasileiro ainda operam com configurações de registro permissivas e sem monitoramento adequado de integridade de chaves críticas. O [[g0102-conti-group|Wizard Spider]] também empregou o [[s0534-bazar|BazarLoader]] com modificações em `Userinit` em campanhas de ransomware que afetaram empresas de manufatura no Brasil. ## Attack Flow ```mermaid graph TB A["🎯 Acesso Inicial<br/>Phishing / Exploit de aplicação exposta"] --> B["⚙️ Execução de Payload<br/>Dropper deposita DLL maliciosa em disco"] B --> C["📝 Modificação de Registro<br/>Winlogon\\Userinit ou Shell ou Notify<br/>apontados para DLL / EXE malicioso"] C --> D{"Gatilho de Persistência"} D -->|Próximo logon do usuário| E["🔄 Winlogon.exe carrega DLL<br/>na inicialização da sessão"] D -->|Reinicialização do sistema| E E --> F["💻 Execução com privilégio<br/>do contexto de logon"] F --> G["📡 C2 / Payload secundário<br/>RAT, backdoor, ransomware"] G --> H["🔒 Persistência estabelecida<br/>Sobrevive a reinicializações e rotações de senha"] ``` ## Como Funciona **Passo 1 - Depósito da DLL maliciosa no sistema de arquivos** O adversário primeiro precisa gravar a DLL ou executável malicioso em algum diretório do sistema - frequentemente mascarado como biblioteca legítima do Windows (`winmm.dll`, `winspool.drv`) ou colocado em `%SystemRoot%\System32\` se o processo de entrega for executado com privilégios administrativos. O malware [[s0168-gazer|Gazer]] do [[g0010-turla|Turla]], por exemplo, armazena seus componentes em subdiretórios de `%APPDATA%` com nomes que imitam aplicações Microsoft legítimas. **Passo 2 - Modificação das chaves de registro do Winlogon** Com privilégios de escrita no registro (geralmente requerendo elevação ou operando em contexto admin), o adversário modifica o valor-alvo. A modificação mais crítica e comum é em `Userinit`, que por padrão contém apenas `C:\Windows\system32\userinit.exe,`. A vírgula no final é intencional e permite que o Windows carregue entradas adicionais; adversários aproveitam isso para concatenar o caminho malicioso: ```powershell # Leitura do valor atual para confirmar alvo Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name Userinit # Modificação para adicionar payload (requer privilégio admin) Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ` -Name "Userinit" ` -Value "C:\Windows\system32\userinit.exe,C:\ProgramData\malware.exe," # Alternativa via subchave Notify (mais furtiva - aponta para DLL) New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\malicious" New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\malicious" ` -Name "DllName" -Value "C:\Windows\System32\evil.dll" New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\malicious" ` -Name "Logon" -Value "WnLogonEvent" ``` **Passo 3 - Ativação na sessão de logon** Na próxima vez que qualquer usuário (incluindo contas de serviço ou o próprio adversário em sessão RDP) realizar logon, o `Winlogon.exe` executa o payload como parte do seu fluxo normal de inicialização de sessão. Como o Winlogon opera em contexto de sistema ou do usuário logado, o payload herdará os privilégios correspondentes. Malwares como [[s1202-lockbit-30|LockBit 3.0]] e [[s0379-revenge-rat|Revenge RAT]] usam essa abordagem para garantir reexecução após reinicializações forçadas em tentativas de resposta a incidentes. ## Detecção ```yaml title: Modificacao Suspeita nas Chaves de Registro do Winlogon id: b9f3c1a7-4d22-4e8b-ae44-7f1c2b3d9e05 status: production description: > Detecta modificações não autorizadas nas chaves de registro controladas pelo Winlogon - padrão consistente com T1547.004. Monitorar Userinit, Shell e subchaves Notify é crítico para detectar persistência furtiva em endpoints Windows. references: - https://attack.mitre.org/techniques/T1547/004/ author: RunkIntel daté: 2026-03-25 tags: - attack.persistence - attack.t1547.004 logsource: category: registry_set product: windows detection: selection_userinit: TargetObject|contains: '\Microsoft\Windows NT\CurrentVersion\Winlogon' TargetObject|endswith: - '\Userinit' - '\Shell' Details|contains: - '.exe,' - '.dll,' filter_legit_userinit: Details|re: '^C:\\Windows\\system32\\userinit\.exe, filter_legit_shell: Details|re: '^explorer\.exe selection_notify: TargetObject|contains: '\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify' TargetObject|endswith: '\DllName' condition: (selection_userinit and not filter_legit_userinit and not filter_legit_shell) or selection_notify falsepositives: - Aplicações de segurança endpoint que monitoram eventos de logon via Notify (ex: alguns EDRs) - Software legítimo de gestão de identidade que modifica Userinit em deployments gerenciados level: high ``` ## Mitigação | ID | Mitigação | Descrição | |---|-----------|-----------| | M1038 | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Usar AppLocker ou Windows Defender Application Control (WDAC) para bloquear execução de DLLs e executáveis não assinados que sejam carregados pelo contexto do Winlogon. Restringir quais binários podem ser referênciados nas chaves de registro do Winlogon. | | M1018 | [[m1018-user-account-management\|M1018 - User Account Management]] | Limitar quais contas possuem privilégio de escrita nas chaves de registro `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`. Aplicar permissões restritivas via Group Policy Object (GPO). | ## Software Associado - [[s0168-gazer|Gazer]] - backdoor do [[g0010-turla|Turla]] com persistência via Winlogon Notify - [[s0534-bazar|BazarLoader]] - usado pelo [[g0102-conti-group|Wizard Spider]] em campanhas de ransomware - [[s1202-lockbit-30|LockBit 3.0]] - usa Userinit para garantir reexecução pós-reinicialização - [[s0379-revenge-rat|Revenge RAT]] - RAT comercial com módulo de persistência via Winlogon - [[s1066-darktortilla|DarkTortilla]] - dropper .NET com capacidade de modificar Shell e Userinit - [[keyboy|KeyBoy]] - implante do [[g0081-tropic-trooper|Tropic Trooper]] com persistência via Winlogon - [[s0375-remexi|Remexi]] - malware iraniano com persistência via Winlogon Notify - [[s0200-dipsind|Dipsind]] - backdoor histórico do [[g0081-tropic-trooper|Tropic Trooper]] ## Referências *Fonte: [MITRE ATT&CK - T1547.004](https://attack.mitre.org/techniques/T1547/004)*