12 KiB
FreeIPA Pentesting
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Basic Information
FreeIPA je open-source alternativa za Microsoft Windows Active Directory, uglavnom za Unix okruženja. Kombinuje kompletnu LDAP direktoriju sa MIT Kerberos sistemom za distribuciju ključeva za upravljanje sličnim Active Directory. Koristi 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.
Fingerprints
Files & Environment Variables
- 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 promenljive 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.
Binaries
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 dobijanje servisnih tiketa, među ostalim funkcionalnostima.
Network
Ilustracija je pružena da prikaže tipičnu FreeIPA server konfiguraciju.
Authentication
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 Files
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 (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:
{% content-ref url="privilege-escalation/linux-active-directory.md" %} linux-active-directory.md {% endcontent-ref %}
Enumeration
{% hint style="warning" %} Možete izvršiti enumeraciju putem ldap i drugih binarnih alata, ili povezivanjem na veb stranicu na portu 443 FreeIPA servera. {% endhint %}
Hosts, Users, and Groups
Moguće je kreirati hostove, korisnike i grupe. Hostovi i korisnici su raspoređeni u kontejnere nazvane “Host Groups” i “User Groups” respektivno. Ovi su slični Organizacijskim jedinicama (OU).
Podrazumevano u FreeIPA, LDAP server omogućava anonimne veze, a 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 koja je pridružena 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
{% hint style="info" %} Korisnik admin u FreeIPA je ekvivalent domenama admina iz AD. {% endhint %}
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 ga 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 ga 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 hash -> John The Ripper ili hashcat vam mogu pomoći da ga probijete
Da biste izvukli hash, morate biti root na FreeIPA serveru, tamo možete koristiti alat dbscan
da ih izvučete:
HBAC-Rules
To su 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 dozvolama 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 rolama
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 sledeće privilegije:
- Administratori korisnika
- Administratori grupa
- Administratori korisnika na sceni
Pomoću sledećih komandi 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
Attack Scenario Example
U https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e možete pronaći jednostavan primer kako zloupotrebiti neka prava da biste kompromitovali domen.
Linikatz/LinikatzV2
Privesc
kreiranje root korisnika
{% hint style="warning" %}
Ako možete napraviti 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. {% endhint %}
Možete proveriti detaljno objašnjenje u https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
References
- 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
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.