# Ελεγκτική δοκιμή FreeIPA
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με τοhtARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
## Βασικές Πληροφορίες
Το 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
```
Για να λάβετε **περισσότερες πληροφορίες**, πρέπει να χρησιμοποιήσετε μια **επαληθευμένη** συνεδρία (ελέγξτε την ενότητα Επαλήθευση για να μάθετε πώς να προετοιμάσετε μια επαληθευμένη συνεδρία).
```bash
# 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"
```
Από ένα μηχάνημα που έχει ενταχθεί στον τομέα, θα μπορείτε να χρησιμοποιήσετε τα **εγκατεστημένα δυαδικά αρχεία** για να απαριθμήσετε τον τομέα:
```bash
ipa user-find
ipa usergroup-find
ipa host-find
ipa host-group-find
-------------------
ipa user-show --all
ipa usergroup-show --all
ipa host-find --all
ipa hostgroup-show --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
Αυτοί είναι οι κανόνες που χορηγούν συγκεκριμένα δικαιώματα σε χρήστες ή οικοδεσπότες για πόρους (οικοδεσπότες, υπηρεσίες, ομάδες υπηρεσιών...)
```bash
# 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 --all
```
#### Κανόνες Sudo
Το FreeIPA επιτρέπει τον κεντρικό έλεγχο των δικαιωμάτων **sudo** μέσω των κανόνων sudo. Αυτοί οι κανόνες επιτρέπουν ή περιορίζουν την εκτέλεση εντολών με το sudo σε υπολογιστές εντός του τομέα. Ένας επιτιθέμενος θα μπορούσε ενδεχομένως να εντοπίσει τους σχετικούς υπολογιστές, χρήστες και επιτρεπόμενες εντολές εξετάζοντας αυτούς τους κανόνες.
```bash
# 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 --all
```
### Έλεγχος Πρόσβασης με Βάση τον Ρόλο
Ένας **ρόλος** αποτελείται από διάφορα **προνόμια**, τα οποία περιλαμβάνουν μια συλλογή από **δικαιώματα**. Αυτοί οι ρόλοι μπορούν να ανατεθούν σε Χρήστες, **Ομάδες** Χρηστών, **Υπολογιστές**, Ομάδες Υπολογιστών και Υπηρεσίες. Για παράδειγμα, ας θεωρήσουμε τον προεπιλεγμένο ρόλο "Διαχειριστής Χρηστών" στο FreeIPA για να εξηγήσουμε αυτήν τη δομή.
Ο ρόλος `Διαχειριστής Χρηστών` έχει τα εξής προνόμια:
* **Διαχειριστές Χρηστών**
* **Διαχειριστές Ομάδων**
* **Διαχειριστές Σκηνικών Χρηστών**
Με τις παρακάτω εντολές είναι δυνατό να απαριθμήσετε τους ρόλους, τα προνόμια και τα δικαιώματα:
```bash
# Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
# Using ipa binary
ipa role-find
ipa role-show --all
ipa privilege-find
ipa privilege-show --all
ipa permission-find
ipa permission-show --all
```
### Παράδειγμα Σεναρίου Επίθεσης
Στο [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) μπορείτε να βρείτε ένα απλό παράδειγμα πώς να καταχραστείτε ορισμένες άδειες για να διακινδυνεύσετε τον τομέα.
### Linikatz/LinikatzV2
* [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2)
* [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz)
## Ανύψωση Προνομίων
### ~~Δημιουργία χρήστη root~~
{% hint style="warning" %}
Εάν μπορείτε να **δημιουργήσετε ένα νέο χρήστη με το όνομα `root`**, μπορείτε να προσποιηθείτε ως αυτόν και θα μπορείτε να **συνδεθείτε μέσω SSH σε οποιονδήποτε υπολογιστή ως root**.
**ΑΥΤΟ ΈΧΕΙ ΔΙΟΡΘΩΘΕΊ.**
{% endhint %}
Μπορείτε να ελέγξετε μια λεπτομερή εξήγηση στο [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-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-i-authentication-77e73d837d6a)
* [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1)
* [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ)
Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με τοhtARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.