🔥 Атака As-rep Roasting позволяет злоумышленнику воспользоваться отключенной преаутентификацией Kerberos для пользователя с целью компрометации УЗ .
Теория
![](https://habrastorage.org/getpro/habr/upload_files/e71/52d/f54/e7152df5419def4109733d096661d983.png)
Когда Клиент приступает к проверке подлинности, на DC отправляется сообщение ASREQ (Authentication Service Request). ASREQ-сообщение включает в себя UPN (UserPrincipalName aka логин), имя службы, к которой идет обращение (всегда krbtgt), а также штамп времени, зашифрованный с использованием хеша пароля учетной записи пользователя.
![](https://habrastorage.org/getpro/habr/upload_files/0c7/62a/12b/0c762a12bb0934caeb7a6762cd4596f5.png)
Если пользователь имеет отключенную преаутентификацию, то AS_REQ будет содержать всё, кроме зашифрованной метки времени (pA-ENC-TIMESTAMP). Именно по этой причине, при проведении атаки можно вводить любой пароль- он не используется. DC не требует проверки подлинности временной метки. Вместо этого DC сразу же создаёт AS_REP и отправляет его клиенту.
По сути, при таком раскладе, схема аутентификации приобретает такой вид:
![](https://habrastorage.org/getpro/habr/upload_files/342/435/7b0/3424357b068e9ec653bff6bf2be67bfd.png)
Это дает возможность получить TGT путем брутфорса содержимого AS_REP - сообщение содержит в себе билет TGT (Ticket Granting Ticket), зашифрованный с использованием хеша пароля учетной записи krbtgt, и сеансовый ключ, зашифрованный с использованием хеша пароля учетной записи пользователя.
Легитимный запрос AS_REQ и ответ SQ_REP:
![](https://habrastorage.org/getpro/habr/upload_files/750/05a/ef8/75005aef8f876a7a9ba507c551f9048e.png)
Запрос с использованием impacket-GetNPUsers:
![](https://habrastorage.org/getpro/habr/upload_files/aac/a49/b27/aaca49b27bcde814b0d71b10cab90b47.png)
Как видно, padata содержит 1 элемент и не содержит в себе метку времени
Вариант локальной разведки на наличие пользователей с выключенной преаутентификацией с использованием PoSH:
get-aduser -f * -pr DoesNotRequirePreAuth | where {$_.DoesNotRequirePreAuth -eq $TRUE}
Практика
Включенная преаутентификация
Попытка проведения атаки на аккаунт Admin, который имеет включенную преаутентификацию:
impacket-GetNPUsers -request test.local/Admin -format john -outputfile hash.hash -dc-ip 192.168.1.1
![](https://habrastorage.org/getpro/habr/upload_files/a23/312/5a7/a233125a77cc1fddc170bdf423b4c8b3.png)
Как видно, возникает ошибка “UF_DONT_REQUIRE_PREAUTH”, которая говорит о включенной преаутентификации пользователя и, как следствие, ошибки проверки временной метки.
Так выглядит AS_REQ и AS_REP при неудачной попытке атаки:
![](https://habrastorage.org/getpro/habr/upload_files/ae7/e4f/251/ae7e4f251480d9ae6d92bbeeaac14c1e.png)
Выключенная преаутентификация
Попытка проведения атаки на аккаунт asrep-user, который имеет выключенную преаутентификацию:
impacket-GetNPUsers -request test.local/asrep-user -format john -outputfile hash.hash -dc-ip 192.168.1.1
![](https://habrastorage.org/getpro/habr/upload_files/590/618/54d/59061854d81b8ac67dd81b2e79133e1f.png)
Как видно, KDC (AS) не стал проверять метку времени, вернув нам AS-REP и, фактически, билет TGT.
Так выглядит AS_REQ и AS_REP при успешной атаке:
![](https://habrastorage.org/getpro/habr/upload_files/8d2/e40/60c/8d2e4060c31709d43e89f45385e62bd9.png)
Профит
Брутфорсим AS_REP, который представлен в виде хэша в формате john и получаем TGT:
![](https://habrastorage.org/getpro/habr/upload_files/4a8/a3d/077/4a8a3d0779b0e76fc3ba357378cc89d7.png)
По факту, уже есть полностью скомпрометированная учетка.
Явно получаем TGT:
![](https://habrastorage.org/getpro/habr/upload_files/2bc/f6f/34e/2bcf6f34e95e66894dc8aa9735acb772.png)
При получении TGT, можно заэкспорить билет в переменные окружения для последующей авторизации через Kerberos, используя сторонние утилиты.
![](https://habrastorage.org/getpro/habr/upload_files/900/88f/acd/90088facd23d1f4ccb44736dbde644c2.png)
Артефакты
При эксплуатации As-rep Roasting, порядок событий MSGID будет состоять из:
4776 (Аудит отказа) - Компьютер пытался проверить учетные данные УЗ
4625 (Аудит отказа) - УЗ не удалось выполнить вход в систему
4768 (Аудит успеха) - Запрошен билет TGT (Тип шифрования билета: 0х17)
Тип шифрования 0x17 в контексте Kerberos, используемого в системах Windows для аутентификации, соответствует алгоритму шифрования RC4 с ключом HMAC.