hacktricks/linux-hardening/freeipa-pentesting.md
Translator workflow 35c6b081d2 Translated to Greek
2024-02-10 22:40:18 +00:00

16 KiB
Raw Blame History

Ελεγκτική δοκιμή FreeIPA

Μάθετε το χάκινγκ του 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, που είναι απαραίτητες για την εγγραφή στον τομέα. Αυτό περιλαμβάνει τις τοποθεσίες των 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.

Δυαδικά Αρχεία

Εργαλεία όπως το ipa, kdestroy, kinit, klist, kpasswd, ksu, kswitch και kvno είναι κεντρικά για τη διαχείριση των τομέων FreeIPA, την χειρισμό των εισιτηρίων Kerberos, την αλλαγή κωδικών πρόσβασης και την απόκτηση εισιτηρίων υπηρεσιών, μεταξύ άλλων λειτουργιών.

Δίκτυο

Παρέχεται μια εικόνα για να απεικονίσει μια τυπική εγκατάσταση διακομιστή FreeIPA.

Πιστοποίηση

Η πιστοποίηση στο FreeIPA, εκμεταλλευόμενη το Kerberos, αντικατοπτρίζει αυτήν στο Active Directory. Η πρόσβαση σε πόρους του τομέα απαιτεί ένα έγκυρο εισιτήριο Kerberos, το οποίο μπορεί να αποθηκευτεί σε διάφορες τοποθεσίες ανάλογα με τη διαμόρφωση του τομέα FreeIPA.

Αρχεία CCACHE Ticket

Τα αρχεία CCACHE, που αποθηκεύονται συνήθως στο /tmp με δικαιώματα 600, είναι δυαδικά μορφότυπα για την αποθήκευση διαπιστευτηρίων Kerberos, σημαντικά για την πιστοποίηση χωρίς τον καθαρό κείμενο κωδικό πρόσβασης του χρήστη λόγω της φορητότητάς τους. Η ανάλυση ενός εισιτηρίου CCACHE μπορεί να γίνει χρησιμοποιώντας την εντολή klist, και η επαναχρησιμοποίηση ενός έγκυρου εισιτηρίου CCACHE περιλαμβάνει την εξαγωγή του KRB5CCNAME στη διαδρομή του αρχείου εισιτηρίου.

Κλειδαριά Unix

Εναλλακτικά, τα εισιτήρια CCACHE μπορούν να αποθηκευτούν στο Linux keyring, προσφέρον

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

{% hint style="info" %} Ο χρήστης admin του FreeIPA είναι ισοδύναμος με τους domain admins από το AD. {% endhint %}

Hashes

Ο χρήστης root από τον διακομιστή IPA έχει πρόσβαση στις κατακερματισμένες κωδικοποιήσεις.

  • Ο κατακερματισμένος κωδικός ενός χρήστη αποθηκεύεται ως base64 στο χαρακτηριστικό "userPassword". Αυτός ο κατακερματισμένος κωδικός μπορεί να είναι SSHA512 (παλιές εκδόσεις του FreeIPA) ή PBKDF2_SHA256.
  • Το Nthash του κωδικού αποθηκεύεται ως base64 στο "ipaNTHash" αν το σύστημα έχει ενσωμάτωση με το AD.

Για να αποκρυπτογραφήσετε αυτές τις κατακερματισμένες κωδικοποιήσεις:

• Εάν το freeIPA έχει ενσωμάτωση με το AD, το ipaNTHash είναι εύκολο να αποκρυπτογραφηθεί: Θα πρέπει να αποκωδικοποιήσετε το base64 -> να το ξανακωδικοποιήσετε ως ASCII hex -> Ο John The Ripper ή το hashcat μπορούν να σας βοηθήσουν να το αποκρυπτογραφήσετε γρήγορα

• Εάν χρησιμοποιείται μια παλιά έκδοση του FreeIPA, τότε χρησιμοποιείται το SSHA512: Θα πρέπει να αποκωδικοποιήσετε το base64 -> να βρείτε το SSHA512 hash -> Ο John The Ripper ή το hashcat μπορούν να σας βοηθήσουν να το αποκρυπτογραφήσετε

• Εάν χρησιμοποιείται νέα έκδοση του FreeIPA, τότε χρησιμοποιείται το PBKDF2_SHA256: Θα πρέπει να αποκωδικοποιήσετε το base64 -> να βρείτε το PBKDF2_SHA256 -> το μήκος του είναι 256 byte. Ο John μπορεί να λειτουργήσει με 256 bits (32 byte) -> Το SHA-265 χρησιμοποιείται ως η ψευδο-τυχαία συνάρτηση, το μέγεθος του μπλοκ είναι 32 byte -> μπορείτε να χρησιμοποιήσετε μόνο τα πρώτα 256 bit του κατακερματισμένου 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

{% hint style="warning" %} Εάν μπορείτε να δημιουργήσετε ένα νέο χρήστη με το όνομα root, μπορείτε να προσποιηθείτε ως αυτόν και θα μπορείτε να συνδεθείτε μέσω SSH σε οποιονδήποτε υπολογιστή ως root.

ΑΥΤΟ ΈΧΕΙ ΔΙΟΡΘΩΘΕΊ. {% endhint %}

Μπορείτε να ελέγξετε μια λεπτομερή εξήγηση στο https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b

Αναφορές

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks: