При обычных операциях в среде Windows Kerberos, когда пользователь инициирует запрос TGT (операция Kerberos AS-REQ), он должен указать временную метку, зашифрованную своим паролем (ключом). Метка представляет собой структуру PA-ENC-TIMESTAMP и встроена в PA-DATA (данные предварительной авторизации) AS-REQ. KDC расшифровывает эту метку, чтобы проверить, действительно ли совершающий операцию субъект — тот, за кого себя выдает, а затем возвращает AS-REP и продолжает обычные процедуры аутентификации.
Еще по теме:
- Уклонение от Honeytoken при атаке Active Directory
- Как обойти PowerShell AMSI при атаке на Active Directory
- Как обойти AppLocker при атаке на Active Directory
Подобная проверка называется предварительной аутентификацией Kerberos и необходима для предотвращения автономного угадывания пароля. Но проверку можно отключить выставлением флага DONT_REQ_PREAUTH в UAC учетной записи пользователя. Чтобы отключить проверку для конкретного пользователя, оператору необходимо наличие привилегии GenericWrite или GenericAll.
1 |
Set-DomainObject -Identity [пользователь] -XOR @{useraccountcontrol=4194304} |
Дело в том, что при отключенной предварительной аутентификации Kerberos KDC все равно вернет AS-REP, который, в свою очередь, зашифрован с помощью ключа службы krbtgt. Но зашифрованная часть AS-REP подписывается клиентским ключом, то есть ключом пользователя, для которого отправляется AS-REQ.
Выполнить атаку можно локально с помощью того же Rubeus.
Для удаленной атаки нам нужно узнать пользователей, у которых отключена предварительная аутентификация Kerberos, для чего необходимо иметь учетные данные любого пользователя в домене.
1 |
GetNPUsers.py [домен]/[пользователь]:[пароль] |
Теперь выполним запрос для найденного пользователя.
1 |
GetNPUsers.py [домен]/[пользователь] -k -no-рass -dc-iр [IР] |
Различие между Kerberoasting и AS-REР Roasting состоит в том, что для данной атаки нужно только имя пользователя, то есть можно составить список и проверить сразу несколько имен. Плюс ко всему можно также узнать, какие пользователи зарегистрированы в системе, а какие нет.
Взломать полученный хеш можно с помощью John the Riррer.
Другое различие между Kerberoasting и AS-REР Roasting заключается в том, что AS-REP запрашивает билет проверки подлинности Kerberos (TGT), а не билет проверки подлинности службы (TGS).
Еще по теме:
- Защита от обнаружения при атаке на Active Directory
- Захват Active Directory на виртуальной машине с HackTheBox