Magic Quadrant™ pour la gestion des accès privilégiés 2025 : Netwrix reconnue pour la quatrième année consécutive. Téléchargez le rapport.

Plateforme
Centre de ressourcesBlog
Ce qu'est une attaque DCShadow et comment se défendre contre elle

Ce qu'est une attaque DCShadow et comment se défendre contre elle

Sep 28, 2022

DCShadow est une attaque de fin de chaîne qui permet à un adversaire avec des identifiants privilégiés compromis d'enregistrer un contrôleur de domaine (DC) Active Directory malveillant et de répliquer des modifications malicieuses, telles que des modifications qui les aident à établir une persistance. Plus spécifiquement, DCShadow est une commande dans le module lsadump de l'outil de piratage open-source Mimikatz. Introduit début 2018, il utilise des instructions spécifiques dans le protocole Microsoft Directory Replication Service Remote (MS-DRSR) protocol.

Les attaques DCShadow sont difficiles à prévenir. Comme DCSync, cela n'exploite pas une vulnérabilité qui pourrait être corrigée ; cela exploite des fonctions valides et nécessaires du processus de réplication, qui ne peuvent être désactivées ou désactivées. Les attaques DCShadow sont également difficiles à détecter, puisque les modifications que l'adversaire demande sont enregistrées, traitées et validées comme une réplication de domaine légitime.

Aperçu d'une attaque DCShadow

Voici un aperçu des étapes d'une attaque DCShadow :

  1. Un attaquant obtient des permissions d'Admin de Domaine ou d'Admin d'Entreprise, par exemple, en compromettant un compte de service géré par groupe mal sécurisé.
  2. The attacker uses DCShadow to register a computer object (such as a workstation) as a domain controller by making changes to the AD configuration schema and the workstation’s SPN. Now, AD thinks the workstation is a DC so it’s trusted to replicate changes.
  3. L'attaquant soumet des modifications pour la réplication, telles que des modifications des données de mot de passe, des détails de compte ou de l'appartenance à des groupes de sécurité. Une fois la réplication déclenchée, les modifications sont publiées et validées par les autres DC.
  4. L'attaquant utilise DCShadow pour retirer le contrôleur de domaine voyou de la AD database afin de dissimuler son activité.

Un exemple simple : Répliquer un changement mineur en utilisant DCShadow

Supposons que vous êtes un attaquant qui a enregistré un contrôleur de domaine (DC) malveillant en utilisant DCShadow. Voici les étapes que vous pourriez suivre pour répliquer un changement simple sur tous les DCs dans le domaine.

Étape 1. Passez à l'utilisation du compte SYSTEM.

Le processus qui crée la modification devant être répliquée doit être exécuté en tant que compte SYSTEM, plutôt qu'un compte d'utilisateur de domaine, car seules les modifications provenant des DCs enregistrés seront répliquées. Si vous ne faites pas cela, vous pourriez voir ce code d'erreur :

      ERROR kuhl_m_lsadump_dcshadow_force_sync_partition ; IDL_DRSReplicaAdd DC=JEFFLAB,DC=local 0x80090322 (2148074274)
      

Une manière d'exécuter un processus en tant que SYSTEM dans Mimikatz est d'utiliser PSExec:

      PsExec.exe –i –s cmd.exe
      

Pour confirmer que vous fonctionnez maintenant sous SYSTEM, utilisez la commande whoami .

Image

Ensuite, utilisez token::elevate pour vous assurer que tous les threads s'exécutent en tant que SYSTEM.

Image

Étape 2. Poussez un changement souhaité.

Maintenant, vous pourrez pousser un changement. Pour cet exemple simple, changeons la description du compte Administrateur :

      lsadump::dcshadow /object:CN=Administrator,CN=Users,DC=JEFFLAB,DC=local /attribute:description /value:”DCShadow was here!”
      
Image

Étape 3. Déclenchez la réplication.

Pour déclencher la réplication, ouvrez une autre fenêtre et exécutez la commande suivante en tant que compte Domain Admin compromis (et non en tant que SYSTEM) :

      lsadump::dcshadow /push
      

