FreeIPA Pentesting

Support HackTricks

Basic Information

FreeIPA ni mbadala wa chanzo wazi kwa Microsoft Windows Active Directory, hasa kwa mazingira ya Unix. Inachanganya LDAP directory kamili na MIT Kerberos Key Distribution Center kwa usimamizi unaofanana na Active Directory. Inatumia mfumo wa Certificate System wa Dogtag kwa usimamizi wa vyeti vya CA & RA, inasaidia uthibitishaji wa multi-factor, ikiwa ni pamoja na kadi za smart. SSSD imeunganishwa kwa michakato ya uthibitishaji wa Unix.

Fingerprints

Files & Environment Variables

  • Faili katika /etc/krb5.conf ndiyo mahali ambapo taarifa za mteja wa Kerberos, zinazohitajika kwa kujiandikisha katika eneo, zimehifadhiwa. Hii inajumuisha maeneo ya KDCs na seva za admin, mipangilio ya chaguo-msingi, na ramani.

  • Mipangilio ya chaguo-msingi kwa wateja na seva za IPA imewekwa katika faili iliyoko /etc/ipa/default.conf.

  • Hosts ndani ya eneo lazima iwe na faili ya krb5.keytab katika /etc/krb5.keytab kwa michakato ya uthibitishaji.

  • Mabadiliko mbalimbali ya mazingira (KRB5CCNAME, KRB5_KTNAME, KRB5_CONFIG, KRB5_KDC_PROFILE, KRB5RCACHETYPE, KRB5RCACHEDIR, KRB5_TRACE, KRB5_CLIENT_KTNAME, KPROP_PORT) yanatumika kuonyesha faili maalum na mipangilio inayohusiana na uthibitishaji wa Kerberos.

Binaries

Zana kama ipa, kdestroy, kinit, klist, kpasswd, ksu, kswitch, na kvno ni muhimu katika kusimamia maeneo ya FreeIPA, kushughulikia tiketi za Kerberos, kubadilisha nywila, na kupata tiketi za huduma, kati ya kazi nyingine.

Network

Mchoro umeandaliwa kuonyesha usanidi wa kawaida wa seva ya FreeIPA.

Authentication

Uthibitishaji katika FreeIPA, ukitumia Kerberos, unafanana na ule katika Active Directory. Upatikanaji wa rasilimali za eneo unahitaji tiketi halali ya Kerberos, ambayo inaweza kuhifadhiwa katika maeneo mbalimbali kulingana na usanidi wa eneo la FreeIPA.

CCACHE Ticket Files

Faili za CCACHE, ambazo kawaida huhifadhiwa katika /tmp zikiwa na ruhusa 600, ni muundo wa binary wa kuhifadhi taarifa za Kerberos, muhimu kwa uthibitishaji bila nywila ya mtumiaji kwa sababu ya kubebeka kwake. Kusoma tiketi ya CCACHE kunaweza kufanywa kwa kutumia amri ya klist, na kutumia tena Tiketi halali ya CCACHE kunahusisha kusafirisha KRB5CCNAME hadi kwenye njia ya faili la tiketi.

Unix Keyring

Kwa upande mwingine, Tiketi za CCACHE zinaweza kuhifadhiwa katika funguo za Linux, zikitoa udhibiti zaidi juu ya usimamizi wa tiketi. Mipaka ya uhifadhi wa tiketi inatofautiana (KEYRING:name, KEYRING:process:name, KEYRING:thread:name, KEYRING:session:name, KEYRING:persistent:uidnumber), huku klist ikiweza kusoma taarifa hii kwa mtumiaji. Hata hivyo, kutumia tena Tiketi ya CCACHE kutoka funguo za Unix kunaweza kuwa na changamoto, huku zana kama Tickey zikiwa zinapatikana kwa ajili ya kutoa tiketi za Kerberos.

Keytab

Faili za Keytab, zinazojumuisha wakuu wa Kerberos na funguo zilizofichwa, ni muhimu kwa kupata tiketi halali za kutoa tiketi (TGT) bila kuhitaji nywila ya mkuu. Kusoma na kutumia tena taarifa kutoka kwa faili za keytab kunaweza kufanywa kwa urahisi kwa kutumia zana kama klist na skripti kama KeytabParser.

Cheatsheet

Unaweza kupata maelezo zaidi kuhusu jinsi ya kutumia tiketi katika linux katika kiungo kinachofuata:

Linux Active Directory

Enumeration

Unaweza kufanya enumeration kupitia ldap na zana nyingine za binary, au kuungana na ukurasa wa wavuti katika bandari 443 ya seva ya FreeIPA.

