FreeIPA Pentesting

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Основна інформація

FreeIPA є відкритим альтернативним до Microsoft Windows Active Directory, головним чином для Unix середовищ. Вона поєднує повний LDAP каталог з MIT Kerberos Центром розподілу ключів для управління, подібного до Active Directory. Використовуючи Dogtag Certificate System для управління сертифікатами CA & RA, вона підтримує багатофакторну аутентифікацію, включаючи смарт-карти. SSSD інтегрований для процесів аутентифікації Unix.

Відбитки

Файли та змінні середовища

  • Файл /etc/krb5.conf - це місце зберігання інформації клієнта Kerberos, необхідної для вступу в домен. Це включає місцезнаходження KDC та адміністративних серверів, налаштування за замовчуванням та відображення.

  • Системні налаштування за замовчуванням для клієнтів та серверів IPA встановлені у файлі, розташованому за адресою /etc/ipa/default.conf.

  • Хостам у домені необхідно мати файл krb5.keytab за адресою /etc/krb5.keytab для процесів аутентифікації.

  • Різні змінні середовища (KRB5CCNAME, KRB5_KTNAME, KRB5_CONFIG, KRB5_KDC_PROFILE, KRB5RCACHETYPE, KRB5RCACHEDIR, KRB5_TRACE, KRB5_CLIENT_KTNAME, KPROP_PORT) використовуються для вказівки на конкретні файли та налаштування, що стосуються аутентифікації Kerberos.

Виконувані файли

Інструменти, такі як ipa, kdestroy, kinit, klist, kpasswd, ksu, kswitch та kvno, є центральними для управління доменами FreeIPA, обробки квитків Kerberos, зміни паролів та отримання сервісних квитків, серед інших функцій.

Мережа

Надається ілюстрація для зображення типового налаштування сервера FreeIPA.

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

Аутентифікація в FreeIPA, використовуючи Kerberos, відображає ту, що в Active Directory. Доступ до ресурсів домену потребує дійсного квитка Kerberos, який може бути збережений в різних місцях в залежності від конфігурації домену FreeIPA.

Файли квитків CCACHE

Файли CCACHE, зазвичай зберігаються в /tmp з дозволами 600, є бінарними форматами для зберігання облікових даних Kerberos, важливих для аутентифікації без текстового пароля користувача через їх переносність. Розбір квитка CCACHE можна виконати за допомогою команди klist, а повторне використання дійсного квитка CCACHE включає експорт KRB5CCNAME до шляху файлу квитка.

Ключовий кільцевий набір Unix

Альтернативно, квитки CCACHE можна зберігати в ключовому кільці Linux, що пропонує більше контролю над управлінням квитками. Обсяг зберігання квитків варіюється (KEYRING:name, KEYRING:process:name, KEYRING:thread:name, KEYRING:session:name, KEYRING:persistent:uidnumber), з klist здатним розбирати цю інформацію для користувача. Однак повторне використання квитка CCACHE з ключового кільця Unix може викликати виклики, існують інструменти, такі як Tickey для видобування квитків Kerberos.

Keytab

Файли Keytab, що містять принципали Kerberos та зашифровані ключі, є критичними для отримання дійсних квитків для надання квитків (TGT) без необхідності пароля принципала. Розбір та повторне використання облікових даних з файлів Keytab можна легко виконати за допомогою утиліт, таких як klist, та сценаріїв, таких як KeytabParser.

Шпаргалка

Більше інформації про використання квитків в Linux можна знайти за наступним посиланням:

pageLinux Active Directory

Перелік

Ви можете виконати перелік через ldap та інші бінарні інструменти або підключення до веб-сторінки на порті 443 сервера FreeIPA.

Хости, Користувачі та Групи

Можливо створювати хости, користувачів та групи. Хости та користувачі розміщуються в контейнерах, які називаються "Групи хостів" та "Групи користувачів" відповідно. Це схоже на Організаційні одиниці (OU).

За замовчуванням у FreeIPA, LDAP-сервер дозволяє анонімні зв'язки, і велика кількість даних доступна для переліку без аутентифікації. Це може перелічити всі дані, доступні без аутентифікації:

