Pull to refresh

Немножко про As-Rep Roasting и его артефакты

Level of difficultyMedium
Reading time2 min
Views1.5K

🔥 Атака As-rep Roasting позволяет злоумышленнику воспользоваться отключенной преаутентификацией Kerberos для пользователя с целью компрометации УЗ .

Теория

Когда Клиент приступает к проверке подлинности, на DC отправляется сообщение ASREQ (Authentication Service Request). ASREQ-сообщение включает в себя UPN (UserPrincipalName aka логин), имя службы, к которой идет обращение (всегда krbtgt), а также штамп времени, зашифрованный с использованием хеша пароля учетной записи пользователя.

Если пользователь имеет отключенную преаутентификацию, то AS_REQ будет содержать всё, кроме зашифрованной метки времени (pA-ENC-TIMESTAMP). Именно по этой причине, при проведении атаки можно вводить любой пароль- он не используется. DC не требует проверки подлинности временной метки. Вместо этого DC сразу же создаёт AS_REP и отправляет его клиенту.

По сути, при таком раскладе, схема аутентификации приобретает такой вид:

Это дает возможность получить TGT путем брутфорса содержимого AS_REP - сообщение содержит в себе билет TGT (Ticket Granting Ticket), зашифрованный с использованием хеша пароля учетной записи krbtgt, и сеансовый ключ, зашифрованный с использованием хеша пароля учетной записи пользователя.

Легитимный запрос AS_REQ и ответ SQ_REP:

Запрос с использованием impacket-GetNPUsers:

Как видно, 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

Как видно, возникает ошибка “UF_DONT_REQUIRE_PREAUTH”, которая говорит о включенной преаутентификации пользователя и, как следствие, ошибки проверки временной метки.

Так выглядит AS_REQ и AS_REP при неудачной попытке атаки:

Выключенная преаутентификация

Попытка проведения атаки на аккаунт asrep-user, который имеет выключенную преаутентификацию:

impacket-GetNPUsers -request test.local/asrep-user -format john -outputfile hash.hash -dc-ip 192.168.1.1

Как видно, KDC (AS) не стал проверять метку времени, вернув нам AS-REP и, фактически, билет TGT.

Так выглядит AS_REQ и AS_REP при успешной атаке:

Профит

Брутфорсим AS_REP, который представлен в виде хэша в формате john и получаем TGT:

По факту, уже есть полностью скомпрометированная учетка.

Явно получаем TGT:

При получении TGT, можно заэкспорить билет в переменные окружения для последующей авторизации через Kerberos, используя сторонние утилиты.

Артефакты

При эксплуатации As-rep Roasting, порядок событий MSGID будет состоять из:

  1. 4776 (Аудит отказа) - Компьютер пытался проверить учетные данные УЗ

  2. 4625 (Аудит отказа) - УЗ не удалось выполнить вход в систему

  3. 4768 (Аудит успеха) - Запрошен билет TGT (Тип шифрования билета: 0х17)

    • Тип шифрования 0x17 в контексте Kerberos, используемого в системах Windows для аутентификации, соответствует алгоритму шифрования RC4 с ключом HMAC.

Tags:
Hubs:
Total votes 4: ↑4 and ↓0+4
Comments2

Articles