Hosts, Users, and Groups

Inawezekana kuunda hosts, users na groups. Hosts na watumiaji wamepangwa katika vyombo vinavyoitwa “Host Groups” na “User Groups” mtawalia. Hizi ni sawa na Organizational Units (OU).

Kwa chaguo-msingi katika FreeIPA, seva ya LDAP inaruhusu kuunganishwa kwa siri, na sehemu kubwa ya data inaweza kuhesabiwa bila uthibitisho. Hii inaweza kuhesabu data yote inayopatikana bila uthibitisho:

ldapsearch -x

Ili kupata maelezo zaidi unahitaji kutumia kikao kilichothibitishwa (angalia sehemu ya Uthibitishaji kujifunza jinsi ya kuandaa kikao kilichothibitishwa).

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

Kutoka kwa mashine iliyojiunga na kikoa utaweza kutumia binaries zilizowekwa kuhesabu kikoa:

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

Mtumiaji admin wa FreeIPA ni sawa na domain admins kutoka AD.

Hashes

Mtumiaji root kutoka kwa IPA server ana ufikiaji wa hashes za nywila.

  • Hash ya nywila ya mtumiaji inahifadhiwa kama base64 katika “userPasswordattribute. Hash hii inaweza kuwa SSHA512 (toleo la zamani la FreeIPA) au PBKDF2_SHA256.

  • Nthash ya nywila inahifadhiwa kama base64 katika “ipaNTHash” ikiwa mfumo una integration na AD.

Ili kuvunja hizi hashes:

• Ikiwa freeIPA imeunganishwa na AD, ipaNTHash ni rahisi kuvunja: Unapaswa decode base64 -> re-encoded kama ASCII hex -> John The Ripper au hashcat inaweza kukusaidia kuvunja haraka

• Ikiwa toleo la zamani la FreeIPA linatumika, basi SSHA512 inatumika: Unapaswa decode base64 -> pata SSHA512 hash -> John The Ripper au hashcat inaweza kukusaidia kuvunja

• Ikiwa toleo jipya la FreeIPA linatumika, basi PBKDF2_SHA256 inatumika: Unapaswa decode base64 -> pata PBKDF2_SHA256 -> urefu wake ni byte 256. John anaweza kufanya kazi na bits 256 (byte 32) -> SHA-265 inatumika kama kazi ya pseudo-random, ukubwa wa block ni byte 32 -> unaweza kutumia tu bits 256 za kwanza za hash yetu ya PBKDF2_SHA256 -> John The Ripper au hashcat inaweza kukusaidia kuvunja

Ili kutoa hashes unahitaji kuwa root katika server ya FreeIPA, hapo unaweza kutumia chombo dbscan kutoa hizo:

HBAC-Rules

Hizi ni sheria zinazotoa ruhusa maalum kwa watumiaji au mwenyeji juu ya rasilimali (wenyeji, huduma, vikundi vya huduma...)

# 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 inaruhusu udhibiti wa kati juu ya sudo permissions kupitia sudo-rules. Sheria hizi zinaruhusu au kuzuia utekelezaji wa amri na sudo kwenye mwenyeji ndani ya eneo. Mshambuliaji anaweza kutambua wenyeji, watumiaji, na amri zinazoruhusiwa kwa kuchunguza seti hizi za sheria.

# 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

Role-Based Access Control

A role inajumuisha privileges mbalimbali, kila moja ikiwa na mkusanyiko wa permissions. Majukumu haya yanaweza kutolewa kwa Watumiaji, Makundi ya Watumiaji, Hosts, Makundi ya Hosts, na Huduma. Kwa mfano, fikiria jukumu la default “User Administrator” katika FreeIPA ili kuonyesha muundo huu.

Jukumu la User Administrator lina privileges hizi:

  • User Administrators

  • Group Administrators

  • Stage User Administrators

Kwa amri zifuatazo, inawezekana kuhesabu majukumu, privileges na permissions:

# 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

Katika https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e unaweza kupata mfano rahisi wa jinsi ya kutumia ruhusa fulani kuathiri eneo.

Linikatz/LinikatzV2

Privesc

kuunda mtumiaji wa root

Ikiwa unaweza kuunda mtumiaji mpya kwa jina root, unaweza kujifanya kuwa yeye na utaweza SSH kwenye mashine yoyote kama root.

HII IMEPATWA.

Unaweza kuangalia maelezo ya kina katika https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b

References

Support HackTricks

Last updated