La fenêtre d'origine affichera les événements résultants :

Image

Étape 4. Confirmez le changement.

Allez au contrôleur de domaine et vérifiez le champ de description :

Image

Une attaque réelle : Utiliser DCShadow pour obtenir de la persistance

Voyons maintenant comment un adversaire utiliserait DCShadow dans une attaque réelle. Pour exécuter DCShadow, ils doivent déjà posséder les droits d'administrateur de domaine ou d'administrateur d'entreprise, alors pourquoi auraient-ils besoin d'utiliser DCShadow ?

Une raison est qu'ils peuvent ne pas vouloir utiliser un compte d'Admin de Domaine pour l'exfiltration de données, car ces comptes sont souvent étroitement surveillés et déclenchent des alarmes plus facilement. Une autre raison est d'obtenir des droits administratifs dans d'autres forêts.

Mais l'une des raisons les plus courantes est de créer de la persistance — de sorte que même si l'accès au compte administrateur compromis est perdu, ils conserveront un point d'ancrage dans le domaine. Examinons une manière dont nous pourrions utiliser DCShadow pour atteindre la persistance.

Le flux de travail de base est le suivant :

  1. Examinez l'objet AdminSDHolder, qui fournit des autorisations modèles pour les comptes et groupes protégés dans le domaine.
  2. Ajoutez un nouveau compte avec des permissions de Contrôle total à AdminSDHolder.
  3. Répliquez le changement en utilisant DCShadow.

Étape 1. Examinez l'objet AdminSDHolder.

Pour examiner l'objet AdminSDHolder, nous utiliserons du PowerShell de base :

      $AdminSDHolder = [adsi]'LDAP://CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local'

$SDDL = $AdminSDHolder.ObjectSecurity.Sddl
      
Image

Nous pouvons utiliser la commande ConvertFrom-SDDLString pour convertir le résultat en un format plus lisible :

Image

Étape 2. Ajoutez un compte au conteneur AdminSDHolder.

Pour créer de la persistance, nous devons ajouter un compte à AdminSDHolder en utilisant son SID. Tout ce que nous devons savoir est le nom distinctif de l'objet, et la commande suivante stockera son SID dans la variable $UserSid:

      $UserToAdd = [adsi]'LDAP://CN=Bob Loblaw,OU=Business,OU=Users,OU=JEFFLAB,DC=JEFFLAB,DC=local'

$UserSid  = New-Object System.Security.Principal.SecurityIdentifier($UserToAdd.objectSid[0], 0)
      
Image

Nous pouvons maintenant utiliser cette variable pour ajouter le compte à AdminSDHolder, lui accordant des autorisations de Contrôle total. Nous utiliserons la commande PowerShell suivante :

      $NewSDDL = $SDDL + "(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;" + $UserSid.Value + ")"
      

Si nous examinons à nouveau AdminSDHolder, nous voyons maintenant l'utilisateur comme la dernière entrée :

Image

Étape 3. Répliquez le changement en utilisant DCShadow.

Maintenant que nous avons les nouvelles permissions sous forme de valeur d'attribut, il est facile de les appliquer avec DCShadow. Exécutant en tant que SYSTEM, nous pouvons utiliser la commande suivante pour effectuer le changement souhaité :

      mimikatz.exe "lsadump::dcshadow /object:CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local /attribute:ntsecuritydescriptor /value:[output from the previous command]”
      
Image

Ici, vous pouvez voir que le changement est prêt à être répliqué :

Image

Ensuite, nous utilisons la commande lsadump::dcshadow/push pour déclencher la réplication. Ici, vous pouvez voir l'objet AdminSDHolder mis à jour avec notre utilisateur ajouté ; bientôt, cela sera sur chaque groupe protégé dans le domaine.

Image

Prévention des attaques DCShadow

Ceci n'est qu'une des manières dont DCShadow peut être utilisé pour établir une persistance ou compromettre autrement la sécurité d'Active Directory. Il est difficile de prévenir ces attaques car elles exploitent les fonctionnalités natives d'Active Directory, et non des failles qui peuvent être corrigées par des correctifs.