ldapsearch -x

Для отримання більш докладної інформації вам потрібно використовувати аутентифіковану сесію (перевірте розділ Аутентифікація, щоб дізнатися, як підготувати аутентифіковану сесію).

# Get all users of domain
ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local"

# Get users groups
ldapsearch -Y gssapi -b "cn=groups,cn=accounts,dc=domain_name,dc=local"

# Get all the hosts
ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local"

# Get hosts groups
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"

З машини, приєднаної до домену, ви зможете використовувати встановлені бінарні файли для переліку домену:

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

Користувач admin FreeIPA еквівалентний адміністраторам домену з AD.

Хеші

Користувач root з сервера IPA має доступ до хешів паролів.

  • Хеш паролю користувача зберігається у вигляді base64 в атрибуті "userPassword". Цей хеш може бути SSHA512 (старі версії FreeIPA) або PBKDF2_SHA256.

  • Nthash паролю зберігається у вигляді base64 в "ipaNTHash", якщо система інтегрована з AD.

Для розшифрування цих хешів:

• Якщо FreeIPA інтегрована з AD, ipaNTHash легко розшифрувати: Вам потрібно декодувати base64 -> повторно закодувати його у вигляді ASCII шістнадцяткового -> John The Ripper або hashcat можуть допомогти швидко розшифрувати його

• Якщо використовується стара версія FreeIPA, то використовується SSHA512: Вам потрібно декодувати base64 -> знайти хеш SSHA512 -> John The Ripper або hashcat можуть допомогти розшифрувати його

• Якщо використовується нова версія FreeIPA, то використовується PBKDF2_SHA256: Вам потрібно декодувати base64 -> знайти PBKDF2_SHA256 -> його довжина 256 байт. John може працювати з 256 бітами (32 байти) -> SHA-265 використовується як псевдовипадкова функція, розмір блоку 32 байти -> ви можете використовувати лише перші 256 біт нашого хешу PBKDF2_SHA256 -> John The Ripper або hashcat можуть допомогти розшифрувати його

Для вилучення хешів вам потрібно бути root на сервері FreeIPA, там ви можете використовувати інструмент dbscan для їх вилучення:

Правила HBAC

Це правила, які надають конкретні дозволи користувачам або хостам для ресурсів (хостів, служб, груп служб...).

# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
# Using ipa
ipa hbacrule-find
# Show info of rule
ipa hbacrule-show <hbacrule> --all

Правила Sudo

FreeIPA дозволяє централізоване керування правами sudo за допомогою правил sudo. Ці правила дозволяють або обмежують виконання команд за допомогою sudo на хостах у межах домену. Зловмисник може потенційно визначити застосовні хости, користувачів та дозволені команди, переглянувши ці набори правил.

# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
# Using ipa
ipa sudorule-find
# Show info of rule
ipa sudorule-show <sudorule> --all

Контроль доступу на основі ролей

Роль складається з різних привілеїв, кожен з яких охоплює набір дозволів. Ці ролі можуть бути призначені користувачам, групам користувачів, хостам, групам хостів та сервісам. Наприклад, розглянемо роль "Адміністратор користувачів" у FreeIPA для ілюстрації цієї структури.

Роль Адміністратор користувачів має такі привілеї:

  • Адміністратори користувачів

  • Адміністратори груп

  • Адміністратори етапів користувачів

За допомогою наступних команд можна перелічити ролі, привілеї та дозволи:

# Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
# Using ipa binary
ipa role-find
ipa role-show <role> --all
ipa privilege-find
ipa privilege-show <privilege> --all
ipa permission-find
ipa permission-show <permission> --all

Приклад сценарію атаки

У https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e ви можете знайти простий приклад того, як зловживати деякими дозволами для компрометації домену.

Linikatz/LinikatzV2

Підвищення привілеїв

створення користувача root

Якщо ви можете створити нового користувача з ім'ям root, ви можете видаавати себе за нього і матимете можливість SSH на будь-яку машину як root.

ЦЕ БУЛО ВИПРАВЛЕНО.

Ви можете перевірити детальний пояснення в https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated