SOC Prime Bias: High

26 Mar 2026 16:24

T1547.004 in MITRE ATT&CK: Spiegazione di Winlogon Helper

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
T1547.004 in MITRE ATT&CK: Spiegazione di Winlogon Helper
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sintesi

L’articolo spiega il metodo di persistenza Winlogon Helper DLL tracciato come T1547.004 e mostra come gli avversari manipolano le chiavi di registro di Winlogon per caricare codice malevolo durante il logon dell’utente. Sono citati esempi reali legati alla campagna ToyBraker, al malware KamiKakaBot, e a un campione noto come Mandela.exe. L’accento è posto sui cambiamenti del registro che innescano l’esecuzione automatica di DLL o eseguibili malevoli quando un sistema si avvia o un utente si connette.

Indagine

I ricercatori hanno documentato attaccanti che creano account utente non autorizzati e alterano i valori del registro Winlogon come LegalNoticeText, DefaultUserName, AutoLogonCount e Shell per mantenere l’accesso. Campioni di malware e casi di intrusioni hanno anche mostrato l’uso di strumenti da linea di comando come net user e reg add per iniettare impostazioni malevoli e avviare payload PowerShell durante il processo di login.

Mitigazione

I difensori dovrebbero monitorare attentamente e limitare le modifiche alle chiavi di registro Winlogon, applicare controlli di minimo privilegio alla creazione di account e utilizzare il controllo delle applicazioni per bloccare DLL non fidate o non firmate. Revisioni regolari dei task pianificati, dei servizi e dei percorsi di avvio possono inoltre aiutare a identificare cambiamenti di persistenza non autorizzati.

Risposta

Quando viene scoperta un’attività sospetta nel registro di Winlogon, isolare l’endpoint interessato, catturare prove volatili e ripristinare i valori del registro modificati a uno stato noto come valido. Un’indagine forense dovrebbe poi cercare eventuali ulteriori meccanismi di persistenza e analizzare l’host per componenti di malware correlati.

"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>Azione</b> – Crea Account Locale<br/><b>Tecnica</b>: T1136.001 Crea Account: Account Locale<br/><b>Descrizione</b>: Aggiunge un nuovo utente locale utilizzando il comando net user."] class action_create_account action tool_net_user["<b>Strumento</b> – comando net user<br/><b>Scopo</b>: Crea o modifica account Windows locali."] class tool_net_user tool action_modify_registry["<b>Azione</b> – Modifica Registro Winlogon<br/><b>Tecnica</b>: T1112 Modifica Registro<br/><b>Descrizione</b>: Modifica chiavi Winlogon (Notify, Userinit, Shell, DefaultUserName, AutoLogonCount) tramite reg add."] class action_modify_registry action tool_reg_add["<b>Strumento</b> – comando reg add<br/><b>Scopo</b>: Aggiungi o modifica valori del registro di Windows."] class tool_reg_add tool persistence_winlogon_helper["<b>Persistenza</b> – Winlogon Helper DLL<br/><b>Tecnica</b>: T1547.004 Winlogon Helper DLL<br/><b>Descrizione</b>: Carica DLL o eseguibile malevolo durante il logon dell’utente, fornendo esecuzione elevata."] class persistence_winlogon_helper persistence technique_T1547_004["<b>Tecnica</b> – T1547.004<br/><b>Nome</b>: Winlogon Helper DLL<br/><b>Descrizione</b>: Registra una DLL per essere caricata da Winlogon, garantendo persistenza e aumento dei privilegi."] class technique_T1547_004 technique malware_kamkaka["<b>Malware</b> – KamiKakaBot<br/><b>Usi</b>: Persistenza Winlogon Helper DLL."] class malware_kamkaka malware malware_mandela["<b>Malware</b> – Mandela.exe<br/><b>Usi</b>: Persistenza 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 –>|abilita| persistence_winlogon_helper action_modify_registry –>|abilita| persistence_winlogon_helper persistence_winlogon_helper –>|implementa| technique_T1547_004 technique_T1547_004 –>|osservata_in| malware_kamkaka technique_T1547_004 –>|osservata_in| malware_mandela "

Flusso di attacco

Esecuzione della simulazione

Prerequisito: Il Controllo Pre-Flight di Telemetria e Baseline deve essere superato.

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (T1547.004) progettata per attivare la regola di rilevamento. I comandi e la narrazione producono direttamente la telemetria attesa dalla logica di rilevamento.

  • Narrare & Comandi di Attacco:
    Un attaccante che ha ottenuto diritti di amministratore locale desidera la persistenza attraverso i riavvii. Sceglie il classico dirottamento della “Shell” di Winlogon perché viene eseguito prima che il desktop dell’utente si carichi ed elude molti prodotti AV endpoint. I passi sono:

    1. Creare un payload malevolo (ad es., C:Tempevil.exe).
    2. Aggiungere un nuovo valore a HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell puntato al payload.
    3. Verificare che il cambiamento abbia avuto effetto, quindi disconnettersi/accedere nuovamente per raggiungere l’esecuzione.
  • Script di Test di Regressione:

    #-------------------------------------------------
    # Test di Regressione – Dirottamento della Shell di Winlogon (T1547.004)
    #-------------------------------------------------
    param(
        [string]$PayloadPath = "C:Tempevil.exe",
        [string]$BackupPath = "$env:Tempwinlogon_shell_backup.txt"
    )
    
    # 1. Distribuire un payload fittizio (una semplice copia di calc.exe per demo)
    if (-not (Test-Path $PayloadPath)) {
        Copy-Item "$env:SystemRootSystem32calc.exe" $PayloadPath -Force
    }
    
    # 2. Salvare il valore corrente della Shell (se presente)
    $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon"
    $currentShell = (Get-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue).Shell
    Set-Content -Path $BackupPath -Value $currentShell -Encoding UTF8
    
    # 3. Impostare il valore malevolo della Shell
    Set-ItemProperty -Path $regPath -Name Shell -Value $PayloadPath -Force
    
    Write-Host "[+] Shell di Winlogon malevola impostata su $PayloadPath"
    Write-Host "[+] Valore originale salvato su $BackupPath"
  • Comandi di Pulizia:

    #---------------------------------
    # Pulizia – Ripristinare Shell di 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)) {
            # Il valore originale era vuoto – rimuovi la proprietà
            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 di Winlogon ripristinata allo stato originale."
    } else {
        Write-Warning "File di backup non trovato – richiesta ispezione manuale."
    }