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:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodičnu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
- Podelite svoje hakovanje trikova slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
- 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
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi](https://t.me/peass) ili nas pratite na Twitter-u 🐦 @hacktricks_live.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.