FreeIPA Pentesting
Reading time: 8 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne Informacije
FreeIPA je open-source alternativa za Microsoft Windows Active Directory, prvenstveno za Unix okruženja. Kombinuje kompletnu LDAP direktoriju sa MIT Kerberos sistemom za distribuciju ključeva za upravljanje sličnim Active Directory. Koristeći Dogtag Sistem Sertifikata za upravljanje CA i RA sertifikatima, podržava multi-factor autentifikaciju, uključujući pametne kartice. SSSD je integrisan za Unix procese autentifikacije.
Otisci
Datoteke i Varijable Okruženja
- Datoteka na
/etc/krb5.conf
je mesto gde se čuvaju informacije o Kerberos klijentu, neophodne za upis u domen. Ovo uključuje lokacije KDC-a i admin servera, podrazumevane postavke i mape. - Podrazumevane postavke za IPA klijente i servere su postavljene u datoteci koja se nalazi na
/etc/ipa/default.conf
. - Hostovi unutar domena moraju imati
krb5.keytab
datoteku na/etc/krb5.keytab
za procese autentifikacije. - Različite varijable okruženja (
KRB5CCNAME
,KRB5_KTNAME
,KRB5_CONFIG
,KRB5_KDC_PROFILE
,KRB5RCACHETYPE
,KRB5RCACHEDIR
,KRB5_TRACE
,KRB5_CLIENT_KTNAME
,KPROP_PORT
) se koriste za upućivanje na specifične datoteke i postavke relevantne za Kerberos autentifikaciju.
Binarni
Alati kao što su ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
, i kvno
su centralni za upravljanje FreeIPA domenima, rukovanje Kerberos tiketima, menjanje lozinki i sticanje servisnih tiketa, među ostalim funkcionalnostima.
Mreža
Prikazana je ilustracija koja prikazuje tipičnu FreeIPA server konfiguraciju.
Autentifikacija
Autentifikacija u FreeIPA, koristeći Kerberos, odražava onu u Active Directory. Pristup resursima domena zahteva važeći Kerberos tiket, koji može biti smešten na različitim mestima u zavisnosti od konfiguracije FreeIPA domena.
CCACHE Ticket Datoteke
CCACHE datoteke, obično smeštene u /tmp
sa 600 dozvolama, su binarni formati za čuvanje Kerberos kredencijala, važni za autentifikaciju bez korisničke lozinke u običnom tekstu zbog njihove prenosivosti. Parsiranje CCACHE tiketa može se izvršiti korišćenjem klist
komande, a ponovna upotreba važećeg CCACHE Tiketa uključuje izvoz KRB5CCNAME
na putanju datoteke tiketa.
Unix Keyring
Alternativno, CCACHE Tiketi mogu biti smešteni u Linux keyring, nudeći veću kontrolu nad upravljanjem tiketima. Opseg skladištenja tiketa varira (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), pri čemu klist
može parsirati ove informacije za korisnika. Međutim, ponovna upotreba CCACHE Tiketa iz Unix keyring-a može predstavljati izazove, a alati poput Tickey su dostupni za ekstrakciju Kerberos tiketa.
Keytab
Keytab datoteke, koje sadrže Kerberos principe i enkriptovane ključeve, su ključne za dobijanje važećih tiketa za dodelu tiketa (TGT) bez potrebe za lozinkom principa. Parsiranje i ponovna upotreba kredencijala iz keytab datoteka može se lako izvršiti pomoću alata kao što su klist
i skripti kao što je KeytabParser.
Cheatsheet
Možete pronaći više informacija o tome kako koristiti tikete u linuxu na sledećem linku:
Enumeracija
warning
Možete izvršiti enumeraciju putem ldap i drugih binarnih alata, ili povezivanjem na veb stranicu na portu 443 FreeIPA servera.
Hostovi, Korisnici i Grupe
Moguće je kreirati hostove, korisnike i grupe. Hostovi i korisnici su raspoređeni u kontejnere nazvane “Host Grupe” i “Korisničke Grupe” respektivno. Ove su slične Organizacionim Jedinicama (OU).
Podrazumevano u FreeIPA, LDAP server omogućava anonimne veze, i veliki deo podataka je enumerabilan neautentifikovano. Ovo može enumerisati sve dostupne podatke neautentifikovano:
ldapsearch -x
Da biste dobili više informacija, potrebno je da koristite autentifikovanu sesiju (proverite odeljak o autentifikaciji da 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 mašine pridružene domenu moći ćete da koristite 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
note
Korisnik admin u FreeIPA je ekvivalentan domain admins iz AD.
Hashes
Korisnik root sa IPA servera ima pristup lozinkama hash.
- Hash lozinke korisnika se čuva kao base64 u atributu “userPassword”. Ovaj hash može biti SSHA512 (stare verzije FreeIPA) ili PBKDF2_SHA256.
- Nthash lozinke se čuva kao base64 u “ipaNTHash” ako sistem ima integraciju sa AD.
Da biste probili ove hash:
• Ako je freeIPA integrisan sa AD, ipaNTHash je lako probiti: Trebalo bi da dekodirate base64 -> ponovo kodirate kao ASCII hex -> John The Ripper ili hashcat vam mogu pomoći da to brzo probijete
• Ako se koristi stara verzija FreeIPA, onda se koristi SSHA512: Trebalo bi da dekodirate base64 -> pronađete SSHA512 hash -> John The Ripper ili hashcat vam mogu pomoći da to probijete
• Ako se koristi nova verzija FreeIPA, onda se koristi PBKDF2_SHA256: Trebalo bi da dekodirate base64 -> pronađete PBKDF2_SHA256 -> njegova dužina je 256 bajta. John može raditi sa 256 bita (32 bajta) -> SHA-265 se koristi kao pseudo-random funkcija, veličina bloka je 32 bajta -> možete koristiti samo prvih 256 bita našeg PBKDF2_SHA256 hasha -> John The Ripper ili hashcat vam mogu pomoći da to probijete
.png)
Da biste izvukli hash, morate biti root na FreeIPA serveru, tamo možete koristiti alat dbscan
da ih izvučete:
.png)
HBAC-Rules
Postoje pravila koja dodeljuju specifične dozvole korisnicima ili hostovima nad resursima (hostovi, usluge, grupe usluga...)
# 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 omogućava centralizovanu kontrolu nad sudo permissions putem sudo pravila. Ova pravila omogućavaju ili ograničavaju izvršavanje komandi sa sudo na hostovima unutar domena. Napadač bi potencijalno mogao da identifikuje primenljive hostove, korisnike i dozvoljene komande ispitujući ove skupove 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 ulozi
Uloga se sastoji od različitih privilegija, od kojih svaka obuhvata skup dozvola. Ove uloge mogu biti dodeljene korisnicima, grupama korisnika, hostovima, grupama hostova i uslugama. Na primer, uzmite u obzir podrazumevanu ulogu “Administrator korisnika” u FreeIPA kao primer ove strukture.
Uloga Administrator korisnika
ima ove privilegije:
- Administratori korisnika
- Administratori grupa
- Administratori korisnika na sceni
Sa sledećim komandama moguće je enumerisati 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
U https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e možete pronaći jednostavan primer kako da zloupotrebite neka prava da biste kompromitovali domen.
Linikatz/LinikatzV2
Privesc
kreiranje root korisnika
warning
Ako možete da kreirate novog korisnika sa imenom root
, možete se pretvarati da ste on i moći ćete da SSH-ujete na bilo koju mašinu kao root.
OVO JE ISPRAVLJENO.
Možete proveriti detaljno objašnjenje u https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Reference
- 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
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.