
Объект исследования
FreeIPA — система управления идентификацией и доступом в домене, Active Directory для Linux.
Результат
Эксплуатация уязвимости в механизме Kerberos-аутентификации, получение административного доступа к домену и, как следсвие, зарегистированная CVE-2024-3183.
Ход исследования
1) Анализ механики аутентификации в FreeIPA
После получения учетной записи в домене с минимальными правами, было установлено, что система позволяет запрашивать TGS (билеты для аутентификации в сервисах) для любых пользователей через
kvno
, несмотря на отсутствие специальных привилегий. Однако стандартная атака Kerberoasting не сработала из-за особенностей FreeIPA.2) Исследование механизма генерации соли для Kerberos
Было замечено, что FreeIPA использует нестандартный механизм формирования соли для ключей шифрования. Анализ исходного кода MIT Kerberos и перехваченных пакетов в Wireshark позволил выявить, что соль можно получить при первой ошибке преаутентификации (KRB5_TRACE).
3) Эксплуатация уязвимости и восстановление паролей
Скрипт на Python позволил перебрать пароли на основе захваченного TGS и полученной соли. После модификации hashcat, который не учитывал особенность соли в FreeIPA, удалось успешно восстановить пароль администратора домена.
4) Полная компрометация домена
После получения TGT для пользователя с минимальными привилегиями был выполнен запрос на получение TGS для администратора. Расшифрование тикета позволило восстановить пароль и получить полный контроль над инфраструктурой.
О найденной уязвимости было сообщено в Red Hat и MIT Kerberos. После анализа запроса разработчики подтвердили проблему и выпустили исправление в FreeIPA 4.12.1. Уязвимости присвоили номер CVE-2024-3183.
Полноценный текст с картинками доступен на Хакере