SOC Prime Bias: Critique

16 Jul 2026 13:54 UTC

LegacyHive : Le bug du service de profil utilisateur Windows qui charge la ruche de registre d’un autre utilisateur, un cauchemar

Author Photo
SOC Prime Team linkedin icon Suivre
LegacyHive : Le bug du service de profil utilisateur Windows qui charge la ruche de registre d’un autre utilisateur, un cauchemar
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

LegacyHive est une vulnérabilité non corrigée d’élévation de privilèges local dans le service du profil utilisateur Windows (ProfSvc). Un attaquant peut utiliser une combinaison d’empoisonnement du registre, de liens symboliques du gestionnaire d’objets et d’une condition de course TOCTOU via des verrous opportunistes pour forcer un service SYSTEM à charger une ruche de registre de l’utilisateur ciblé. Cela permet à un utilisateur à faible privilège d’obtenir un accès non autorisé à des données sensibles du registre ou potentiellement d’obtenir une compromission complète du SYSTEM.

Enquête

Le chercheur Nightmare-Eclipse a développé un proof-of-concept (PoC) qui exploite la discordance entre les opérations de fichiers au niveau SYSTEM et le cheminement contrôlé par l’utilisateur. L’enquête démontre comment modifier la valeur du registre Local AppData peut rediriger le service vers l’espace de noms du gestionnaire d’objets NT. En utilisant un verrou opportuniste (oplock) sur un fichier leurre, l’attaquant peut échanger un lien symbolique au moment exact où le service tente de charger la ruche.

Atténuation

Microsoft doit implémenter la canonisation de chemin pour s’assurer que les chemins résolus restent dans le répertoire de profil utilisateur légitime et rejettent les préfixes de périphérique/gestionnaire d’objets. De plus, les développeurs devraient utiliser la protection de réanalyse (FILE_FLAG_OPEN_REPARSE_POINT) et effectuer des E/S dans le contexte de sécurité de l’utilisateur plutôt que dans le contexte SYSTEM pour prévenir les scénarios de contrôle confus.

Réponse

Les défenseurs devraient immédiatement surveiller les chargements inhabituels du registre (RegLoadKey) pour les comptes non connectés de manière interactive et surveiller la création de répertoires d’objets sous BaseNamedObjectsRestricted. Les outils de contrôle d’application comme WDAC ou AppLocker devraient être utilisés pour empêcher l’exécution de binaires non signés. Une fois que Microsoft aura publié un correctif officiel, il devrait être priorisé pour le déploiement sur toutes les installations de bureau et de serveur Windows.

<div class="wp-block-socprime-category-attack-flow attack-flow-class" data-title="Attack Flow" data-attack-flow="flowchart TD step_data_manipulation["T1565.003 – Data Manipulation: Runtime Data Manipulation: Poisoning Local AppData registry value to point to .globalrootBaseNamedObjectsRestricted"] rules_for_data_manipulation("<b>Rule Name</b>: Possible LegacyHive Exploitation Behavior (via registry_event)<br/><b>Rule ID</b>: a369fa4f-a2b4-4cc7-a6d8-dbc8e083ed32") step_delay_execution["T1678 – Delay Execution: Using FSCTL_REQUEST_BATCH_OPLOCK on decoy UsrClass.dat to stall User Profile Service"] rules_for_delay_execution("<b>Rule Name</b>: Possible LegacyHive Exploitation Behavior (via file_event)<br/><b>Rule ID</b>: f950cb0b-1c08-4ce5-9519-449b43c218f9") step_privilege_escalation["T1068 – Exploitation for Privilege Escalation: Deleting symbolic link to force ProfSvc to load administrator registry hive under attacker session"] rules_for_privilege_escalation("<b>Rule Name</b>: Possible LegacyHive Exploitation Behavior (via cmdline)<br/><b>Rule ID</b>: 5b44a5f0-9e8f-41e0-be1e-ec4946322166<hr/><b>Rule Name</b>: Probable Use of Windows Hacktools [Part3] (via cmdline)<br/><b>Rule ID</b>: 1b1fdfaf-7efb-4a69-88b6-1f4f9a27ad1a<hr/><b>Rule Name</b>: Probable Use of Windows Hacktools [Part3] (via file_event)<br/><b>Rule ID

Flux d’attaque

