DCShadow est une fonctionnalité de l’outil open source mimikatz. Dans un autre billet de blog, nous avons abordé la manière dont les attaquants réussissent à devenir persistants sans être détectés sur un domaine une fois qu’ils ont obtenu les données d’identification d’administrateur. Cependant, DCShadow peut également permettre à un attaquant d’élever ses propres privilèges.
Sélection de contenu connexe :
Comment un administrateur de domaine peut-il élever ses privilèges ? En obtenant des droits d’administrateur dans d’autres forêts. En exploitant l’historique SID, un attaquant peut ajouter des identificateurs de sécurité à son compte d’utilisateur et ainsi obtenir des droits d’administrateur sur des domaines et des forêts approuvés. Dans cet article, nous verrons comment.
Étape 1. Identifier les relations d’approbation
La première étape consiste à identifier les relations d’approbation – ou liens de confiances – existantes. Pour ce faire, différentes manières sont possibles. Cependant, nous nous intéresserons ici à deux méthodes en particulier, qui s’appuient sur l’infrastructure PowerShell : PowerSploit et le module PowerShell de l’Active Directory.
Nous devons vérifier si le filtrage des SID est activé pour chaque relation d’approbation. Si c’est le cas, les SID listés dans l’historique ne peuvent pas être utilisés pour accéder à l’autre forêt liée par la relation d’approbation. Toutefois, si le filtrage est désactivé, le champ est libre. Cette option est souvent désactivée après une migration, par exemple, pour s’assurer que les utilisateurs conservent l’accès aux systèmes et aux données dont ils ont besoin. La commande PowerShell suivante identifiera les liens de confiance et établira une liste des options disponibles, y compris le filtrage SID :
Get-NetDomainTrust | ForEach-Object{Get-ADTrust –filter * -server $_.TargetName}
Le résultat de la commande est visible ci-dessous. Vous pouvez constater qu’il existe un lien de confiance sur le domaine gobias.local sur lequel le filtrage SID est désactivé (SidFilteringQuarantined = False), ce qui nous permettra d’utiliser les SID listés dans l’historique pour accéder aux différentes ressources de ce domaine.
Pour en savoir plus sur le filtrage SID et les relations d’approbation, consultez cet article sur TechNet.
Étape 2. Élévation de privilèges à l’aide de l’historique SID
Ensuite, nous devons ajouter un SID administrateur à notre compte d’utilisateur pour accéder aux ressources de la forêt approuvée. Ici, DCShadow se révèle très pratique pour deux raisons :
- Il est impossible de changer de façon native l’historique SID en utilisant par exemple une application comme AD Users and Computers.
- Grâce à DCShadow, vous pouvez apporter des modifications sans être détecté.
Il suffit de choisir un SID à ajouter à l’historique. Nous éviterons simplement d’utiliser des SID connus et des utilisateurs ou groupes prédéfinis, par exemple les administrateurs et les administrateurs de domaine, étant donné qu’il existe des contrôles mis en place pour permettre à ces SID d’être uniquement assignés à leurs objets équivalents sur d’autres domaines. En utilisant la reconnaissance LDAP, nous devrions être en mesure de trouver un compte d’utilisateur ou un groupe de domaine que nous pourrons ajouter à notre jeton d’accès pour obtenir des droits élevés.
Ajoutons le groupe Administrateurs de la forêt gobias.local à notre compte d’utilisateur en utilisant la commande DCShadow suivante :
lsadump::dcshadow /object:"CN=Jeff Warren,OU=Administrators,OU=Users,OU=JEFFLAB,DC=JEFFLAB,DC=local" /attribute:sidhistory /value:S-1-5-21-1722627474-2472677011-3296483304-1113
Pour afficher la valeur SIDhistory que nous venons tout juste d’ajouter, nous pouvons exécuter le script suivant :
Get-ADUser Jeff -Properties sIDHistory
Assurons-nous que tout a fonctionné en nous connectant de nouveau à l’aide de notre compte d’utilisateur et exécutons la commande whoami /groups pour vérifier que l’appartenance aux groupes a été mise à jour. Dans l’historique SID, le jeton d’accès de notre compte d’utilisateur ne comporte que le groupe que nous lui avons ajouté.
Étape 3. Comment utiliser des privilèges élevés
Une fois les droits d’accès obtenus, il existe de nombreuses méthodes permettant l’extraction de données à partir de la forêt approuvée. L’une des plus efficaces consiste à lancer une attaque DCSync, cette technique ne nécessitant pas d’exécuter du code sur le contrôleur de domaine cible.
Si nous avions essayé de mener une attaque DCSync contre la forêt cible avant d’ajouter l’historique SID à notre compte d’utilisateur, l’accès nous aurait été refusé :
En revanche, une fois l’historique SID ajouté à notre compte d’utilisateur, nous sommes en mesure d’exécuter la même commande avec succès et d’obtenir le hachage du mot de passe de n’importe quel compte, notamment le compte de service krbtgt Kerberos, qui est on ne peut plus utile.
Détection et réponse à une attaque DCShadow
La principale méthode pour détecter une attaque DCShadow consiste à identifier les anomalies récurrentes qui correspondent à l’enregistrement et à l’annulation d’enregistrement de contrôleurs de domaine malveillants et à surveiller les opérations de réplication qu’elles effectuent. Prêt à l’emploi, l’utilitaire Netwrix StealthDEFEND assure une surveillance active de tous les événements de réplication et de modification de domaine afin de détecter la présence d’une attaque DCShadow.
Les stratégies de blocage de l’outil Netwrix Threat Prevention peuvent servir à empêcher le compte ou le poste de travail en cause d’exécuter d’autres activités de réplication, d’authentification ou autres, ce qui permet de ralentir une attaque et de gagner du temps pour y apporter une réponse efficace, éliminant ainsi complètement la menace.