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, а также как они взаимодействуют друг с другом. Затем мы научимся перечислять эти структуры.
Лаборатория
Прежде чем мы углубимся в детали, давайте кратко рассмотрим, как создавалась лабораторная среда и ее общая структура.
На приведенной выше схеме показана общая схема среды FreeIPA Lab, которую я создал для этой серии и использовал для исследований. Команда, стоящая за FreeIPA, поддерживает образы Docker как для серверов FreeIPA, так и для клиентов в нескольких популярных операционных системах. Вы можете найти эти образы Docker на Dockerhub или Github по ссылкам ниже:
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Вся документация и инструкции по установке, могут быть найдены по ссылке на официальном сайте проекта:
Код: Скопировать в буфер обмена
Нашей отправной точкой в этом упражнении будет предоставление доступа к скомпрометированному веб-серверу в управляемой среде FreeIPA. Цель состоит в том, чтобы в конечном итоге получить учетные данные администратора для домена и отфильтровать конфиденциальные данные из базы данных SQL. Прежде чем мы перейдем к этим целям, давайте рассмотрим некоторые основные объекты и методы перечисления в средах FreeIPA.
Узлы, пользователи, группы
Как и Windows Active Directory (AD), FreeIPA позволяет администраторам создавать хосты и пользователей. Эти узлы сети и пользователи могут быть отсортированы по контейнерам, которые называются «Группы узлов сети» и «Группы пользователей» соответственно. По сравнению с AD эти группы функционируют очень похоже на организационные единицы (OU).
Правила управления доступом на основе узла (HBAC-правила), привилегии, роли и Sudo-правила могут быть применены к любому из указанных выше объектов. Не волнуйтесь, если вы не знакомы с правилами HBAC, привилегиями, ролями или правилами судо. Мы погрузимся в них чуть позже в этом посте.
Существует несколько способов перечисления информации о домене с сервера IPA. Два метода, которые я попытаюсь рассмотреть в этом посте, будут следующими:
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
Имея этот опыт, давайте погрузимся в лабораторию и начнем перечислять пользователей, хосты, группы пользователей и хост-группы внутри FreeIPA.
Перечисление с помощью запросов LDAP
По умолчанию в FreeIPA сервер LDAP разрешает анонимные привязки, и большой объем данных может быть перечислен без аутентификации. Однако не все данные могут быть перечислены без проверки подлинности. Данные, отвечающие за сопоставление элементов управления авторизацией безопасности, были явно защищены списками ACL. Следующая команда извлечет все данные, доступные без проверки подлинности:
В оставшейся части этого поста все команды ldapsearch будут аутентифицированы. В первой статье этой серии мы подробно расскажем, как идентифицировать и использовать учетные данные в среде FreeIPA.
Имея действительные учетные данные, мы можем быть более конкретными и отфильтровать наш запрос, устанавливая целевые базовые отличительные имена (DN) для каждого поиска. Следующий запрос идентифицирует всех пользователей в лабораторной среде:
э
Мы можем использовать тот же запрос с немного измененным базовым DN для получения данных по всем хостам в среде:
Опять же, мы можем изменить базовое DN для получения каждой группы узлов сети и группы пользователей соответственно:
Перечисление с помощью административных инструментов IPA
По умолчанию на узлах, зарегистрированных в домене FreeIPA, в процессе регистрации установлено средство управления IPA. Этот инструментарий невероятно полезен для перечисления и настройки среды. Как мы уже обсуждали выше, давайте рассмотрим, как перечислить информацию о пользователях, узлах сети, группах пользователей и группах узлов сети с помощью встроенного средства администрирования IPA.
К сожалению, инструменты IPA нельзя использовать без действительных учетных данных домена. Если вы окажетесь в ситуации, когда у вас нет действительных учетных данных домена, каждый хост развертывается с учетными данными keytab для этого хоста. Этот keytab может быть использован для получения действительного билета Credential Cache (CCACHE) Ticket Giving Ticket(TGT) для самого хоста.
Имея действительные учетные данные и доступ к утилите ipa, вы можете использовать следующие команды для перечисления соответствующей информации:
Код: Скопировать в буфер обмена
Правила HBAC
В документации Fedora FreeIPA правила HBAC определяются как:
Давайте рассмотрим, как перечислить эти политики.
Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех правил HBAC в лабораторной среде:
Перечисление с помощью административных инструментов IPA
Следующие команды можно использовать для получения всех правил HBAC в лабораторной среде.
Код: Скопировать в буфер обмена
Правила SUDO
Документация Fedora FreeIPA определяет Sudo-Rules как:
Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех sudo-правил в лабораторной среде:
Перечисление с помощью административных инструментов IPA
Следующая команда может быть использована для получения всех sudo-правил в лабораторной среде:
Код: Скопировать в буфер обмена
Управление доступом на основе ролей
В документации Fedora FreeIPA управление доступом на основе ролей определяется как:
Как видно на скриншоте выше, роль "Администратор пользователя" содержит следующие привилегии:
Как мы видим, роль "Администратор пользователя" содержит довольно много разрешений внутри среды. Понимание общей концепции и структуры ролей, привилегий и разрешений может иметь решающее значение для выявления путей атак в среде.
Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех ролей в лабораторной среде:
Перечисление с помощью административных инструментов IPA
Следующие команды можно использовать для получения всех ролей, привилегий и разрешений в лабораторной среде.
Код: Скопировать в буфер обмена
Итоги
Надеюсь, к настоящему времени мы немного лучше понимаем различные типы объектов в среде FreeIPA и немного о их значении. Для злоумышленника критически важна способность не только перечислять, но и понимать значение этих объектов.
В следущих переводах будут затронуты атаки(прим. перевод).
Перевод: Эрмано для форума XSS
В первой части этой серии мы рассмотрели некоторые предыстории и базовые технологии, используемые FreeIPA. Мы также рассмотрели несколько механизмов аутентификации и форм материалов для учетных данных, в частности, о том, как идентифицировать, анализировать и повторно использовать учетные данные злоумышленника. Если вы еще не читали Часть I, вы можете найти ее здесь: https://xss.is/threads/122951
В этом разделе серии статей мы погрузимся в пользовательскую лабораторную среду, чтобы продемонстрировать, как работают различные объекты и структуры в FreeIPA, а также как они взаимодействуют друг с другом. Затем мы научимся перечислять эти структуры.
Лаборатория
Прежде чем мы углубимся в детали, давайте кратко рассмотрим, как создавалась лабораторная среда и ее общая структура.
На приведенной выше схеме показана общая схема среды 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"
э
Мы можем использовать тот же запрос с немного измененным базовым DN для получения данных по всем хостам в среде:
ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=westeros,dc=local
Опять же, мы можем изменить базовое 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 определяются как:
Правила HBAC следует использовать для делегирования доступа к определенным ресурсам. Этот контроль доступа может быть чрезвычайно эффективным для смягчения бокового смещения при правильной настройке. Как злоумышленник, мы можем использовать правила HBAC, чтобы определить, каким учетным записям был делегирован доступ к определенным ресурсам в среде.Управление доступом на высоком уровне определяет, кто и к чему имеет доступ. Объект who может быть либо пользователем, либо узлом сети (исходным узлом сети), а объект whatever может быть либо узлом сети (целевой узел), либо службой или группой служб, либо их комбинацией.
Нажмите, чтобы раскрыть...
Давайте рассмотрим, как перечислить эти политики.
Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех правил HBAC в лабораторной среде:
ldapsearch -Y gssapi -b "cn=hbac,dc=westeros,dc=local"
Перечисление с помощью административных инструментов IPA
Следующие команды можно использовать для получения всех правил HBAC в лабораторной среде.
Код: Скопировать в буфер обмена
Код:
ipa hbacrule-find
-----------------
ipa hbacrule-show <hbacrule> --all
Правила SUDO
Документация Fedora FreeIPA определяет Sudo-Rules как:
FreeIPA предоставляет возможность управлять разрешениями sudo из одного централизованного источника с помощью sudo-rules. Эти наборы правил можно использовать для ограничения или делегирования возможности выполнения команд в качестве sudo на узлах, зарегистрированных в домене. Как злоумышленник, мы можем перечислить, к каким хостам и пользователям применяются эти наборы правил, и какие команды разрешены через набор правил.Правила Sudo в некотором смысле похожи на правила управления доступом: они определяют пользователей, которым предоставлен доступ, команды, которые находятся в области действия правила, а затем целевые узлы, к которым применяется правило. Во FreeIPA в правиле можно настроить дополнительную информацию, такую как параметры sudoers и параметры run-as, но базовые элементы всегда определяют, кто, что (сервисы) и где (хосты).
Нажмите, чтобы раскрыть...
Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех sudo-правил в лабораторной среде:
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=westeros,dc=local"
Перечисление с помощью административных инструментов IPA
Следующая команда может быть использована для получения всех sudo-правил в лабораторной среде:
Код: Скопировать в буфер обмена
Код:
ipa sudorule-find
-----------------
ipa sudorule-show <sudorule> --all
Управление доступом на основе ролей
В документации Fedora FreeIPA управление доступом на основе ролей определяется как:
Роли в FreeIPA состоят из нескольких различных элементов. Каждая роль содержит набор привилегий, а соответствующие привилегии содержат набор разрешений. Роли могут быть применены к пользователям, группам пользователей, узлам сети, группам узлов сети и службам. Чтобы проиллюстрировать эту концепцию, давайте обсудим стандартную роль "User Administrator" в FreeIPA.Ролевое управление доступом (RBAC) — это иерархический способ организации доступа к данным, управляемым FreeIPA. Различные пользователи, выполняющие одни и те же задачи в организации, обычно объединяются в группу, и эта группа становится членом роли FreeIPA. Эта роль предоставляет группам участников и пользователям необходимые разрешения для выполнения назначенных им задач.
Нажмите, чтобы раскрыть...
Как видно на скриншоте выше, роль "Администратор пользователя" содержит следующие привилегии:
Мы можем углубиться и перечислить разрешения, делегированные каждой привилегии.Нажмите, чтобы раскрыть...
- User Administrators
- Group Administrators
- Stage User Administrators
Как мы видим, роль "Администратор пользователя" содержит довольно много разрешений внутри среды. Понимание общей концепции и структуры ролей, привилегий и разрешений может иметь решающее значение для выявления путей атак в среде.
Перечисление с помощью запросов LDAP
Следующая команда может быть использована для получения всех ролей в лабораторной среде:
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
Перечисление с помощью административных инструментов 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 и немного о их значении. Для злоумышленника критически важна способность не только перечислять, но и понимать значение этих объектов.
В следущих переводах будут затронуты атаки(прим. перевод).