• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Атакуем FreeIPA Часть-1

Эрмано

(L3) cache
Пользователь
Регистрация
28.08.2024
Сообщения
261
Решения
1
Реакции
182
Это перевод статьи с Medium, вот её оригинал.

Недавно у меня была возможность работать в среде, управляемой FreeIPA.
Я хотел бы уделить время тому, чтобы поделиться некоторыми уроками, которые я узнал о FreeIPA, о том, как она работает, и о своей методологии атаки на нее. Прежде всего, что такое FreeIPA и почему он должен меня волновать?
Ну, честно говоря, я понятия не имел, пока не столкнулся с ним в дикой природе. После небольшого исследования я обнаружил, что это альтернатива Microsoft Windows Active Directory с открытым исходным кодом, используемая в основном в качестве интегрированного решения для управления средами Unix. Как и Active Directory, FreeIPA реализует полную инфраструктуру каталогов LDAP, поддерживаемую центром распределения ключей MIT Kerberos. Он использует систему сертификатов Dogtag для управления сертификатами CA и RA, что дает ему возможность обрабатывать многофакторную аутентификацию, включая смарт-карты. SSSD используется для интеграции FreeIPA в стандартный процесс аутентификации Unix.

Таким образом, все вместе мы имеем систему управления хостом Unix, в комплекте с LDAP и Kerberos, которая обеспечивает многофакторную аутентификацию. Из-за огромного количества контента, а также в попытке сделать эти посты более читабельными, я разделю их на серию. Этот пост призван охватить следующие темы: Общие файлы/переменные среды/двоичные файлы для помощи в идентификации хостов во время ситуационной осведомленности Аутентификация в среде FreeIPA с сохранением в памяти файлов Keytab, CCACHE Ticket и CCACHE Tickets.

Ситуационная осведомленность Хосты Linux, зарегистрированные в доменах FreeIPA, имеют несколько индикаторов, которые операторы могут сортировать для получения информации о хосте и домене. Давайте кратко рассмотрим несколько файлов, переменных окружения и двоичных файлов, указывающих на то, что хост был зарегистрирован в домене FreeIPA. Следующие файлы должны быть зарегистрированы на каждом узле, зарегистрированном в домене Kerberos:

/etc/krb5.conf
Файл krb5.conf содержит информацию о клиенте Kerberos, необходимую для регистрации в домене. Сюда входят местоположения KDC и серверов администрирования для интересующих областей Kerberos, значения по умолчанию для текущей области и для приложений Kerberos, а также сопоставления имен узлов с областями Kerberos.

/etc/ipa/default.conf
Это файл конфигурации по умолчанию для серверов IPA, он используется для установки общесистемных значений по умолчанию, которые будут применяться при работе клиентов и серверов IPA.

/etc/krb5.keytab
Файл krb5.keytab требуется на всех хостах внутри домена. Это требуется в рамках процесса аутентификации в KDC.

Существует также несколько переменных среды, которые, если они установлены, могут указывать на то, что узел зарегистрирован в домене Kerberos:

KRB5CCNAME
Если эта переменная задана, она указывает на местоположение билета CCACHE, который будет использоваться для аутентификации.

KRB5_KTNAME
Если установлена, эта переменная указывает на местоположение файла Keytab, который будет использоваться для аутентификации.

KRB5_CONFIG
Если эта переменная задана, она указывает на расположение файла конфигурации Kerberos.

KRB5_KDC_PROFILE
Если эта переменная задана, она указывает на расположение файла конфигурации KDC, который содержит дополнительные директивы настройки для демона Центра распределения ключей.

KRB5RCACHETYPE
Эта переменная определяет тип кэша воспроизведения по умолчанию, который будет использоваться для серверов.

KRB5RCACHEDIR
Эта переменная указывает каталог по умолчанию для кэшей воспроизведения, используемых серверами.

KRB5_TRACE
Эта переменная указывает имя файла, в который будут записываться выходные данные журнала трассировки. Журналы трассировки могут помочь пролить свет на решения, принимаемые внутри библиотек Kerberos.

KRB5_CLIENT_KTNAME
Эта переменная задает имя файла keytab клиента по умолчанию.

KPROP_PORT
Эта переменная устанавливает порт по умолчанию для использования kprop.

Существует также несколько двоичных файлов, которые идентифицируют хост как зарегистрированный в домене FreeIPA:

ipa
Этот двоичный файл является стандартом для управления доменом FreeIPA. Его можно использовать для управления узлами сети, пользователями, правилами sudo и многим другим.\

kdestroy
Двоичный файл kdestroy используется для уничтожения любых текущих билетов Kerberos в сеансе пользователя.

kinit
Двоичный файл kinit используется для создания или продления билетов Kerberos.

klist
В двоичном файле klist перечислены все используемые в настоящее время билеты Kerberos, а также участники, к которым они предоставляют доступ.

kpasswd
Команда kpasswd используется для изменения пароля участника Kerberos. kpasswd сначала запрашивает текущий пароль Kerberos, затем дважды запрашивает у пользователя новый пароль, и пароль меняется.

