ResetNightmare

Exploitation активный

PowerShell-инструмент, реализующий цепочку атаки CVE-2026-27912 для захвата домена Active Directory через злоупотребление UPN.


Установка
git clone https://github.com/Semperis-Community/ResetNightmare.git
cd ResetNightmare
. .\ResetNightmare.ps1
показать оригинал переведено ИИ

ResetNightmare

Инструмент доказательства концепции (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. Если атака успешна, пароль цели был изменён, и атакующий теперь может аутентифицироваться с использованием новых учётных данных.

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

image

Требования

  • Windows с PowerShell.
  • Модуль PowerShell ActiveDirectory.
  • Скрипт использует Rubeus.exe, протестирован с Rubeus, скомпилированным под .NET Framework 4.6.2. Поместите его в текущую директорию или укажите путь к нему с помощью параметра -RubeusPath.
  • Либо:
    • Учётная запись домена, которую вы контролируете и на которой можете записать UPN.
    • Права на создание учётных записей в подразделении (OU) или контейнере (указывается с помощью -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 | Нет | Имя контроллера домена, с которым будет выполняться операция. Если не указан, определяется автоматически. |

ВНИМАНИЕ\ Этот материал предоставляется исключительно в образовательных и информационных целях. Он предназначен для повышения осведомлённости и ответственного устранения уязвимостей безопасности, которые могут существовать на системах, принадлежащих вам или на тестирование которых вы имеете разрешение. Несанкционированное использование данной информации в злонамеренных целях, для эксплуатации уязвимостей или незаконного доступа строго запрещено. Авторы не поддерживают и не одобряют какую-либо противоправную деятельность и снимают с себя ответственность за любые последствия неправомерного использования материала. Кроме того, авторы не гарантируют точность или полноту предоставленной информации и не несут ответственности за ущерб, возникший в результате её применения.

Войдите, чтобы оставить комментарий