SOC Prime Bias: Alto

26 Mar 2026 16:24

T1547.004 no MITRE ATT&CK: Explicação do Auxiliar Winlogon

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
T1547.004 no MITRE ATT&CK: Explicação do Auxiliar Winlogon
shield icon

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

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:

    1. Criar uma carga maliciosa (por exemplo, C:Tempevil.exe).
    2. Adicionar um novo valor em HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell apontando para a carga maliciosa.
    3. Verificar se a alteração surtiu efeito, depois fazer logoff/login para conseguir a execução.
  • 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."
    }