Résumé exécutif

  • ID de cas de test : TC-20240522-K9P2L
  • TTPs : T1068, T1548
  • Résumé de la logique de règle de détection : Détecte les tentatives d’exploitation de la vulnérabilité LegacyHive en surveillant notepad.exe étant lancé avec le modèle d'API CreateProcessWithLogonW dans la ligne de commande. Format / Langue de la règle de détection :
  • yaml yaml
  • Environnement de sécurité cible : Windows OS, journaux d’événements Windows (Création de processus), EDR/SIEM.
  • Score de résilience (1-5) : 2
  • Justification : La règle repose fortement sur une chaîne spécifique (modèle d'API CreateProcessWithLogonW dans la ligne de commande.) apparaissant dans le champ CommandLine. Un adversaire peut facilement contourner cela en utilisant différents appels API qui aboutissent au même résultat ou en utilisant différents noms de processus au lieu de field. An adversary can easily bypass this by using different API calls that achieve the same result or by using different process names instead of notepad.exe.
  • Principales conclusions : La détection est très spécifique à une seule implémentation d’exploitation et est extrêmement fragile face aux variations mineures dans le vecteur d’attaque.
  • Recommandation : Élargir la détection pour surveiller les variantes de CreateProcess suspectes sur plusieurs binaires courants (par ex., calc.exe, cmd.exe) et surveiller les anomalies du service de profil utilisateur (ProfSvc).

Environnement de simulation et contexte

  • TTPs testées :
    • T1068 : Exploitation pour l’élévation de privilèges
    • T1548 : Abus des mécanismes d’élévation de privilèges
  • Contexte et pertinence des TTP : L’exploitation LegacyHive repose sur le fait de contraindre un service au niveau SYSTEM à effectuer des actions au nom d’un utilisateur. En utilisant modèle d'API CreateProcessWithLogonW dans la ligne de commande. pour engendrer un processus dans un état suspendu, un attaquant peut manipuler l’environnement pour charger une ruche de registre malveillante. La surveillance des artefacts spécifiques de la ligne de commande de cet appel API est destinée à détecter la phase d’exploitation.
  • Environnement cible :
    • OS: Windows 10/11 ou Windows Server 2019/2022
    • Enregistrement : Sysmon (ID d’événement 1) ou journal d’événements de sécurité Windows (ID d’événement 4688) avec audit de la ligne de commande activé.
    • Pile de sécurité : SIEM (par ex., Splunk, Microsoft Sentinel)

Télémetrie & Vérification de la base de référence avant vol

Justification : Avant de simuler l’attaque, nous devons confirmer que l’hôte cible est configuré pour générer les journaux nécessaires, que ces journaux sont ingérés par le SIEM, et que la règle de détection ne se déclenche pas sur une activité bénigne. Sans cette validation, tout résultat de test est peu fiable.

  • 1. Instructions de configuration de la télémetrie :

      1. Assurez-vous que « Audit de la création de processus » est activé via la stratégie de groupe (Configuration ordinateur > Paramètres Windows > Paramètres de sécurité > Configuration avancée de la stratégie d’audit > Suivi détaillé).
      1. Assurez-vous que « Inclure la ligne de commande dans les événements de création de processus » est activé (via le registre : HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemAuditProcessCreationIncludeCmdLine).
      1. Installez Sysmon et assurez-vous que l’ID d’événement 1 (Création de processus) est collecté.
  • 2. Ingestion & Validation de la base de référence :

    • Action (télémetrie bénigne) : Lancer une instance standard de Notepad pour s’assurer que la journalisation de création de processus fonctionne sans déclencher la détection d’exploitation.

      Start-Process "notepad.exe"
    • Requête de validation (ingestion) :

      DeviceProcessEvents
      | where FileName =~ "notepad.exe"
      | where ProcessCommandLine !contains "CreateProcessWithLogonW"

Exécution de la simulation

Prérequis : La vérification de la base de référence et de la télémetrie avant vol doit avoir réussi.

Justification : Cette section détaille l’exécution précise de la technique adverse (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiés et viser à générer exactement la télémetrie attendue par la logique de détection. Des exemples abstraits ou sans rapport entraîneront une erreur de diagnostic.

  • Narratif et commandes de l’attaque : L’attaquant vise à exploiter la vulnérabilité LegacyHive pour escalader les privilèges à SYSTEM. Pour ce faire, ils utilisent un script qui appelle le modèle d'API CreateProcessWithLogonW dans la ligne de commande. API Windows. Le but est de lancer notepad.exe dans un état suspendu. La simulation utilise un wrapper PowerShell pour imiter le modèle d’argument de ligne de commande que la règle de détection recherche, ciblant spécifiquement la chaîne modèle d'API CreateProcessWithLogonW dans la ligne de commande. dans le contexte d’exécution de notepad.exe.

  • Script de test de régression :

    # Simulation de la tentative d'exploitation de LegacyHive via l'injection d'artefacts de ligne de commande
    # Remarque : Ce script simule le modèle de chaîne de ligne de commande pour les tests de détection.
    
    $targetProcess = "notepad.exe"
    $fakeArgument = "CreateProcessWithLogonW"
    
    Write-Host "[+] Démarrage de la simulation de tentative d'exploitation de LegacyHive..."
    
    # Nous utilisons cmd /c pour nous assurer que la chaîne de ligne de commande est explicitement transmise
    # et apparaît dans la télémetrie de création de processus.
    Start-Process "cmd.exe" -ArgumentList "/c $targetProcess $fakeArgument"
    
    Write-Host "[+] Commande de simulation envoyée. Vérifiez le SIEM pour notepad.exe avec CreateProcessWithLogonW dans la ligne de commande."
  • Commandes de nettoyage :

    # Mettre fin à tous les processus notepad ou cmd persistants créés par la simulation
    Stop-Process -Name "notepad" -ErrorAction SilentlyContinue
    Stop-Process -Name "cmd" -ErrorAction SilentlyContinue