La clé principale de la défense réside dans le fait qu'un attaquant doit avoir des droits d'administrateur de domaine ou d'administrateur d'entreprise pour réaliser l'attaque DCShadow. Par conséquent, la stratégie la plus efficace pour bloquer cette attaque est d'empêcher quiconque d'obtenir une adhésion non autorisée à ces groupes de sécurité puissants.

Détection des attaques DCShadow

Un avantage clé de l'utilisation de DCShadow est qu'un attaquant peut effectuer des modifications qui ne seront pas enregistrées par les journaux d'événements — puisque les modifications sont faites par réplication, elles sont considérées comme légitimes. Néanmoins, vous pouvez trouver des signes qu'une attaque est en cours en utilisant les journaux d'événements. Voici les événements clés à surveiller.

Modifications des SPN d'ordinateur

Pour que DCShadow fonctionne, deux valeurs de nom de principal de service (SPN) particulières doivent être ajoutées à l'ordinateur qui va se faire passer pour le contrôleur de domaine (l'ordinateur à partir duquel l'attaquant exécute DCShadow). Cela peut être n'importe quel ordinateur joint au domaine.

Ces deux SPNS sont :

  • Nom principal du service du serveur de catalogue global — Ce dernier a le format GC/<nom d'hôte DNS>/<nom de la forêt DNS>.
  • Service de réplication d'annuaire (DRS) SPN — Ce format est <GUID de l'interface DRS>/<GUID DSA>/<nom de domaine DNS>, où <GUID de l'interface DRS> est toujours E3514235–4B06–11D1-AB04–00C04FC2DCD2.

Nous pouvons détecter les signes d'attaques DCShadow en recherchant l'ajout de ces SPN à un ordinateur qui n'est pas un contrôleur de domaine, suivi de la suppression de ces SPN. (Notez que dans notre laboratoire, DCShadow supprime uniquement le SPN du serveur Global Catalog ; il laisse le SPN DRS.)

Nous pouvons utiliser l'ID d'événement 4742 pour surveiller ces changements. Cet événement indique quel utilisateur a initié le changement, ainsi vous savez quel compte d'administrateur de domaine est utilisé pour réaliser l'attaque.

Image

Création et suppression d'un DC

Une autre étape de l'attaque DCShadow consiste à créer un DC dans le conteneur Sites de l'espace de noms Configuration. Cela se fait en créant un serveur et les paramètres NTDS pour ce serveur. Vous pouvez voir ces objets pour notre contrôleur de domaine légitime ci-dessous :

Image

DCShadow va créer un DC et ses paramètres et ensuite, une fois la modification répliquée, il supprimera immédiatement les entrées pour couvrir ses traces. Cela laissera derrière lui une séquence étrange d'événements où un nouveau DC a été ajouté puis retiré.

L'ajout peut être suivi avec l'ID d'événement 5137, qui contient le nom du contrôleur de domaine voyou, son GUID et sa classe d'objet, ainsi que le compte responsable de sa création :

Image

L'ID d'événement 5141 affichera les mêmes informations pour la suppression du DC :

Image

Événement de réplication inhabituel

Il est également possible de détecter les attaques DCShadow en surveillant la réplication. Cependant, les événements de réplication déclenchés peuvent être difficiles à différencier des événements de réplication authentiques.

Néanmoins, l'Event ID 4929 peut être un indice utile, car il indique qu'un contexte de nommage source a été supprimé et désignera le DC malveillant comme source. Constater cet événement pour un ordinateur qui n'est pas un contrôleur de domaine reconnu devrait susciter une alerte.

Image

Échec de la réplication

De plus, la paire d'événements 4935 & 4936 indique un échec de réplication que vous pouvez souvent relier à DCShadow.

Comment Netwrix peut aider

Netwrix StealthDEFEND est une solution de premier plan pour détecter et répondre aux attaques DCShadow :

Détection

