Атаки на FreeIPA - Enumeration

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Оригинал: https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1
Перевод: Эрмано для форума XSS

В первой части этой серии мы рассмотрели некоторые предыстории и базовые технологии, используемые FreeIPA. Мы также рассмотрели несколько механизмов аутентификации и форм материалов для учетных данных, в частности, о том, как идентифицировать, анализировать и повторно использовать учетные данные злоумышленника. Если вы еще не читали Часть I, вы можете найти ее здесь: https://xss.is/threads/122951
В этом разделе серии статей мы погрузимся в пользовательскую лабораторную среду, чтобы продемонстрировать, как работают различные объекты и структуры в FreeIPA, а также как они взаимодействуют друг с другом. Затем мы научимся перечислять эти структуры.

Лаборатория
Прежде чем мы углубимся в детали, давайте кратко рассмотрим, как создавалась лабораторная среда и ее общая структура.

1726835319832.png


На приведенной выше схеме показана общая схема среды FreeIPA Lab, которую я создал для этой серии и использовал для исследований. Команда, стоящая за FreeIPA, поддерживает образы Docker как для серверов FreeIPA, так и для клиентов в нескольких популярных операционных системах. Вы можете найти эти образы Docker на Dockerhub или Github по ссылкам ниже:

Код: Скопировать в буфер обмена
https://hub.docker.com/r/freeipa/freeipa-server/
Код: Скопировать в буфер обмена
https://github.com/freeipa/freeipa-container

Вся документация и инструкции по установке, могут быть найдены по ссылке на официальном сайте проекта:

Код: Скопировать в буфер обмена
https://www.freeipa.org/page/Docker

Нашей отправной точкой в этом упражнении будет предоставление доступа к скомпрометированному веб-серверу в управляемой среде FreeIPA. Цель состоит в том, чтобы в конечном итоге получить учетные данные администратора для домена и отфильтровать конфиденциальные данные из базы данных SQL. Прежде чем мы перейдем к этим целям, давайте рассмотрим некоторые основные объекты и методы перечисления в средах FreeIPA.
Узлы, пользователи, группы
Как и Windows Active Directory (AD), FreeIPA позволяет администраторам создавать хосты и пользователей. Эти узлы сети и пользователи могут быть отсортированы по контейнерам, которые называются «Группы узлов сети» и «Группы пользователей» соответственно. По сравнению с AD эти группы функционируют очень похоже на организационные единицы (OU).
Правила управления доступом на основе узла (HBAC-правила), привилегии, роли и Sudo-правила могут быть применены к любому из указанных выше объектов. Не волнуйтесь, если вы не знакомы с правилами HBAC, привилегиями, ролями или правилами судо. Мы погрузимся в них чуть позже в этом посте.
Существует несколько способов перечисления информации о домене с сервера IPA. Два метода, которые я попытаюсь рассмотреть в этом посте, будут следующими:

Код: Скопировать в буфер обмена
Использование запросов протокола LDAP (Lightweight Directory Access Protocol) к серверу LDAP.
Код: Скопировать в буфер обмена
Использование встроенных инструментов управления IPA

Имея этот опыт, давайте погрузимся в лабораторию и начнем перечислять пользователей, хосты, группы пользователей и хост-группы внутри FreeIPA.

Перечисление с помощью запросов LDAP
По умолчанию в FreeIPA сервер LDAP разрешает анонимные привязки, и большой объем данных может быть перечислен без аутентификации. Однако не все данные могут быть перечислены без проверки подлинности. Данные, отвечающие за сопоставление элементов управления авторизацией безопасности, были явно защищены списками ACL. Следующая команда извлечет все данные, доступные без проверки подлинности:

ldapsearch -x

В оставшейся части этого поста все команды ldapsearch будут аутентифицированы. В первой статье этой серии мы подробно расскажем, как идентифицировать и использовать учетные данные в среде FreeIPA.
Имея действительные учетные данные, мы можем быть более конкретными и отфильтровать наш запрос, устанавливая целевые базовые отличительные имена (DN) для каждого поиска. Следующий запрос идентифицирует всех пользователей в лабораторной среде:

ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=westeros,dc=local"

1726836005446.png

э

Мы можем использовать тот же запрос с немного измененным базовым DN для получения данных по всем хостам в среде:

ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=westeros,dc=local

1726836110564.png



Опять же, мы можем изменить базовое DN для получения каждой группы узлов сети и группы пользователей соответственно:

ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=westeros,dc=local"
ldapsearch -Y gssapi -b "cn=groups,cn=accounts,dc=westeros,dc=local"

Перечисление с помощью административных инструментов IPA

По умолчанию на узлах, зарегистрированных в домене FreeIPA, в процессе регистрации установлено средство управления IPA. Этот инструментарий невероятно полезен для перечисления и настройки среды. Как мы уже обсуждали выше, давайте рассмотрим, как перечислить информацию о пользователях, узлах сети, группах пользователей и группах узлов сети с помощью встроенного средства администрирования IPA.
К сожалению, инструменты IPA нельзя использовать без действительных учетных данных домена. Если вы окажетесь в ситуации, когда у вас нет действительных учетных данных домена, каждый хост развертывается с учетными данными keytab для этого хоста. Этот keytab может быть использован для получения действительного билета Credential Cache (CCACHE) Ticket Giving Ticket(TGT) для самого хоста.
Имея действительные учетные данные и доступ к утилите ipa, вы можете использовать следующие команды для перечисления соответствующей информации:

