Теперь sudo и Kerberos тоже можно разложить по графу.

В инфраструктурах на FreeIPA появился собственный аналог BloodHound, но с поправкой на Linux-домены, Kerberos, LDAP, sudo, SSH и особенности FreeIPA. Инструмент IPAHound помогает пентестерам увидеть не отдельные настройки каталога, а реальные пути перемещения по домену: от обычной учётной записи до доступа к контроллеру, службам или административным правам.
Инструмент представил эксперт PT SWARM Михаил Сухов. Команда давно исследует FreeIPA и уже находила уязвимости в проекте и связанных компонентах, включая XXE в PKI HTTP-сервере, несколько DoS-проблем, ошибку с получением TGS-билетов для произвольных пользователей и уязвимость повышения привилегий в FreeIPA с оценкой CVSS 9.1.
FreeIPA часто используют как альтернативу Microsoft Active Directory в Linux-инфраструктурах. Внешне задача похожа: в домене есть пользователи, компьютеры, группы, роли, службы и права доступа. Но для атакующего FreeIPA устроена иначе. Обычный пользователь не видит полный набор правил доступа, разрешений, привилегий и ACI-правил, поэтому не может просто выгрузить каталог и сразу построить привычную карту прав, как в Active Directory.
IPAHound решает проблему через реконструкцию доступной картины. Коллектор собирает сведения через LDAP, анализирует открытые атрибуты объектов и строит граф связей. Графический интерфейс показывает, какие учётные записи входят в группы, кто может управлять членством, какие компьютеры доступны по SSH, где разрешён sudo, у каких объектов включена делегация Kerberos и какие аккаунты могут выпускать сертификаты.
Подход похож на BloodHound: вершины графа обозначают объекты домена, а рёбра показывают отношения между ними. Но в FreeIPA появляются сущности, которых нет в классической модели Active Directory. IPAHound отдельно учитывает службы, разрешения, роли, правила HBAC, sudo-правила, SELinux-политики, центры сертификации, профили сертификатов и связи доверия с AD-доменами.
Для пентеста особенно важны рёбра CanSSH и CanSUDO. Первое показывает, что учётная запись может подключиться к хосту по SSH, второе указывает на возможность выполнять команды через sudo. IPAHound добавляет CanSUDO только при выполнении двух условий: правило HBAC разрешает доступ к sudo-сервису, а отдельное sudo-правило позволяет запуск команд. Такой фильтр снижает шум и помогает быстрее найти реальные пути к повышению прав.
Отдельный блок посвящён Kerberos-делегированию. FreeIPA поддерживает несколько вариантов делегирования, включая unconstrained delegation, constrained delegation и RBCD. IPAHound отмечает такие связи через рёбра AllowedToDelegate и AddRBCD. Для атакующего подобные настройки опасны, потому что ошибка в делегировании может позволить получить доступ к сервису от имени другого пользователя.
Инструмент также учитывает IPA PKI. FreeIPA умеет выпускать сертификаты для доменных объектов, а правила CA ACL определяют, какие аккаунты могут использовать конкретные профили сертификатов. IPAHound строит связи Enroll и помогает увидеть, где выпуск сертификата открывает путь к аутентификации или захвату сервисной учётной записи.
В статье приведены три типовых сценария из практики PT SWARM. В первом пентестер получает обычную учётную запись, собирает снимок домена, находит пользователей с разрешённой парольной аутентификацией, проводит password spraying и получает доступ к аккаунту с SSH и sudo на контроллере домена. Доступ к базе каталога фактически означает компрометацию FreeIPA-домена.
Во втором сценарии атакующий получает ключи Kerberos для компьютера, а затем через владение связанными сервисами и настройки RBCD выходит на более ценный сервисный аккаунт. В третьем сценарии срабатывает цепочка из права добавлять пользователей в группу, доступа к хосту по SSH, повышения привилегий через sudo и настройки RBCD для дальнейшего доступа к LDAP с правами администратора.
Разработчики подчёркивают, что IPAHound рассчитан прежде всего на пентестовый подход, когда у специалиста есть только права обычного пользователя. В аудиторском режиме, при наличии администратора или cn=Directory Manager, защитная команда и так видит больше данных. При ограниченном доступе инструмент пытается восстановить опасные связи по доступным атрибутам и стандартным правилам FreeIPA.
Коллектор IPAHound написан на Python и поддерживает аутентификацию через Kerberos или логин с паролем. Результат можно сохранить в JSON для загрузки через графический интерфейс или через APOC-модуль Neo4j. Второй способ авторы называют предпочтительным для больших доменов: на одной из реальных инфраструктур с 3,2 млн связей и 8 000 объектов загрузка через GUI заняла семь часов, а через APOC завершилась за 92 секунды.
PT SWARM открыла два репозитория: отдельно для коллектора IPAHound и отдельно для графического интерфейса IPAHound-GUI. Команда также напомнила о другом своём инструменте, IPASync, который предназначен для атаки DCShadow в FreeIPA.
Появление IPAHound показывает, что FreeIPA уже требует того же уровня анализа прав, который давно применяют к Active Directory. Ошибки в группах, sudo-правилах, Kerberos-делегации и сертификатах могут складываться в короткие цепочки захвата домена, даже когда каждая отдельная настройка выглядит безобидно.