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

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

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

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

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

Категории

Все категории
Loading categories
ShadowSpray — Инструмент для распыления Shadow Credentials по всему домену в надежде злоупотребить давно забытыми DACLs GenericWrite/GenericAll на других объектах в домене. | Kitploit
Инструменты/GitHubGitHub/dec0ne/shadowspray
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеАутентификацияRed Teaming
GitHubdec0ne/shadowspray

ShadowSpray

Инструмент для распыления Shadow Credentials по всему домену в надежде злоупотребить давно забытыми DACLs GenericWrite/GenericAll на других объектах в домене.

Репозиторий
490793 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

ShadowSpray

Инструмент для массового применения Shadow Credentials ко всему домену в надежде использовать давно забытые права GenericWrite/GenericAll DACL на другие объекты в домене.

Зачем нужен этот инструмент

Во многих проектах я вижу (в BloodHound), что группа "Everyone" / "Authenticated Users" / "Domain Users" или другая широкая группа, содержащая почти всех пользователей домена, имеет права GenericWrite/GenericAll DACL на другие объекты в домене.

example

Эти права можно использовать для добавления Shadow Credentials на целевой объект и получения его TGT и NT-хэша.

Мне пришло в голову, что можно просто попробовать массово применить Shadow Credentials ко всему домену и посмотреть, что сработает (очевидно, такой подход больше подходит для не скрытных проектов, не используйте это в red team, где требуется скрытность). Когда Shadow Credentials успешно добавлены, мы просто выполняем весь процесс PKINIT + UnPACTheHash — и вуаля, получаем NT-хэши.

Поскольку процесс очень быстрый, его можно использовать в самом начале проекта, и, надеюсь, у вас уже будут скомпрометированы некоторые пользователи и компьютеры до того, как вы начнёте основную работу.

Примечание: я переиспользовал много кода из моего предыдущего инструмента, поэтому антивирусы/EDR могут пометить это как KrbRelayUp...

Как работает этот инструмент

Это происходит примерно так:

  1. Войти в домен с предоставленными учётными данными (или использовать текущую сессию).
  2. Проверить, что функциональный уровень домена — 2016 (иначе остановиться, так как атака Shadow Credentials не сработает).
  3. Собрать список всех объектов в домене (пользователей и компьютеров) из LDAP.
  4. Для каждого объекта в списке выполнить следующее:
    1. Попробовать добавить KeyCredential в атрибут объекта "msDS-KeyCredentialLink".
    2. Если это удалось, использовать PKINIT для запроса TGT с помощью добавленного KeyCredential.
    3. Если это удалось, выполнить атаку UnPACTheHash для получения NT-хэша пользователя/компьютера.
    4. Если указан параметр --RestoreShadowCred: удалить добавленный KeyCredential (очистить за собой...)
  5. Если указан параметр --Recursive: выполнить тот же процесс для каждой учётной записи пользователя/компьютера, которые мы успешно скомпрометировали.

ShadowSpray поддерживает CTRL+C, поэтому если вы захотите остановить выполнение в любой момент, просто нажмите CTRL+C — ShadowSpray отобразит все полученные NT-хэши перед выходом (как показано в демонстрации ниже).

Демонстрация

https://user-images.githubusercontent.com/54464773/194827503-b1eead1a-e09a-41ca-9d9b-0a7a6f0ad6a0.mp4

Использование

root@kitploit:~
 __             __   __        __   __   __
/__` |__|  /\  |  \ /  \ |  | /__` |__) |__)  /\  \ /
.__/ |  | /~~\ |__/ \__/ |/\| .__/ |    |  \ /~~\  |


Usage: ShadowSpray.exe [-d FQDN] [-dc FQDN] [-u USERNAME] [-p PASSWORD] [-r] [-re] [-cp CERT_PASSWORD] [-ssl]

    -r   (--RestoreShadowCred)       Restore "msDS-KeyCredentialLink" attribute after the attack is done. (Optional)
    -re  (--Recursive)               Perform ShadowSpray attack recursivly. (Optional)
    -cp  (--CertificatePassword)     Certificate password. (default = random password)


General Options:
    -u  (--Username)                 Username for initial LDAP authentication. (Optional)
    -p  (--Password)                 Password for initial LDAP authentication. (Optional)
    -d  (--Domain)                   FQDN of domain. (Optional)
    -dc (--DomainController)         FQDN of domain controller. (Optional)
    -ssl                             Use LDAP over SSL. (Optional)
    -y  (--AutoY)                    Don't ask for confirmation to start the ShadowSpray attack. (Optional)

TODO

  • Рефакторинг и очистка кода!!!
  • Добавить опцию подробного вывода (Verbose)
  • Добавить опцию сохранения добавленных KeyCredentials / запрошенных TGT / собранных NT-хэшей в файл на диске
  • Версия на Python ;)
  • Буду рад другим предложениям

Смягчение и обнаружение

Взято из статьи Elad Shamir в блоге о Shadow Credentials:

  • Если PKINIT-аутентификация не распространена в среде или необычна для целевой учётной записи, событие "Запрошен билет аутентификации Kerberos (TGT)" (4768) может указывать на аномальное поведение, если атрибуты Certificate Information не пусты.

  • Если для целевой учётной записи настроен SACL для аудита изменений объектов Active Directory, событие "Объект службы каталогов был изменён" (5136) может указывать на аномальное поведение, если субъект, изменяющий msDS-KeyCredentialLink, не является учётной записью синхронизации Azure AD Connect или учётной записью службы ADFS, которые обычно выступают в роли сервера Key Provisioning и легитимно изменяют этот атрибут для пользователей.

  • Более конкретный превентивный контроль — добавление записи управления доступом (ACE) для ЗАПРЕТА принципалу EVERYONE изменять атрибут msDS-KeyCredentialLink для любых учётных записей, не предназначенных для беcпарольной аутентификации Key Trust, и особенно для привилегированных учётных записей.

  • Detecting UnPACing and shadowed credentials от Henri Hambartsumyan из FalconForce

Специфичные для ShadowSpry обнаружения:

  • Этот инструмент пытается изменить каждый объект пользователя/компьютера в домене за очень короткий промежуток времени; при неудаче (в большинстве случаев) генерируется ошибка LDAP_INSUFFICIENT_ACCESS. Можно построить обнаружение на основе этого, используя тот же подход, что и для обнаружения обычного перебора паролей (password spray).

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

  • Elad Shamir за его исследование Shadow Credentials и его отличный инструмент Whisker.
  • Will Schroeder и всем, кто внёс вклад в Rubeus, который мы все знаем и любим. По сути, вся функциональность TGT/TGS/UnPACTheHash была взята оттуда.
  • Cube0x0 Некоторый код (в частности, модификация атрибутов LDAP через WINAPI) был взят из его замечательного инструмента KrbRelay.
  • Michael Grafnetter за его инструмент DSInternals, который использовался здесь для помощи с функциональностью Shadow Credentials.
  • Orange-Cyberdefense за их работу над GOAD, лабораторией Active Directory, которую я использую и которую можно увидеть в демонстрационном видео и изображениях.
  • Martijn Laarman за классный прогресс-бар, используемый в этом инструменте.
Скачать инструмент