Подбор пароля пользователя по LDAP в FreeIPA.md

Описание

В инфраструктуре FreeIPA наряду с Kerberos активно используется протокол LDAP для аутентификации и управления данными. Атакующие могут осуществлять подбор паролей пользователей через LDAP BIND-операции, обходя некоторые ограничения Kerberos. Поскольку LDAP-аутентификация широко используется в различных сервисах, такую активность следует детально анализировать.

Разбор

LDAP BIND — это операция аутентификации в LDAP, где клиент предоставляет DN (Distinguished Name) и пароль для установления сессии.

Для выполнения операции аутентификации можно воспользоваться утилитой ldapsearch:

ldapsearch -x -h <ipa_server_ip> \
  -D "uid=<user_name>,cn=users,cn=accounts,dc=domain,dc=local" \
  -w "<password>" \
  -b "dc=domain,dc=local" \
  "(objectClass=*)"

Примеры событий

При попытке аутентификации генерируется цепочка из двух событий.

Запрос аутентификации (BIND-операции)

Это событие фиксирует саму попытку аутентификации.

Событие запроса BIND-операции

Ключевые поля:

Результат аутентификации

Это событие показывает результат попытки.

Событие с результатом “неверные учетные данные”

Ключевые поля:

Важно отметить, что в событии о неудаче отсутствует DN пользователя (dst_object_path), поэтому для определения цели атаки необходима корреляция с событием запроса по src_process_parent_id.

Событие 1 (BIND запрос) → Событие 2 (BIND результат): цепочка при неуспешной попытке аутентификации
      ↓                          ↓
conn=22866                  conn=22866  
op=0                        op=0
dn=uid=bak3...              err=49

Событие с результатом “успех”

Ключевые поля:

При успешной попытке перебора паролей цепочка событий будет выглядеть так:

Событие 1 (BIND запрос) → Событие 2 (BIND результат)
      ↓                          ↓
conn=23996                  conn=23996  
op=0                        op=0
dn=uid=bak3...              err=0
                            dn=uid=bak3... 

Ссылки на дополнительные материалы

Вывод

LDAP-интерфейс FreeIPA создает дополнительный вектор для атак на подбор паролей. Основная сложность детектирования заключается в том, что информация о пользователе и результате аутентификации разделена между разными событиями, что требует их корреляции по идентификатору соединения (conn).

Возможный способ обнаружения

Подбор пароля пользователя по LDAP в FreeIPA

Правило детектирования основано на корреляции двух событий, произошедших на одном хосте:

События связываются по src_process_parent_id для определения имени пользователя из первого события.

Успешный подбор пароля пользователя по LDAP в FreeIPA

Правило детектирования основано на корреляции трех событий:

Первые два события связываются по src_process_parent_id. Событие успеха связывается с ними по dst_object_path (имени пользователя).

Правила

Подбор пароля пользователя по LDAP в FreeIPA

id: RV-D-1102
rid: d0d29228-a9e0-44c9-8bf2-efd94e4bcdc3
name: Подбор пароля пользователя по LDAP в FreeIPA

Тестирование

Успешный подбор пароля пользователя по LDAP в FreeIPA

id: RV-D-1103
rid: 2155714e-a64d-40e6-b766-1fabfa2a33c8
name: Успешный подбор пароля пользователя по LDAP в FreeIPA

Тестирование


Таблица правил и материалов для этого кейса