T1547.004 in MITRE ATT&CK: Spiegazione di Winlogon Helper
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
Rilevamenti
Possibili Punti di Persistenza [ASEPs – Hives Winlogon/AppInit] (via registry_event)
Visualizza
Possibili Punti di Persistenza [ASEPs – Hive Software/NTUSER] (via cmdline)
Visualizza
Possibilità di Esecuzione Tramite Linee di Comando PowerShell Nascoste (via cmdline)
Visualizza
Possibili Punti di Persistenza [ASEPs – Hive Software/NTUSER] (via registry_event)
Visualizza
IOC (Email) per rilevare: T1547.004 Winlogon Helper in MITRE ATT&CK Spiegato
Visualizza
IOC (HashSha256) per rilevare: T1547.004 Winlogon Helper in MITRE ATT&CK Spiegato
Visualizza
Rilevamento di Modifiche Malevole nelle Chiavi del Registro di Winlogon [Evento del Registro di Windows]
Visualizza
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:- Creare un payload malevolo (ad es.,
C:Tempevil.exe). - Aggiungere un nuovo valore a
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShellpuntato al payload. - Verificare che il cambiamento abbia avuto effetto, quindi disconnettersi/accedere nuovamente per raggiungere l’esecuzione.
- Creare un payload malevolo (ad es.,
-
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." }