Netwrix StealthDEFEND offre une détection de menaces DCShadow intégrée. Il surveille en temps réel tous les événements de réplication et de modification de domaine pour un comportement indicatif d'attaques DCShadow. En particulier, il est attentif à l'ajout et à la suppression de DCs et surveille le trafic de réplication.

Voici un exemple dans lequel Netwrix StealthDEFEND a détecté l'ajout d'un nouveau contrôleur de domaine :

Image

L'ajout d'un DC est suffisamment suspect, mais le rapport souligne également que la machine exécute Windows 10, qui ne prend pas en charge le rôle de contrôleur de domaine. En développant les détails de l'événement, nous pouvons voir les modifications spécifiques qui ont été effectuées dans le cadre de l'attaque DCShadow :

Image

Réponse

Bien que la détection rapide des attaques DCShadow soit critique, elle n’est pas suffisante, surtout parce que cela signifie qu'un adversaire a compromis un compte hautement privilégié. Mais simplement désactiver ce compte peut être insuffisant, car au moment où vous repérez une attaque DCShadow, l'adversaire a probablement déjà à sa disposition et utilise un ensemble d'autres ressources et options du réseau.

Netwrix StealthDEFEND offre une multitude d'options de réponse automatisées qui vous permettent de créer facilement un playbook efficace pour chaque menace ou vulnérabilité anticipée. Dans le cas d'une attaque DCShadow, le playbook devrait inclure les étapes suivantes :

  • Avertissez les bonnes personnes dans l'organisation qu'une attaque a eu lieu et fournissez-leur les informations nécessaires pour réagir efficacement. Netwrix StealthDEFEND fournit tous les détails critiques de l'attaque, y compris l'auteur, la source et la cible. De plus, il facilite une communication rapide grâce à une intégration facile avec Slack, Microsoft Teams, ServiceNow et d'autres systèmes en utilisant PowerShell ou des facilités de webhook.
Image
  • Bloquez le compte ou la station de travail fautif pour empêcher toute réplication, authentification ou autre action supplémentaire :
Image

FAQ

Qu'est-ce que DCShadow ?

DCShadow est une commande dans l'outil Mimikatz qui permet à un adversaire d'enregistrer un contrôleur de domaine malveillant et de répliquer des modifications malicieuses dans le domaine.

Comment fonctionne une attaque DCShadow ?

Un attaquant enregistre son ordinateur en tant que contrôleur de domaine en modifiant le schéma de configuration de l'AD et la valeur SPN du poste de travail. Ensuite, il peut répliquer les modifications, y compris les changements pour assurer sa persistance dans le domaine.

Comment peut-on détecter les attaques DCShadow ?

La meilleure façon de détecter les attaques DCShadow est d'utiliser une solution automatisée qui surveille en continu l'ajout suspect de contrôleurs de domaine et qui contrôle le trafic de réplication pour y déceler toute activité anormale.

Quelle est la meilleure manière de répondre à une attaque DCShadow ?

Lorsqu'une attaque DCShadow est détectée, le temps est essentiel. Par conséquent, il est préférable de disposer d'un flux de travail automatisé qui signale immédiatement l'événement à l'équipe de sécurité et bloque le compte pour empêcher toute modification supplémentaire dans le domaine.

Partager sur

En savoir plus

À propos de l'auteur

Un homme en veste bleue et chemise carreaux sourit pour lappareil photo

Jeff Warren

Directeur des produits

Jeff Warren supervise le portefeuille de produits Netwrix, apportant plus d'une décennie d'expérience dans la gestion et le développement de produits axés sur la sécurité. Avant de rejoindre Netwrix, Jeff dirigeait l'organisation des produits chez Stealthbits Technologies, où il a utilisé son expérience en tant qu'ingénieur logiciel pour développer des solutions de sécurité innovantes à l'échelle de l'entreprise. Avec une approche pratique et un don pour résoudre des défis de sécurité complexes, Jeff se concentre sur la création de solutions pratiques qui fonctionnent. Il est titulaire d'un BS en Systèmes d'Information de l'Université du Delaware.