Kerberoasting
В среде AD существуют так называемые Service Principal Names (SPN) - уникальные идентификаторы, связанные с учетными записями, которые запускают службы или приложения. Когда клиент хочет получить доступ к службе на сервере, он использует SPN, чтобы найти соответствующую учетную запись службы.
При проведении Kerberoasting атаки атакующего интересуют SPN, ассоциирующиеся с учетными записями пользователей, а не компьютеров, ввиду нецелесообразности восстановления паролей последних (слишком сложные для восстановления). Билеты TGS шифруются с использованием хэша сервисной учетной записи. Это позволяет атакующему восстановить пароль сервисной учетной записи при условии, что пароль недостаточно стойкий.
Атаку можно разделить на несколько этапов:
- Атакующий проходит аутентификацию в домене (AS_req и AS_rep).
- Атакующий использует билет TGT для запроса билета TGS для конкретного SPN (TGS_req и TGS_rep).
- Атакующий извлекает хэш зашифрованного билета TGS из TGS_rep.
- Легкость в эксплуатации. Для реализации атакующему достаточно иметь доменную учетную запись с любым уровнем привилегий;
- Полученные хеши сервисных учетных записей можно подвергнуть офлайн перебору, что значительно снижает шансы обнаружения и угрозу блокирования учетной записи, как в случае password spraying атаки.
Пример реализации атаки с помощью GetUserSPNs.py:
GetUserSPNs.py -request -dc-ip 10.10.10.26 TESTDOMAIN.local/testuser1:Testuser! > kerberoast.txt
- 10.10.10.26 – IP-адрес DC;
- TESTDOMAIN.local – имя домена;
- testuser1:Testuser! – логин и пароль доменной учетной записи;
- > kerberoast.txt – записываем результат атаки в текстовый файл.
Далее хэш подвергается перебору и, если пароль недостаточно стойкий, атакующий получает пароль сервисной учетной записи.
Пример использования John the Ripper для перебора хэша:
john --format=krb5tgs --wordlist=$wordlist kerberoastables.txt
С помощью Rubeus также можно выполнить Kerberoasting.
Первым шагом может быть сбор статистики:
.\Rubeus.exe kerberoast /stats
Данная функция очень полезна злоумышленникам. Она помогает выяснить количество Kerberoastable пользователей и поддерживаемые ими типы шифрования для запросов билетов.
В результате мы получили хэш TGS (зашифрованный по алгоритму RC4) для учетной записи iis_svc.
С помощью PowerView тоже можно провести Kerberoasting.
Import-Module .\PowerView.ps1 Get-DomainUser * -spn | select samaccountname Get-DomainUser -Identity sqldev | Get-DomainSPNTicket -Format Hashcat