DCSync abuse de la réplication pour lire l'annuaire ; DCShadow en abuse pour écrire. Vous enregistrez temporairement un contrôleur de domaine malveillant dans la configuration, l'utilisez pour pousser des modifications arbitraires (une valeur de SID history, une appartenance de groupe, une ACL) dans un vrai DC via le protocole de réplication, puis le désenregistrez. Comme la modification arrive sous forme de réplication normale DC-à-DC plutôt que d'écriture LDAP ordinaire, elle contourne la majeure partie de la journalisation des changements d'annuaire et de la corrélation SIEM. C'est une primitive de domination de domaine et de persistance, pas un moyen d'entrée : vous avez déjà besoin des droits de réplication.
Comment ça fonctionne#
DCShadow (Mimikatz lsadump::dcshadow) s'exécute en deux parties :
- Enregistrer et servir (en tant que SYSTEM sur n'importe quel hôte joint au domaine) : Mimikatz ajoute les SPN et les objets
nTDSDSA/serveur qui font passer l'hôte pour un DC, puis héberge le serveur RPC MS-DRSR minimal qui servira les données falsifiées. - Pousser (en tant qu'utilisateur disposant de droits de réplication, généralement Domain/Enterprise Admin) : une seconde session Mimikatz déclenche
IDL_DRSReplicaAdd, forçant un DC légitime à tirer les modifications préparées depuis le DC malveillant.
# Session 1 (SYSTEM): stage the change and host the rogue DC
lsadump::dcshadow /object:targetUser /attribute:primaryGroupID /value:512
# Session 2 (Domain Admin): force replication to push it
lsadump::dcshadow /push
Ce que vous poussez#
N'importe quoi dans l'annuaire, choisi pour être discret et durable :
sIDHistorysur un compte que vous contrôlez, injectant un SID privilégié (domain admins, enterprise admins) pour un accès permanent.primaryGroupID= 512 pour faire d'un utilisateur un administrateur de domaine sans apparaître dans la listememberdu groupe.- Des modifications de
ntSecurityDescriptor(par exemple sur AdminSDHolder) pour planter une porte dérobée ACL durable. - Des changements d'attributs qui annulent les nettoyages des défenseurs, réappliqués à la demande.
Notes d'exploitation#
- Le DC malveillant n'existe que pour le push et est démantelé ensuite, il n'y a donc pas d'objet DC malveillant durable ; ce qui persiste, c'est la modification que vous avez injectée.
- Le chemin de réplication signifie que la modification ne génère pas les événements de modification du service d'annuaire qu'une écriture LDAP produirait, ce qui est tout l'intérêt.
- Elle nécessite des droits de réplication (DA/EA, ou un principal disposant de
DS-Replication-Get-Changesplus les droitsDS-Install-Replica/d'écriture sur la configuration), elle est donc post-compromission ; associez-la à une lecture DCSync pour savoir exactement quoi écraser. - Les variantes
minimal/DcShadowréduisent les droits nécessaires dans certaines configurations, mais le cas de niveau DA est le plus fiable.
Outils#
- Mimikatz (
lsadump::dcshadow,lsadump::dcshadow /push) : l'implémentation de référence (deux sessions). - Impacket (
ntlmrelayx/secretsdumppour la lecture complémentaire) : reconnaissance de ce qu'il faut écraser.