T1547.004 no MITRE ATT&CK: Explicação do Auxiliar Winlogon
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O artigo explica o método de persistência Winlogon Helper DLL rastreado como T1547.004 e mostra como os adversários manipulam as chaves de registro do Winlogon para carregar código malicioso durante o logon do usuário. Referencia exemplos do mundo real ligados à campanha ToyBraker, ao malware KamiKakaBot e a um exemplo conhecido como Mandela.exe. O foco principal está nas mudanças no registro que desencadeiam a execução automática de DLLs ou executáveis maliciosos quando um sistema inicia ou um usuário faz login.
Investigação
Pesquisadores documentaram atacantes criando contas de usuário não autorizadas e alterando valores de registro do Winlogon, como LegalNoticeText, DefaultUserName, AutoLogonCount e Shell, para preservar o acesso. Amostras de malware e casos de intrusão também mostraram o uso de ferramentas de linha de comando como net user e reg add para injetar configurações maliciosas e lançar cargas de PowerShell durante o processo de login.
Mitigação
Os defensores devem monitorar de perto e restringir modificações nas chaves de registro do Winlogon, aplicar controles de privilégio mínimo à criação de contas e usar controle de aplicativos para bloquear DLLs não confiáveis ou não assinadas. Revisões regulares de tarefas agendadas, serviços e locais de inicialização podem ajudar ainda mais a identificar mudanças de persistência não autorizadas.
Resposta
Quando atividade suspeita no registro do Winlogon é descoberta, isole o endpoint afetado, capture evidências voláteis e restaure os valores de registro modificados para um estado conhecido como bom. Uma investigação forense deve então procurar quaisquer mecanismos de persistência adicionais e escanear o host em busca de componentes de malware relacionados.
"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef persistence fill:#c2f0c2 classDef technique fill:#ffd699 classDef malware fill:#f4a6a6 %% Node definitions action_create_account["<b>Ação</b> – Criar Conta Local<br/><b>Técnica</b>: T1136.001 Criar Conta: Conta Local<br/><b>Descrição</b>: Adiciona um novo usuário local usando o comando net user."] class action_create_account action tool_net_user["<b>Ferramenta</b> – comando net user<br/><b>Propósito</b>: Criar ou modificar contas locais do Windows."] class tool_net_user tool action_modify_registry["<b>Ação</b> – Modificar Registro do Winlogon<br/><b>Técnica</b>: T1112 Modificar Registro<br/><b>Descrição</b>: Altera as chaves do Winlogon (Notify, Userinit, Shell, DefaultUserName, AutoLogonCount) via reg add."] class action_modify_registry action tool_reg_add["<b>Ferramenta</b> – comando reg add<br/><b>Propósito</b>: Adicionar ou alterar valores do registro do Windows."] class tool_reg_add tool persistence_winlogon_helper["<b>Persistência</b> – Winlogon Helper DLL<br/><b>Técnica</b>: T1547.004 Winlogon Helper DLL<br/><b>Descrição</b>: Carrega DLL maliciosa ou executável durante o logon do usuário, fornecendo execução elevada."] class persistence_winlogon_helper persistence technique_T1547_004["<b>Técnica</b> – T1547.004<br/><b>Nome</b>: Winlogon Helper DLL<br/><b>Descrição</b>: Registra uma DLL para ser carregada pelo Winlogon, garantindo persistência e escalonamento de privilégios."] class technique_T1547_004 technique malware_kamkaka["<b>Malware</b> – KamiKakaBot<br/><b>Uso</b>: Persistência do Winlogon Helper DLL."] class malware_kamkaka malware malware_mandela["<b>Malware</b> – Mandela.exe<br/><b>Uso</b>: Persistência do Winlogon Helper DLL."] class malware_mandela malware %% Connections showing flow action_create_account –>|usa| tool_net_user action_modify_registry –>|usa| tool_reg_add action_create_account –>|permite| persistence_winlogon_helper action_modify_registry –>|permite| persistence_winlogon_helper persistence_winlogon_helper –>|implementa| technique_T1547_004 technique_T1547_004 –>|observado_em| malware_kamkaka technique_T1547_004 –>|observado_em| malware_mandela "
Fluxo de Ataque
Detecções
Possíveis Pontos de Persistência [ASEPs – Winlogon/AppInit Hives] (via registry_event)
Visualizar
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via cmdline)
Visualizar
A Possibilidade de Execução Através de Linhas Comando PowerShell Ocultas (via cmdline)
Visualizar
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via registry_event)
Visualizar
IOCs (Emails) para detectar: T1547.004 Winlogon Helper no MITRE ATT&CK Explicado
Visualizar
IOCs (HashSha256) para detectar: T1547.004 Winlogon Helper no MITRE ATT&CK Explicado
Visualizar
Detecção de Modificações Maliciosas em Chaves de Registro do Winlogon [Evento de Registro do Windows]
Visualizar
Execução de Simulação
Pré-requisito: O Verificação Preliminar Telemetria & Baseline deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (T1547.004) projetada para acionar a regra de detecção. Os comandos e a narrativa produzem diretamente a telemetria esperada pela lógica de detecção.
-
Narrativa do Ataque & Comandos:
Um atacante que obteve direitos de administrador local busca persistência entre reinicializações. Ele escolhe o clássico sequestro do “Shell” do Winlogon porque é executado antes do carregamento da área de trabalho do usuário e evita muitos produtos AV de endpoint. Os passos são:- Criar uma carga maliciosa (por exemplo,
C:Tempevil.exe). - Adicionar um novo valor em
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShellapontando para a carga maliciosa. - Verificar se a alteração surtiu efeito, depois fazer logoff/login para conseguir a execução.
- Criar uma carga maliciosa (por exemplo,
-
Script de Teste de Regressão:
#------------------------------------------------- # Teste de Regressão – Sequestro de Shell do Winlogon (T1547.004) #------------------------------------------------- param( [string]$PayloadPath = "C:Tempevil.exe", [string]$BackupPath = "$env:Tempwinlogon_shell_backup.txt" ) # 1. Implantar uma carga de teste (uma cópia simples de calc.exe para demonstração) if (-not (Test-Path $PayloadPath)) { Copy-Item "$env:SystemRootSystem32calc.exe" $PayloadPath -Force } # 2. Backup do valor atual do Shell (se existir) $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $currentShell = (Get-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue).Shell Set-Content -Path $BackupPath -Value $currentShell -Encoding UTF8 # 3. Definir valor de Shell malicioso Set-ItemProperty -Path $regPath -Name Shell -Value $PayloadPath -Force Write-Host "[+] Shell malicioso do Winlogon definido para $PayloadPath" Write-Host "[+] Valor original salvo em $BackupPath" -
Comandos de Limpeza:
#--------------------------------- # Limpeza – Restaurar Shell do Winlogon #--------------------------------- $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $backupFile = "$env:Tempwinlogon_shell_backup.txt" if (Test-Path $backupFile) { $original = Get-Content -Path $backupFile -Raw if ([string]::IsNullOrWhiteSpace($original)) { # Valor original estava vazio – remover a propriedade Remove-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue } else { Set-ItemProperty -Path $regPath -Name Shell -Value $original -Force } Remove-Item $backupFile -Force Write-Host "[+] Shell do Winlogon restaurado para o estado original." } else { Write-Warning "Arquivo de backup não encontrado – inspeção manual necessária." }