FreeIPA Pentesting
Reading time: 9 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
Το FreeIPA είναι μια ανοιχτού κώδικα εναλλακτική λύση για το Microsoft Windows Active Directory, κυρίως για περιβάλλοντα Unix. Συνδυάζει έναν πλήρη LDAP κατάλογο με ένα MIT Kerberos Κέντρο Κατανομής Κλειδιών για διαχείριση παρόμοια με το Active Directory. Χρησιμοποιώντας το σύστημα Certificate System του Dogtag για τη διαχείριση πιστοποιητικών CA & RA, υποστηρίζει πολλαπλούς παράγοντες αυθεντικοποίησης, συμπεριλαμβανομένων των smartcards. Το SSSD είναι ενσωματωμένο για τις διαδικασίες αυθεντικοποίησης Unix.
Fingerprints
Files & Environment Variables
- Το αρχείο στο
/etc/krb5.conf
είναι όπου αποθηκεύονται οι πληροφορίες πελάτη Kerberos, απαραίτητες για την εγγραφή στο τομέα. Αυτό περιλαμβάνει τις τοποθεσίες των KDCs και των διακομιστών διαχείρισης, τις προεπιλεγμένες ρυθμίσεις και τους χάρτες. - Οι προεπιλεγμένες ρυθμίσεις για τους πελάτες και τους διακομιστές 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.
Binaries
Εργαλεία όπως ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
, και kvno
είναι κεντρικά για τη διαχείριση τομέων FreeIPA, χειριζόμενα τα εισιτήρια Kerberos, αλλάζοντας κωδικούς πρόσβασης και αποκτώντας εισιτήρια υπηρεσιών, μεταξύ άλλων λειτουργιών.
Network
Παρέχεται μια απεικόνιση για να απεικονίσει μια τυπική ρύθμιση διακομιστή FreeIPA.
Authentication
Η αυθεντικοποίηση στο FreeIPA, εκμεταλλευόμενη το Kerberos, αντικατοπτρίζει αυτήν στο Active Directory. Η πρόσβαση στους πόρους του τομέα απαιτεί ένα έγκυρο εισιτήριο Kerberos, το οποίο μπορεί να αποθηκευτεί σε διάφορες τοποθεσίες ανάλογα με τη διαμόρφωση του τομέα FreeIPA.
CCACHE Ticket Files
Τα αρχεία CCACHE, που αποθηκεύονται συνήθως σε /tmp
με δικαιώματα 600, είναι δυαδικές μορφές για την αποθήκευση διαπιστευτηρίων Kerberos, σημαντικά για την αυθεντικοποίηση χωρίς τον απλό κωδικό πρόσβασης του χρήστη λόγω της φορητότητάς τους. Η ανάλυση ενός εισιτηρίου CCACHE μπορεί να γίνει χρησιμοποιώντας την εντολή klist
, και η επαναχρησιμοποίηση ενός έγκυρου εισιτηρίου CCACHE περιλαμβάνει την εξαγωγή του KRB5CCNAME
στη διαδρομή του αρχείου εισιτηρίου.
Unix Keyring
Εναλλακτικά, τα εισιτήρια CCACHE μπορούν να αποθηκευτούν στο Linux keyring, προσφέροντας περισσότερη έλεγχο στη διαχείριση εισιτηρίων. Η έκταση της αποθήκευσης εισιτηρίων ποικίλλει (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), με το klist
ικανό να αναλύει αυτές τις πληροφορίες για τον χρήστη. Ωστόσο, η επαναχρησιμοποίηση ενός εισιτηρίου CCACHE από το Unix keyring μπορεί να παρουσιάσει προκλήσεις, με εργαλεία όπως το Tickey διαθέσιμα για την εξαγωγή εισιτηρίων Kerberos.
Keytab
Τα αρχεία keytab, που περιέχουν Kerberos principals και κρυπτογραφημένα κλειδιά, είναι κρίσιμα για την απόκτηση έγκυρων εισιτηρίων χορήγησης εισιτηρίων (TGT) χωρίς να χρειάζεται ο κωδικός πρόσβασης του principal. Η ανάλυση και η επαναχρησιμοποίηση διαπιστευτηρίων από αρχεία keytab μπορεί να γίνει εύκολα με βοηθητικά προγράμματα όπως το klist
και σενάρια όπως το KeytabParser.
Cheatsheet
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με το πώς να χρησιμοποιείτε τα εισιτήρια στο linux στον παρακάτω σύνδεσμο:
Enumeration
warning
Μπορείτε να εκτελέσετε την enumeration μέσω ldap και άλλων binary εργαλείων, ή συνδέοντας στη σελίδα web στην πόρτα 443 του διακομιστή FreeIPA.
Hosts, Users, and Groups
Είναι δυνατή η δημιουργία hosts, users και groups. Οι υπολογιστές και οι χρήστες ταξινομούνται σε κοντέινερ που ονομάζονται “Host Groups” και “User Groups” αντίστοιχα. Αυτά είναι παρόμοια με τις Οργανωτικές Μονάδες (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
note
Ο χρήστης admin του FreeIPA είναι ισοδύναμος με τους domain admins από το AD.
Hashes
Ο χρήστης root από τον IPA server έχει πρόσβαση στους κωδικούς hashes.
- Ο κωδικός hash ενός χρήστη αποθηκεύεται ως base64 στο “userPassword” attribute. Αυτός ο κωδικός μπορεί να είναι SSHA512 (παλιές εκδόσεις του FreeIPA) ή PBKDF2_SHA256.
- Ο Nthash του κωδικού αποθηκεύεται ως base64 στο “ipaNTHash” αν το σύστημα έχει integration με το AD.
Για να σπάσετε αυτούς τους κωδικούς:
• Αν το freeIPA είναι ενσωματωμένο με το AD, το ipaNTHash είναι εύκολο να σπάσει: Πρέπει να decode base64 -> να το ξανακωδικοποιήσετε ως ASCII hex -> το John The Ripper ή το hashcat μπορούν να σας βοηθήσουν να το σπάσετε γρήγορα
• Αν χρησιμοποιείται παλιά έκδοση του FreeIPA, τότε χρησιμοποιείται SSHA512: Πρέπει να αποκωδικοποιήσετε base64 -> να βρείτε τον κωδικό SSHA512 -> το John The Ripper ή το hashcat μπορούν να σας βοηθήσουν να το σπάσετε
• Αν χρησιμοποιείται νέα έκδοση του FreeIPA, τότε χρησιμοποιείται PBKDF2_SHA256: Πρέπει να αποκωδικοποιήσετε base64 -> να βρείτε το PBKDF2_SHA256 -> το length του είναι 256 byte. Ο John μπορεί να δουλέψει με 256 bits (32 byte) -> το SHA-265 χρησιμοποιείται ως η ψευδο-τυχαία συνάρτηση, το μέγεθος μπλοκ είναι 32 byte -> μπορείτε να χρησιμοποιήσετε μόνο τα πρώτα 256 bit του κωδικού PBKDF2_SHA256 -> το John The Ripper ή το hashcat μπορούν να σας βοηθήσουν να το σπάσετε
.png)
Για να εξάγετε τους κωδικούς πρέπει να είστε root στον FreeIPA server, εκεί μπορείτε να χρησιμοποιήσετε το εργαλείο dbscan
για να τους εξάγετε:
.png)
HBAC-Rules
Υπάρχουν οι κανόνες που παρέχουν συγκεκριμένες άδειες σε χρήστες ή hosts πάνω σε πόρους (hosts, υπηρεσίες, ομάδες υπηρεσιών...)
# 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-Rules
Το FreeIPA επιτρέπει κεντρικό έλεγχο πάνω από sudo permissions μέσω των sudo-rules. Αυτοί οι κανόνες επιτρέπουν ή περιορίζουν την εκτέλεση εντολών με sudo σε hosts εντός του τομέα. Ένας επιτιθέμενος θα μπορούσε δυνητικά να εντοπίσει τους εφαρμοστέους hosts, χρήστες και επιτρεπόμενες εντολές εξετάζοντας αυτά τα σύνολα κανόνων.
# 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
Έλεγχος Πρόσβασης Βασισμένος σε Ρόλους
Ένας ρόλος αποτελείται από διάφορα προνόμια, το καθένα από τα οποία περιλαμβάνει μια συλλογή αδειών. Αυτοί οι ρόλοι μπορούν να ανατεθούν σε Χρήστες, Ομάδες Χρηστών, Hosts, Ομάδες Hosts και Υπηρεσίες. Για παράδειγμα, εξετάστε τον προεπιλεγμένο ρόλο “Διαχειριστής Χρηστών” στο 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 μπορείτε να βρείτε ένα απλό παράδειγμα για το πώς να εκμεταλλευτείτε ορισμένα δικαιώματα για να συμβιβάσετε το domain.
Linikatz/LinikatzV2
Privesc
δημιουργία χρήστη root
warning
Αν μπορείτε να δημιουργήσετε έναν νέο χρήστη με το όνομα root
, μπορείτε να τον μιμηθείτε και θα μπορείτε να SSH σε οποιαδήποτε μηχανή ως root.
ΑΥΤΟ ΕΧΕΙ ΔΙΟΡΘΩΘΕΙ.
Μπορείτε να ελέγξετε μια λεπτομερή εξήγηση στο https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Αναφορές
- https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
- https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a
- https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1
- https://www.youtube.com/watch?v=9dOu-7BTwPQ
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.