hacktricks/linux-hardening/freeipa-pentesting.md

214 lines
12 KiB
Markdown
Raw Normal View History

2022-10-22 14:44:59 +00:00
# FreeIPA Pentesting
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2023-12-30 20:49:23 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
2024-02-10 13:11:20 +00:00
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-10-22 14:44:59 +00:00
</details>
2024-02-10 13:11:20 +00:00
## Osnovne informacije
2022-10-22 14:44:59 +00:00
FreeIPA je open-source **alternativa** Microsoft Windows **Active Directory**-u, pretežno za **Unix** okruženja. Kombinuje kompletan **LDAP direktorijum** sa MIT **Kerberos** centrom za distribuciju ključeva za upravljanje slično Active Directory-u. Koristi Dogtag **Certificate System** za upravljanje CA & RA sertifikatima, podržava **multi-faktorsku** autentikaciju, uključujući pametne kartice. SSSD je integrisan za Unix autentikacione procese.
2022-10-22 14:44:59 +00:00
## Otisci prstiju
2022-10-22 14:44:59 +00:00
### Fajlovi i promenljive okruženja
2024-02-05 02:28:59 +00:00
* Fajl na lokaciji `/etc/krb5.conf` je gde se čuvaju informacije o Kerberos klijentu, neophodne za upis u domen. To uključuje lokacije KDC-ova i admin servera, podrazumevane postavke i mapiranja.
* Podrazumevane postavke za IPA klijente i servere se postavljaju u fajlu na lokaciji `/etc/ipa/default.conf`.
* Hostovi unutar domena moraju imati `krb5.keytab` fajl na lokaciji `/etc/krb5.keytab` za autentikacione procese.
* Različite promenljive okruženja (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) se koriste za pokazivanje određenih fajlova i postavki relevantnih za Kerberos autentikaciju.
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
### Binarni fajlovi
2022-10-22 14:44:59 +00:00
Alati poput `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch` i `kvno` su ključni za upravljanje FreeIPA domenima, rukovanje Kerberos karticama, menjanje lozinki i dobijanje servisnih karata, među ostalim funkcionalnostima.
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
### Mreža
2022-10-22 15:26:54 +00:00
Pružen je prikaz tipičnog FreeIPA server setup-a.
2022-10-22 15:26:54 +00:00
## Autentikacija
2022-10-22 14:44:59 +00:00
Autentikacija u FreeIPA, koristeći **Kerberos**, odražava onu u **Active Directory**-u. Pristup resursima domena zahteva validnu Kerberos karticu, koja se može čuvati na različitim lokacijama u zavisnosti od konfiguracije FreeIPA domena.
2022-10-22 14:44:59 +00:00
### **CCACHE fajlovi karata**
2022-10-22 14:44:59 +00:00
CCACHE fajlovi, obično smešteni u **`/tmp`** sa **600** dozvolama, su binarni formati za čuvanje Kerberos akreditiva, važni za autentikaciju bez korisnikove plaintext lozinke zbog njihove prenosivosti. Parsiranje CCACHE karte se može obaviti korišćenjem `klist` komande, a ponovna upotreba validne CCACHE karte uključuje izvoz `KRB5CCNAME` putanje do fajla karte.
2022-10-22 14:44:59 +00:00
2022-10-22 15:26:54 +00:00
### **Unix Keyring**
2022-10-22 14:44:59 +00:00
Alternativno, CCACHE karte se mogu čuvati u Linux keyring-u, nudeći više kontrole nad upravljanjem karticama. Opseg čuvanja karata varira (`KEYRING:ime`, `KEYRING:proces:ime`, `KEYRING:nit:ime`, `KEYRING:sednica:ime`, `KEYRING:trajno:uidbroj`), sa `klist` sposobnim da parsira ove informacije za korisnika. Međutim, ponovna upotreba CCACHE karte iz Unix keyring-a može predstavljati izazove, sa alatima poput **Tickey** dostupnim za izvlačenje Kerberos karata.
2022-10-22 14:44:59 +00:00
2024-02-05 02:28:59 +00:00
### Keytab
2022-10-22 14:44:59 +00:00
Keytab fajlovi, koji sadrže Kerberos principe i šifrovane ključeve, su ključni za dobijanje validnih kartica za dodelu ključeva (TGT) bez potrebe za korisnikovom lozinkom. Parsiranje i ponovna upotreba akreditiva iz keytab fajlova se lako može obaviti pomoću alatki poput `klist` i skripti poput **KeytabParser**.
2022-10-22 14:44:59 +00:00
### Šifarnik
2022-10-22 14:44:59 +00:00
Više informacija o korišćenju karata u linuxu možete pronaći na sledećem linku:
2022-10-22 14:44:59 +00:00
{% content-ref url="privilege-escalation/linux-active-directory.md" %}
[linux-active-directory.md](privilege-escalation/linux-active-directory.md)
{% endcontent-ref %}
2024-02-10 13:11:20 +00:00
## Enumeracija
2022-10-22 14:44:59 +00:00
2022-10-22 15:26:54 +00:00
{% hint style="warning" %}
Možete izvršiti **enumeraciju** putem **ldap-a** i drugih **binarnih** alata, ili **povezivanjem na web stranicu na portu 443 FreeIPA servera**.
2022-10-22 15:26:54 +00:00
{% endhint %}
### Hostovi, Korisnici i Grupe <a href="#id-4b3b" id="id-4b3b"></a>
2022-10-22 15:26:54 +00:00
Moguće je kreirati **hostove**, **korisnike** i **grupe**. Hostovi i korisnici su smešteni u kontejnere nazvane “**Host Grupe**” i “**User Grupe**” respektivno. Ovi su slični **Organizacionim Jedinicama** (OU).
2022-10-22 14:44:59 +00:00
Podrazumevano u FreeIPA, LDAP server dozvoljava **anonimne bindove**, i veliki deo podataka je enumerabilan **neautentifikovan**. Ovo može enumerisati sve dostupne podatke neautentifikovano:
2022-10-22 14:44:59 +00:00
```
2024-02-10 13:11:20 +00:00
ldapsearch -x
2022-10-22 14:44:59 +00:00
```
Da biste dobili **više informacija**, morate koristiti **autentifikovanu** sesiju (proverite odeljak o Autentifikaciji kako biste saznali kako da pripremite autentifikovanu sesiju).
2022-10-22 14:44:59 +00:00
```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
2024-02-10 13:11:20 +00:00
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
2022-10-22 14:44:59 +00:00
```
Sa računara pridruženog domenu moći ćete koristiti **instalirane binarne datoteke** za enumeraciju domena:
2022-10-22 14:44:59 +00:00
```bash
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
```
2022-10-22 15:26:54 +00:00
{% hint style="info" %}
Korisnik **admin** u **FreeIPA**-i je ekvivalentan **domain admin**-ima iz **AD**-a.
2022-10-22 15:26:54 +00:00
{% endhint %}
### Hesovi <a href="#id-482b" id="id-482b"></a>
2022-10-22 15:26:54 +00:00
Korisnik **root** sa **IPA servera** ima pristup hesovima lozinki.
2022-10-22 15:26:54 +00:00
* Hes lozinke korisnika je sačuvan kao **base64** u atributu “**userPassword**”. Ovaj hes može biti **SSHA512** (stare verzije FreeIPA) ili **PBKDF2\_SHA256**.
* **Nthash** lozinke je sačuvan kao **base64** u “**ipaNTHash**” ako sistem ima **integraciju** sa **AD**-om.
2022-10-22 15:26:54 +00:00
Za dešifrovanje ovih hesova:
2022-10-22 15:26:54 +00:00
• Ako je FreeIPA integrisan sa AD-om, **ipaNTHash** je lako dešifrovati: Treba da **dekodirate** **base64** -> ponovo kodirate kao **ASCII** heks -> John The Ripper ili **hashcat** mogu vam pomoći da ga brzo dešifrujete
2022-10-22 15:26:54 +00:00
• Ako se koristi stara verzija FreeIPA, onda se koristi **SSHA512**: Treba da dekodirate **base64** -> pronađete SSHA512 **hes** -> John The Ripper ili **hashcat** mogu vam pomoći da ga dešifrujete
2022-10-22 15:26:54 +00:00
• Ako se koristi nova verzija FreeIPA, onda se koristi **PBKDF2\_SHA256**: Treba da dekodirate **base64** -> pronađete PBKDF2\_SHA256 -> njegova **dužina** je 256 bajtova. John može raditi sa 256 bita (32 bajta) -> SHA-265 se koristi kao pseudo-slučajna funkcija, veličina bloka je 32 bajta -> možete koristiti samo prvih 256 bita našeg PBKDF2\_SHA256 hesa -> John The Ripper ili hashcat mogu vam pomoći da ga dešifrujete
2022-10-22 15:26:54 +00:00
<figure><img src="../.gitbook/assets/image (652).png" alt=""><figcaption></figcaption></figure>
2022-10-22 15:26:54 +00:00
Da biste izvukli hesove, morate biti **root na FreeIPA serveru**, tamo možete koristiti alatku **`dbscan`** da ih izvučete:
2022-10-22 15:26:54 +00:00
<figure><img src="../.gitbook/assets/image (290).png" alt=""><figcaption></figcaption></figure>
2022-10-22 15:26:54 +00:00
### HBAC-Pravila <a href="#id-482b" id="id-482b"></a>
2022-10-22 14:44:59 +00:00
Ovo su pravila koja dodeljuju specifična ovlašćenja korisnicima ili hostovima nad resursima (hostovi, servisi, grupe servisa...).
2022-10-22 14:44:59 +00:00
```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 <hbacrule> --all
```
#### Sudo-pravila
2022-10-22 14:44:59 +00:00
FreeIPA omogućava centralizovanu kontrolu nad **sudo dozvolama** putem sudo-pravila. Ova pravila omogućavaju ili ograničavaju izvršavanje komandi sa sudo-om na hostovima unutar domena. Napadač bi potencijalno mogao identifikovati primenljive hostove, korisnike i dozvoljene komande pregledom ovih setova pravila.
2022-10-22 14:44:59 +00:00
```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 <sudorule> --all
```
2024-02-10 13:11:20 +00:00
### Kontrola pristupa zasnovana na ulogama
2022-10-22 14:44:59 +00:00
**Uloga** se sastoji od različitih **privilegija**, od kojih svaka obuhvata kolekciju **dozvola**. Ove uloge mogu biti dodeljene korisnicima, grupama korisnika, **hostovima**, grupama hostova i uslugama. Na primer, razmotrite podrazumevanu ulogu "Administrator korisnika" u FreeIPA da biste ilustrovali ovu strukturu.
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
Uloga `Administrator korisnika` ima sledeće privilegije:
2022-10-22 14:44:59 +00:00
- **Administratori korisnika**
- **Administratori grupa**
- **Administratori korisnika faze**
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
Pomoću sledećih komandi moguće je nabrojati uloge, privilegije i dozvole:
2022-10-22 14:44:59 +00:00
```bash
# 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
2024-02-10 13:11:20 +00:00
ipa privilege-find
2022-10-22 14:44:59 +00:00
ipa privilege-show <privilege> --all
ipa permission-find
ipa permission-show <permission> --all
```
### Primer napadačkog scenarija
2022-10-22 14:44:59 +00:00
Na [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) možete pronaći jednostavan primer kako zloupotrebiti određene dozvole da biste kompromitovali domen.
2022-10-22 14:44:59 +00:00
### Linikatz/LinikatzV2
* [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2)
* [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz)
## Privesc
2022-10-22 14:44:59 +00:00
### ~~kreiranje korisnika root~~
2022-10-22 14:44:59 +00:00
{% hint style="warning" %}
2024-02-10 13:11:20 +00:00
Ako možete **kreirati novog korisnika sa imenom `root`**, možete se predstaviti kao on i moći ćete **SSH-ovati na bilo koju mašinu kao root.**
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
**OVO JE POPRAVLJENO.**
2022-10-22 14:44:59 +00:00
{% endhint %}
2024-02-10 13:11:20 +00:00
Detaljno objašnjenje možete pronaći na [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
## Reference
2024-02-05 02:28:59 +00:00
* [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)
2022-10-22 14:44:59 +00:00
<details>
<summary><strong>Naučite hakovanje AWS-a od početka do naprednog nivoa sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-10-22 14:44:59 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2023-12-30 20:49:23 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
2024-02-10 13:11:20 +00:00
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-10-22 14:44:59 +00:00
</details>