Код: Скопировать в буфер обмена
Код:
ipa user-find
ipa usergroup-find
ipa host-find
ipa host-group-find
-------------------
ipa user-show <username> --all
ipa usergroup-show <user group> --all
ipa host-find <host> --all
ipa hostgroup-show <host group> --all

Правила HBAC

В документации Fedora FreeIPA правила HBAC определяются как:
Управление доступом на высоком уровне определяет, кто и к чему имеет доступ. Объект who может быть либо пользователем, либо узлом сети (исходным узлом сети), а объект whatever может быть либо узлом сети (целевой узел), либо службой или группой служб, либо их комбинацией.
Нажмите, чтобы раскрыть...
Правила HBAC следует использовать для делегирования доступа к определенным ресурсам. Этот контроль доступа может быть чрезвычайно эффективным для смягчения бокового смещения при правильной настройке. Как злоумышленник, мы можем использовать правила HBAC, чтобы определить, каким учетным записям был делегирован доступ к определенным ресурсам в среде.

Давайте рассмотрим, как перечислить эти политики.

Перечисление с помощью запросов LDAP

Следующая команда может быть использована для получения всех правил HBAC в лабораторной среде:

ldapsearch -Y gssapi -b "cn=hbac,dc=westeros,dc=local"

1726836454388.png



Перечисление с помощью административных инструментов IPA
Следующие команды можно использовать для получения всех правил HBAC в лабораторной среде.

Код: Скопировать в буфер обмена
Код:
ipa hbacrule-find
-----------------
ipa hbacrule-show <hbacrule> --all

Правила SUDO
Документация Fedora FreeIPA определяет Sudo-Rules как:
Правила Sudo в некотором смысле похожи на правила управления доступом: они определяют пользователей, которым предоставлен доступ, команды, которые находятся в области действия правила, а затем целевые узлы, к которым применяется правило. Во FreeIPA в правиле можно настроить дополнительную информацию, такую как параметры sudoers и параметры run-as, но базовые элементы всегда определяют, кто, что (сервисы) и где (хосты).
Нажмите, чтобы раскрыть...
FreeIPA предоставляет возможность управлять разрешениями sudo из одного централизованного источника с помощью sudo-rules. Эти наборы правил можно использовать для ограничения или делегирования возможности выполнения команд в качестве sudo на узлах, зарегистрированных в домене. Как злоумышленник, мы можем перечислить, к каким хостам и пользователям применяются эти наборы правил, и какие команды разрешены через набор правил.

Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех sudo-правил в лабораторной среде:

ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=westeros,dc=local"

1726836659842.png



Перечисление с помощью административных инструментов IPA
Следующая команда может быть использована для получения всех sudo-правил в лабораторной среде:
Код: Скопировать в буфер обмена
Код:
ipa sudorule-find
-----------------
ipa sudorule-show <sudorule> --all

Управление доступом на основе ролей
В документации Fedora FreeIPA управление доступом на основе ролей определяется как:
Ролевое управление доступом (RBAC) — это иерархический способ организации доступа к данным, управляемым FreeIPA. Различные пользователи, выполняющие одни и те же задачи в организации, обычно объединяются в группу, и эта группа становится членом роли FreeIPA. Эта роль предоставляет группам участников и пользователям необходимые разрешения для выполнения назначенных им задач.
Нажмите, чтобы раскрыть...
Роли в FreeIPA состоят из нескольких различных элементов. Каждая роль содержит набор привилегий, а соответствующие привилегии содержат набор разрешений. Роли могут быть применены к пользователям, группам пользователей, узлам сети, группам узлов сети и службам. Чтобы проиллюстрировать эту концепцию, давайте обсудим стандартную роль "User Administrator" в FreeIPA.
1726836786195.png


Как видно на скриншоте выше, роль "Администратор пользователя" содержит следующие привилегии:
  • User Administrators
  • Group Administrators
  • Stage User Administrators
Нажмите, чтобы раскрыть...
Мы можем углубиться и перечислить разрешения, делегированные каждой привилегии.

1726836837729.png



Как мы видим, роль "Администратор пользователя" содержит довольно много разрешений внутри среды. Понимание общей концепции и структуры ролей, привилегий и разрешений может иметь решающее значение для выявления путей атак в среде.

Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех ролей в лабораторной среде:

ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"

1726836892230.png




Перечисление с помощью административных инструментов IPA
Следующие команды можно использовать для получения всех ролей, привилегий и разрешений в лабораторной среде.
Код: Скопировать в буфер обмена
Код:
ipa role-find
ipa role-show <role> --all
ipa privilege-find
ipa privilege-show <privilege> --all
ipa permission-find
ipa permission-show <permission> --all

Итоги
Надеюсь, к настоящему времени мы немного лучше понимаем различные типы объектов в среде FreeIPA и немного о их значении. Для злоумышленника критически важна способность не только перечислять, но и понимать значение этих объектов.

В следущих переводах будут затронуты атаки(прим. перевод).
 
Сверху Снизу