FreeIPA Pentesting
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
FreeIPA to otwarte źródło alternatywa dla Microsoft Windows Active Directory, głównie dla środowisk Unix. Łączy kompletny LDAP directory z MIT Kerberos Key Distribution Center do zarządzania podobnego do Active Directory. Wykorzystując system Dogtag Certificate System do zarządzania certyfikatami CA i RA, wspiera multi-factor authentication, w tym karty inteligentne. SSSD jest zintegrowany z procesami uwierzytelniania Unix.
Plik w /etc/krb5.conf
to miejsce, gdzie przechowywane są informacje klienta Kerberos, niezbędne do rejestracji w domenie. Obejmuje to lokalizacje KDC i serwerów administracyjnych, ustawienia domyślne i mapowania.
Domyślne ustawienia dla klientów i serwerów IPA są ustawione w pliku znajdującym się w /etc/ipa/default.conf
.
Hosty w domenie muszą mieć plik krb5.keytab
w /etc/krb5.keytab
do procesów uwierzytelniania.
Różne zmienne środowiskowe (KRB5CCNAME
, KRB5_KTNAME
, KRB5_CONFIG
, KRB5_KDC_PROFILE
, KRB5RCACHETYPE
, KRB5RCACHEDIR
, KRB5_TRACE
, KRB5_CLIENT_KTNAME
, KPROP_PORT
) są używane do wskazywania na konkretne pliki i ustawienia związane z uwierzytelnianiem Kerberos.
Narzędzia takie jak ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
i kvno
są kluczowe do zarządzania domenami FreeIPA, obsługi biletów Kerberos, zmiany haseł i uzyskiwania biletów serwisowych, wśród innych funkcji.
Ilustracja przedstawia typową konfigurację serwera FreeIPA.
Uwierzytelnianie w FreeIPA, wykorzystujące Kerberos, odzwierciedla to w Active Directory. Dostęp do zasobów domeny wymaga ważnego biletu Kerberos, który może być przechowywany w różnych lokalizacjach w zależności od konfiguracji domeny FreeIPA.
Pliki CCACHE, zazwyczaj przechowywane w /tmp
z uprawnieniami 600, są formatami binarnymi do przechowywania poświadczeń Kerberos, ważnymi dla uwierzytelniania bez hasła w postaci tekstu jawnego użytkownika z powodu ich przenośności. Analizowanie biletu CCACHE można wykonać za pomocą polecenia klist
, a ponowne użycie ważnego biletu CCACHE polega na wyeksportowaniu KRB5CCNAME
do ścieżki pliku biletu.
Alternatywnie, bilety CCACHE mogą być przechowywane w kluczyku Linux, oferując większą kontrolę nad zarządzaniem biletami. Zakres przechowywania biletów różni się (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), przy czym klist
jest w stanie analizować te informacje dla użytkownika. Jednak ponowne użycie biletu CCACHE z kluczyka Unix może stwarzać wyzwania, a narzędzia takie jak Tickey są dostępne do ekstrakcji biletów Kerberos.
Pliki keytab, zawierające główne poświadczenia Kerberos i zaszyfrowane klucze, są kluczowe do uzyskania ważnych biletów przyznających (TGT) bez potrzeby znajomości hasła głównego. Analizowanie i ponowne użycie poświadczeń z plików keytab można łatwo wykonać za pomocą narzędzi takich jak klist
i skryptów takich jak KeytabParser.
Możesz znaleźć więcej informacji na temat używania biletów w systemie Linux w następującym linku:
Linux Active DirectoryMożesz przeprowadzić enumerację za pomocą ldap i innych binary tools, lub łącząc się z stroną internetową na porcie 443 serwera FreeIPA.
Możliwe jest tworzenie hostów, użytkowników i grup. Hosty i użytkownicy są sortowani w kontenerach zwanych “Host Groups” i “User Groups” odpowiednio. Są one podobne do Organizational Units (OU).
Domyślnie w FreeIPA, serwer LDAP pozwala na anonimowe połączenia, a duża część danych jest enumerowana bez uwierzytelnienia. To może enumerować wszystkie dane dostępne bez uwierzytelnienia:
Aby uzyskać więcej informacji, musisz użyć sesji uwierzytelnionej (sprawdź sekcję Uwierzytelnianie, aby dowiedzieć się, jak przygotować sesję uwierzytelnioną).
Z maszyny dołączonej do domeny będziesz mógł użyć zainstalowanych binarek do enumeracji domeny:
Użytkownik admin w FreeIPA jest odpowiednikiem administratorów domeny z AD.
Użytkownik root z serwera IPA ma dostęp do hashy haseł.
Hash hasła użytkownika jest przechowywany jako base64 w atrybucie “userPassword”. Ten hash może być SSHA512 (stare wersje FreeIPA) lub PBKDF2_SHA256.
Nthash hasła jest przechowywany jako base64 w “ipaNTHash”, jeśli system ma integrację z AD.
Aby złamać te hashe:
• Jeśli freeIPA jest zintegrowany z AD, ipaNTHash jest łatwy do złamania: Należy dekodować base64 -> ponownie zakodować jako ASCII hex -> John The Ripper lub hashcat mogą pomóc w szybkim złamaniu
• Jeśli używana jest stara wersja FreeIPA, to używany jest SSHA512: Należy dekodować base64 -> znaleźć hash SSHA512 -> John The Ripper lub hashcat mogą pomóc w złamaniu
• Jeśli używana jest nowa wersja FreeIPA, to używany jest PBKDF2_SHA256: Należy dekodować base64 -> znaleźć PBKDF2_SHA256 -> jego długość to 256 bajtów. John może pracować z 256 bitami (32 bajty) -> SHA-265 używane jako funkcja pseudolosowa, rozmiar bloku to 32 bajty -> można użyć tylko pierwszych 256 bitów naszego hasha PBKDF2_SHA256 -> John The Ripper lub hashcat mogą pomóc w złamaniu
Aby wyodrębnić hashe, musisz być rootem na serwerze FreeIPA, tam możesz użyć narzędzia dbscan
, aby je wyodrębnić:
Są to zasady, które przyznają określone uprawnienia użytkownikom lub hostom w odniesieniu do zasobów (hosty, usługi, grupy usług...)
FreeIPA umożliwia centralne zarządzanie uprawnieniami sudo za pomocą reguł sudo. Reguły te pozwalają lub ograniczają wykonywanie poleceń z sudo na hostach w obrębie domeny. Atakujący może potencjalnie zidentyfikować odpowiednie hosty, użytkowników i dozwolone polecenia, analizując te zestawy reguł.
Rola składa się z różnych uprawnień, z których każde obejmuje zbiór zezwolenia. Te role mogą być przypisane do Użytkowników, Grup Użytkowników, Hostów, Grup Hostów i Usług. Na przykład, rozważmy domyślną rolę „Administrator Użytkowników” w FreeIPA, aby zilustrować tę strukturę.
Rola Administrator Użytkowników
ma te uprawnienia:
Administratorzy Użytkowników
Administratorzy Grup
Administratorzy Użytkowników Etapowych
Za pomocą następujących poleceń można wyliczyć role, uprawnienia i zezwolenia:
W https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e można znaleźć prosty przykład, jak nadużyć niektóre uprawnienia, aby skompromitować domenę.
Jeśli możesz utworzyć nowego użytkownika o nazwie root
, możesz się nim podszyć i będziesz mógł SSH do dowolnej maszyny jako root.
TO ZOSTAŁO POPRAWIONE.
Możesz sprawdzić szczegółowe wyjaśnienie w https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)