ksu
Ksu может быть использован в качестве альтернативы двоичному файлу su для переключения текущего пользовательского контекста.

kswitch
Команда kswitch переключит текущий используемый кэш учетных данных.

kvno
Двоичный файл kvno получает билет службы для указанных участников Kerberos и выводит номера ключевых версий каждого из них.

Аутентификация

Понимание базовых технологий и процессов, используемых для аутентификации и авторизации, жизненно важно для злоумышленника. Не понимая каждого механизма проверки подлинности, злоумышленник может пропустить действительные учетные данные, которые могли привести к боковому перемещению, или другой путь атаки по всей среде. Давайте кратко рассмотрим, как работает процесс аутентификации в среде, управляемой FreeIPA.
Поскольку FreeIPA использует Kerberos для аутентификации, этот процесс очень похож на аутентификацию в Active Directory. Чтобы получить доступ к ресурсам в домене, пользователь должен иметь действительный билет Kerberos для этого ресурса. Эти билеты могут храниться в нескольких различных местах в зависимости от конфигурации домена FreeIPA. Я кратко рассмотрю каждый механизм аутентификации, рассказав о том, как анализировать и повторно использовать этот материал от потенциального злоумышленника.

CCACHE Ticket Files

Если билеты настроены на хранение в виде файла на диске, стандартным форматом и типом является файл CCACHE. Это простой двоичный формат файла для хранения учетных данных Kerberos. Эти файлы обычно хранятся в /tmp и имеют 600 разрешений. С точки зрения злоумышленников это важно по следующим причинам:
1. Действительные билеты могут быть использованы для аутентификации без необходимости ввода пароля соответствующего пользователя в виде открытого текста.
2. Билеты CCACHE очень портативны. Их можно скачать и загрузить на другой хост без необходимости продлевать или подтверждать билет.

Парсинг билета CCACHE легко выполняется несколькими различными способами. Самый простой метод — разобрать его с помощью двоичного файла klist.
CCACHE Ticket Files
1726648786885.png


Для злоумышленника повторное использование CCACHE Ticket очень просто. Чтобы повторно использовать действительный билет CCACHE, экспортируйте KRB5CCNAME по пути к файлу действительного билета. Система должна распознать переменную среды и попытается использовать этот материал учетных данных при взаимодействии с доменом.
1726648845302.png


Unix Keyring

Еще одним вариантом для администраторов FreeIPA является хранение билетов CCACHE внутри связки ключей Linux. Связка ключей находится внутри ядра и предоставляет администраторам больший контроль над получением и использованием сохраненных билетов. Тикеты могут быть ограничены следующими различными способами:

KEYRING:name
Тикеты ограничены определенным именем Keyring.

KEYRING:process:name
Тикеты ограничены определенным идентификатором процесса.

KEYRING:thread:name
Тикеты ограничены определенным потоком.

KEYRING:session:name
Заявки привязываются к определенному сеансу пользователя.

KEYRING:persistent:uidnumber
Заявки привязываются к конкретному пользователю независимо от сеанса.

В зависимости от того, как администратор определил область действия билета, хранящегося внутри связки ключей Unix, его разбор может быть затруднен. Однако, по умолчанию область действия билетов CCACHE в связке ключей Unix — KEYRING:persistent:uidnumber. К счастью, если вы находитесь в контексте пользователя, klist может проанализировать эту информацию для нас.

1726649515099.png


Для злоумышленника повторное использование билета CCACHE, хранящегося в связке ключей Unix, довольно затруднительно в зависимости от области действия билета. К счастью, @Zer1t0 из @Tarlogic создала инструмент, который может извлекать билеты Kerberos из связки ключей Unix. Инструмент называется Tickey и его можно найти здесь.

1726649632935.png


Keytab​


Ключевые таблицы — это еще одна форма материала для учетных данных, которая используется в FreeIPA и Kerberos в целом. Он состоит из пар участников Kerberos и зашифрованных ключей, которые являются производными от пароля Kerberos, связанного с участником. Поскольку эти ключи являются производными от пароля участника, если этот пароль изменится, вкладка ключей будет недействительной.
Файлы Keytab могут быть использованы для получения действительного билета на выдачу билета (TGT) для участника, к которому он относится. Этот процесс аутентификации не требует пароля, так как он содержит ключи, производные от пароля.
Синтаксический анализ файла Keytab очень прост и может быть выполнен несколькими способами. Самый простой способ разобрать файл keytab — с помощью klist. Второй способ использует отличную утилиту Python, созданную Коди Томасом. Его проект KeytabParser будет анализировать основного и его соответствующие зашифрованные ключи.

1726649750821.png


Злоумышленники могут повторно использовать учетные данные, хранящиеся в файлах keytab, создав билет CCACHE через двоичный файл kinit.

1726650255264.png


Заключение

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

Вложения

  • 1726649871623.png
    1726649871623.png
    40.4 КБ · Просмотры: 6
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх