FreeIPA Pentesting
Grundlegende Informationen
FreeIPA ist eine Open-Source-Alternative zu Microsoft Windows Active Directory, hauptsächlich für Unix-Umgebungen. Es kombiniert ein vollständiges LDAP-Verzeichnis mit einem MIT Kerberos Key Distribution Center für das Management ähnlich wie Active Directory. Unter Verwendung des Dogtag Certificate Systems für CA & RA-Zertifikatsverwaltung unterstützt es Multi-Faktor-Authentifizierung, einschließlich Smartcards. SSSD ist für Unix-Authentifizierungsprozesse integriert.
Fingerabdrücke
Dateien & Umgebungsvariablen
Die Datei unter
/etc/krb5.conf
ist der Speicherort für Kerberos-Clientinformationen, die für die Einschreibung in die Domäne erforderlich sind. Dies umfasst die Standorte der KDCs und Admin-Server, Standardeinstellungen und Zuordnungen.Systemweite Standardeinstellungen für IPA-Clients und -Server sind in der Datei unter
/etc/ipa/default.conf
festgelegt.Hosts innerhalb der Domäne müssen eine
krb5.keytab
-Datei unter/etc/krb5.keytab
für Authentifizierungsprozesse haben.Verschiedene Umgebungsvariablen (
KRB5CCNAME
,KRB5_KTNAME
,KRB5_CONFIG
,KRB5_KDC_PROFILE
,KRB5RCACHETYPE
,KRB5RCACHEDIR
,KRB5_TRACE
,KRB5_CLIENT_KTNAME
,KPROP_PORT
) werden verwendet, um auf spezifische Dateien und Einstellungen im Zusammenhang mit der Kerberos-Authentifizierung zu verweisen.
Binärdateien
Werkzeuge wie ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
und kvno
sind zentral für das Management von FreeIPA-Domänen, die Behandlung von Kerberos-Tickets, das Ändern von Passwörtern und das Abrufen von Servicetickets, unter anderem.
Netzwerk
Eine Illustration wird bereitgestellt, um eine typische FreeIPA-Serverkonfiguration darzustellen.
Authentifizierung
Die Authentifizierung in FreeIPA, die Kerberos nutzt, ähnelt der in Active Directory. Der Zugriff auf Domänenressourcen erfordert ein gültiges Kerberos-Ticket, das je nach FreeIPA-Domänenkonfiguration an verschiedenen Orten gespeichert werden kann.
CCACHE-Ticketdateien
CCACHE-Dateien, die normalerweise in /tmp
mit 600 Berechtigungen gespeichert sind, sind binäre Formate zur Speicherung von Kerberos-Anmeldeinformationen, die aufgrund ihrer Portabilität wichtig sind für die Authentifizierung ohne das Klartextpasswort eines Benutzers. Das Parsen eines CCACHE-Tickets kann mit dem Befehl klist
durchgeführt werden, und die Wiederverwendung eines gültigen CCACHE-Tickets beinhaltet das Exportieren von KRB5CCNAME
zum Pfad der Ticketdatei.
Unix-Schlüsselbund
Alternativ können CCACHE-Tickets im Linux-Schlüsselbund gespeichert werden, was eine genauere Kontrolle über das Ticketmanagement bietet. Der Speicherbereich für die Ticket-Speicherung variiert (KEYRING:Name
, KEYRING:Prozess:Name
, KEYRING:Thread:Name
, KEYRING:Sitzung:Name
, KEYRING:Dauerhaft:Benutzerkennung
), wobei klist
in der Lage ist, diese Informationen für den Benutzer zu parsen. Die Wiederverwendung eines CCACHE-Tickets aus dem Unix-Schlüsselbund kann jedoch Herausforderungen darstellen, wobei Tools wie Tickey zum Extrahieren von Kerberos-Tickets verfügbar sind.
Keytab
Keytab-Dateien, die Kerberos-Prinzipale und verschlüsselte Schlüssel enthalten, sind entscheidend für das Erhalten gültiger Ticket Granting Tickets (TGT) ohne das Passwort des Prinzipals zu benötigen. Das Parsen und Wiederverwenden von Anmeldeinformationen aus Keytab-Dateien kann mithilfe von Dienstprogrammen wie klist
und Skripten wie KeytabParser problemlos durchgeführt werden.
Spickzettel
Weitere Informationen zur Verwendung von Tickets in Linux finden Sie unter folgendem Link:
pageLinux Active DirectoryEnumeration
Sie könnten die Enumeration über ldap und andere binäre Tools durchführen oder die Webseite im Port 443 des FreeIPA-Servers aufrufen.
Hosts, Benutzer und Gruppen
Es ist möglich, Hosts, Benutzer und Gruppen zu erstellen. Hosts und Benutzer werden in Container namens "Hostgruppen" bzw. "Benutzergruppen" einsortiert. Diese ähneln Organisationseinheiten (OU).
Standardmäßig erlaubt der LDAP-Server in FreeIPA anonyme Bindungen, und eine große Menge an Daten ist unauthentifiziert abrufbar. Dadurch können alle verfügbaren Daten unauthentifiziert abgerufen werden:
Um weitere Informationen zu erhalten, müssen Sie eine authentifizierte Sitzung verwenden (überprüfen Sie den Abschnitt zur Authentifizierung, um zu erfahren, wie Sie eine authentifizierte Sitzung vorbereiten).
Von einer domänengebundenen Maschine aus können Sie installierte Binärdateien verwenden, um die Domäne aufzulisten:
Der admin Benutzer von FreeIPA entspricht den Domänenadministratoren von AD.
Hashes
Der root Benutzer des IPA-Servers hat Zugriff auf die Passwort-Hashes.
Der Passworthash eines Benutzers wird als Base64 im Attribut "userPassword" gespeichert. Dieser Hash kann SSHA512 (ältere Versionen von FreeIPA) oder PBKDF2_SHA256 sein.
Der Nthash des Passworts wird als Base64 im Attribut "ipaNTHash" gespeichert, wenn das System eine Integration mit AD hat.
Um diese Hashes zu knacken:
• Wenn FreeIPA mit AD integriert ist, ist es einfach, den ipaNTHash zu knacken: Sie sollten Base64 dekodieren -> es als ASCII Hexadezimal neu codieren -> John The Ripper oder hashcat können Ihnen helfen, ihn schnell zu knacken
• Wenn eine ältere Version von FreeIPA verwendet wird und somit SSHA512 verwendet wird: Sie sollten Base64 dekodieren -> den SSHA512 Hash finden -> John The Ripper oder hashcat können Ihnen helfen, ihn zu knacken
• Wenn eine neue Version von FreeIPA verwendet wird und somit PBKDF2_SHA256 verwendet wird: Sie sollten Base64 dekodieren -> PBKDF2_SHA256 finden -> seine Länge beträgt 256 Byte. John kann mit 256 Bits (32 Byte) arbeiten -> SHA-265 wird als die Pseudo-Zufallsfunktion verwendet, die Blockgröße beträgt 32 Byte -> Sie können nur die ersten 256 Bits unseres PBKDF2_SHA256-Hashes verwenden -> John The Ripper oder hashcat können Ihnen helfen, ihn zu knacken
Um die Hashes zu extrahieren, müssen Sie root auf dem FreeIPA-Server sein, dort können Sie das Tool dbscan
verwenden, um sie zu extrahieren:
HBAC-Regeln
Hierbei handelt es sich um Regeln, die bestimmten Benutzern oder Hosts spezifische Berechtigungen für Ressourcen (Hosts, Dienste, Dienstgruppen usw.) gewähren.
Sudo-Regeln
FreeIPA ermöglicht eine zentrale Kontrolle über sudo-Berechtigungen über sudo-Regeln. Diese Regeln erlauben oder beschränken die Ausführung von Befehlen mit sudo auf Hosts innerhalb der Domäne. Ein Angreifer könnte potenziell die zutreffenden Hosts, Benutzer und erlaubten Befehle identifizieren, indem er diese Regelsätze untersucht.
Rollenbasierte Zugriffskontrolle
Eine Rolle besteht aus verschiedenen Privilegien, von denen jedes eine Sammlung von Berechtigungen umfasst. Diese Rollen können Benutzern, Benutzer-Gruppen, Hosts, Host-Gruppen und Diensten zugewiesen werden. Betrachten Sie beispielsweise die Standardrolle "Benutzeradministrator" in FreeIPA, um diese Struktur zu veranschaulichen.
Die Rolle Benutzeradministrator
hat folgende Privilegien:
Benutzeradministratoren
Gruppenadministratoren
Stufenbenutzeradministratoren
Mit den folgenden Befehlen ist es möglich, die Rollen, Privilegien und Berechtigungen aufzulisten:
Angriffszenario Beispiel
In https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e findest du ein einfaches Beispiel, wie man einige Berechtigungen missbrauchen kann, um die Domäne zu kompromittieren.
Linikatz/LinikatzV2
Privilege Escalation
root Benutzererstellung
Wenn du einen neuen Benutzer mit dem Namen root
erstellen kannst, kannst du ihn imitieren und wirst in der Lage sein, auf jede Maschine als root per SSH zuzugreifen.
DIES WURDE GEFIXT.
Eine detaillierte Erklärung findest du unter https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Referenzen
Last updated