hacktricks/linux-hardening/freeipa-pentesting.md

12 KiB

FreeIPA Pentesting

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

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.

Otisci

Fajlovi i promenljive okruženja

  • 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 fajl krb5.keytab 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 specifičnih fajlova i postavki relevantnih za Kerberos autentikaciju.

Binarni fajlovi

Alati poput ipa, kdestroy, kinit, klist, kpasswd, ksu, kswitch i kvno su centralni za upravljanje FreeIPA domenima, rukovanje Kerberos tiketima, menjanje lozinki i dobijanje servisnih tiketa, među ostalim funkcionalnostima.

Mreža

Dostupna je ilustracija koja prikazuje tipičan FreeIPA server setup.

Autentikacija

Autentikacija u FreeIPA, koristeći Kerberos, odražava onu u Active Directory-u. Pristup resursima domena zahteva validan Kerberos tiket, koji se može čuvati na različitim lokacijama u zavisnosti od konfiguracije FreeIPA domena.

CCACHE Tiket fajlovi

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 tiketa se može obaviti korišćenjem klist komande, a ponovna upotreba validnog CCACHE Tiketa uključuje izvoz KRB5CCNAME na putanju fajla tiketa.

Unix Keyring

Alternativno, CCACHE Tiketi se mogu čuvati u Linux keyring-u, nudeći više kontrole nad upravljanjem tiketima. Obim čuvanja tiketa varira (KEYRING:ime, KEYRING:proces:ime, KEYRING:nit:ime, KEYRING:sednica:ime, KEYRING:trajni:uidbroj), pri čemu je klist sposoban da parsira ove informacije za korisnika. Međutim, ponovna upotreba CCACHE Tiketa iz Unix keyring-a može predstavljati izazove, sa alatima poput Tickey dostupnim za izvlačenje Kerberos tiketa.

Keytab

Keytab fajlovi, koji sadrže Kerberos principe i šifrovane ključeve, su ključni za dobijanje validnih tiketa za dodelu ključeva (TGT) bez potrebe za korisnikovom lozinkom. Parsiranje i ponovna upotreba akreditiva iz keytab fajlova se lako može izvršiti pomoću alatki poput klist i skripti poput KeytabParser.

Šifarnik

Više informacija o korišćenju tiketa u linuxu možete pronaći na sledećem linku:

{% content-ref url="privilege-escalation/linux-active-directory.md" %} linux-active-directory.md {% endcontent-ref %}

Enumeracija

{% hint style="warning" %} Možete izvršiti enumeraciju putem ldap-a i drugih binarnih alata, ili povezivanjem na veb stranicu na portu 443 FreeIPA servera. {% endhint %}

Hostovi, Korisnici i Grupe

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).

Podrazumevano u FreeIPA, LDAP server dozvoljava anonimne bindove, i veliki deo podataka je enumerabilan neautentifikovan. Ovo može enumerisati sve dostupne podatke neautentifikovano:

ldapsearch -x

Da biste dobili više informacija, morate koristiti autentifikovanu sesiju (proverite odeljak o Autentifikaciji kako biste saznali kako da pripremite autentifikovanu sesiju).

# 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"

Sa računara pridruženog domenu moći ćete koristiti instalirane binarne datoteke za enumeraciju domena:

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" %} Korisnik admin u FreeIPA-i je ekvivalentan domain admin-ima iz AD-a. {% endhint %}

Hesovi

Korisnik root sa IPA servera ima pristup hesovima lozinki.

  • 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.

Da biste probili ove hesove:

• Ako je FreeIPA integrisan sa AD-om, ipaNTHash je lako probiti: Treba da dekodirate base64 -> ponovo kodirate kao ASCII heks -> John The Ripper ili hashcat vam mogu pomoći da ga brzo probijete

• Ako se koristi stara verzija FreeIPA, pa se koristi SSHA512: Treba da dekodirate base64 -> pronađete SSHA512 hes -> John The Ripper ili hashcat vam mogu pomoći da ga probijete

• Ako se koristi nova verzija FreeIPA, pa 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 vam mogu pomoći da ga probijete

Da biste izvukli hesove, morate biti root na FreeIPA serveru, tamo možete koristiti alatku dbscan da ih izvučete:

HBAC-Pravila

Ovo su pravila koja dodeljuju specifična ovlašćenja korisnicima ili hostovima nad resursima (hostovi, servisi, grupe servisa...).

# 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

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.

# 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

Kontrola pristupa zasnovana na ulogama

Uloga se sastoji od različitih privilegija, od kojih svaka obuhvata kolekciju dozvola. Ove uloge mogu biti dodeljene korisnicima, korisničkim grupama, računarima, grupama računara i uslugama. Na primer, razmotrite podrazumevanu ulogu "Administrator korisnika" u sistemu FreeIPA da biste ilustrovali ovu strukturu.

Uloga Administrator korisnika ima sledeće privilegije:

  • Administratori korisnika
  • Administratori grupa
  • Administratori faze korisnika

Pomoću sledećih komandi moguće je nabrojati uloge, privilegije i dozvole:

# 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

Primer napadačkog scenarija

U 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.

Linikatz/LinikatzV2

Eskalacija privilegija

kreiranje korisnika root

{% hint style="warning" %} 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.

OVO JE POPRAVLJENO. {% endhint %}

Detaljno objašnjenje možete pronaći na https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: