hacktricks/linux-hardening/freeipa-pentesting.md

12 KiB

FreeIPA Pentesting

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

FreeIPA ni mbadala wa chanzo wazi wa Microsoft Windows Active Directory, hasa kwa mazingira ya Unix. Inachanganya directory ya LDAP kamili na Kituo cha Usambazaji cha Kufungua Kichwa cha MIT kwa usimamizi kama Active Directory. Kwa kutumia Mfumo wa Cheti wa Dogtag kwa usimamizi wa vyeti vya CA & RA, inasaidia uthibitishaji wa hatua nyingi, ikiwa ni pamoja na kadi za akili. SSSD imeingizwa kwa mchakato wa uthibitishaji wa Unix.

Alama za Vidole

Faili & Mazingira ya Mazingira

  • Faili katika /etc/krb5.conf ndio mahali ambapo habari ya mteja wa Kerberos, inayohitajika kwa usajili kwenye kikoa, imehifadhiwa. Hii ni pamoja na maeneo ya KDC na watumishi wa admin, mipangilio ya msingi, na ramani.
  • Vipimo vya mfumo kwa wateja na watumishi wa IPA vimeset katika faili iliyoko katika /etc/ipa/default.conf.
  • Wenyewe ndani ya kikoa lazima wawe na faili ya krb5.keytab katika /etc/krb5.keytab kwa mchakato wa uthibitishaji.
  • Mazingira mbalimbali ya mazingira (KRB5CCNAME, KRB5_KTNAME, KRB5_CONFIG, KRB5_KDC_PROFILE, KRB5RCACHETYPE, KRB5RCACHEDIR, KRB5_TRACE, KRB5_CLIENT_KTNAME, KPROP_PORT) hutumiwa kuashiria faili na mipangilio maalum inayohusiana na uthibitishaji wa Kerberos.

Programu za Binary

Zana kama vile ipa, kdestroy, kinit, klist, kpasswd, ksu, kswitch, na kvno ni muhimu katika kusimamia uwanja wa FreeIPA, kushughulikia tiketi za Kerberos, kubadilisha nywila, na kupata tiketi za huduma, miongoni mwa utendaji mwingine.

Mtandao

Mchoro unatolewa kuonyesha usanidi wa kawaida wa seva ya FreeIPA.

Uthibitishaji

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

Faili za Tiketi za CCACHE

Faili za CCACHE, zilizohifadhiwa kawaida katika /tmp na ruhusa za 600, ni muundo wa binary wa kuhifadhi siri za Kerberos, muhimu kwa uthibitishaji bila nywila ya wazi ya mtumiaji kutokana na uhamishaji wao. Kupasua tiketi ya CCACHE inaweza kufanywa kwa kutumia amri ya klist, na kutumia tena Tiketi sahihi ya CCACHE kunahusisha kuuza nje KRB5CCNAME kwa njia ya faili ya tiketi.

Unix Keyring

Kwa upande mwingine, Tiketi za CCACHE zinaweza kuhifadhiwa kwenye keyring ya Linux, ikitoa udhibiti zaidi juu ya usimamizi wa tiketi. Upeo wa uhifadhi wa tiketi hutofautiana (KEYRING:jina, KEYRING:process:jina, KEYRING:thread:jina, KEYRING:kikao:jina, KEYRING:endelevu:uidnumber), na klist inaweza kufasiri habari hii kwa mtumiaji. Hata hivyo, kutumia tena Tiketi ya CCACHE kutoka kwenye keyring ya Unix kunaweza kuleta changamoto, na zana kama Tickey inapatikana kwa kuchimba tiketi za Kerberos.

Keytab

Faili za Keytab, zenye mabwana ya Kerberos na funguo zilizofichwa, ni muhimu kwa kupata tiketi sahihi za kutoa ruhusa (TGT) bila kuhitaji nywila ya bwana. Kupasua na kutumia upya siri kutoka kwenye faili za keytab kunaweza kufanywa kwa urahisi na zana kama klist na hati kama KeytabParser.

Karatasi ya Udanganyifu

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

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

Uchambuzi

{% hint style="warning" %} Unaweza kufanya uchambuzi kupitia ldap na zana nyingine za binary, au kuunganisha kwenye ukurasa wa wavuti kwenye bandari 443 ya seva ya FreeIPA. {% endhint %}

Wenyewe, Watumiaji, na Vikundi

Inawezekana kuunda wenyewe, watumiaji na vikundi. Wenyewe na watumiaji wamepangwa katika vyombo vinavyoitwa "Vikundi vya Wenyeji" na "Vikundi vya Watumiaji" mtawalia. Haya ni sawa na Vipengele vya Shirika (OU).

Kwa chaguo-msingi katika FreeIPA, seva ya LDAP inaruhusu kufunga kwa siri, na seti kubwa ya data inaweza kuchambuliwa bila kuthibitishwa. Hii inaweza kuchambua data yote inayopatikana bila kuthibitishwa:

ldapsearch -x

Ili kupata maji 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 kwenye mashine iliyoshirikishwa kwenye kikoa utaweza kutumia faili za binary zilizosakinishwa kuchambua 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

{% hint style="info" %} Mtumiaji wa admin wa FreeIPA ni sawa na domain admins kutoka AD. {% endhint %}

Hashes

Mtumiaji wa root kutoka kwenye IPA server ana ufikivu wa hashes za nywila.

  • Hash ya nywila ya mtumiaji imehifadhiwa kama base64 kwenye sifa ya "userPassword". Hash hii inaweza kuwa SSHA512 (toleo za zamani za FreeIPA) au PBKDF2_SHA256.
  • Nthash ya nywila imehifadhiwa kama base64 kwenye “ipaNTHash” ikiwa mfumo una integration na AD.

Ku-crack hizi hashes:

  • Ikiwa freeIPA imeunganishwa na AD, ipaNTHash ni rahisi ku-crack: Unapaswa decode base64 -> encode tena kama ASCII hex -> John The Ripper au hashcat wanaweza kukusaidia ku-crack haraka
  • Ikiwa toleo la zamani la FreeIPA limetumika, basi SSHA512 hutumika: Unapaswa kudecode base64 -> pata SSHA512 hash -> John The Ripper au hashcat wanaweza kukusaidia ku-crack
  • Ikiwa toleo jipya la FreeIPA limetumika, basi PBKDF2_SHA256 hutumika: Unapaswa kudecode base64 -> pata PBKDF2_SHA256 -> urefu wake ni 256 byte. John anaweza kufanya kazi na bits 256 (32 byte) -> SHA-265 hutumika kama function ya pseudo-random, ukubwa wa block ni 32 byte -> unaweza kutumia tu biti za kwanza 256 za hash yetu ya PBKDF2_SHA256 -> John The Ripper au hashcat wanaweza kukusaidia ku-crack

Kuondoa hashes unahitaji kuwa root kwenye server ya FreeIPA, hapo unaweza kutumia chombo dbscan kuzitoa:

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

Sera za Sudo

FreeIPA inawezesha udhibiti uliojumuishwa wa ruhusa za sudo kupitia sera za sudo. Sera hizi huruhusu au kuzuia utekelezaji wa amri za sudo kwenye mwenyeji ndani ya kikoa. Mshambuliaji anaweza kwa uwezekano kutambua mwenyeji husika, watumiaji, na amri zilizoruhusiwa kwa kuchunguza seti hizi za sera.

# 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

Kudhibiti Upatikanaji kulingana na Majukumu

Jukumu linaundwa na madaraka mbalimbali, kila moja ikijumuisha mkusanyiko wa ruhusa. Majukumu haya yanaweza kupewa Watumiaji, Vikundi vya Watumiaji, Mwenyeji, Vikundi vya Wenyeji, na Huduma. Kwa mfano, fikiria jukumu la "Msimamizi wa Mtumiaji" katika FreeIPA kuonyesha muundo huu.

Jukumu la Msimamizi wa Mtumiaji lina madaraka haya:

  • Msimamizi wa Watumiaji
  • Msimamizi wa Vikundi
  • Msimamizi wa Hatua za Mtumiaji

Kwa kutumia amri zifuatazo, ni rahisi kuchunguza majukumu, madaraka, na ruhusa:

# 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

Mfano wa Skenario ya Shambulizi

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

Linikatz/LinikatzV2

Privesc

Uundaji wa mtumiaji wa mizizi

{% hint style="warning" %} Ikiwa unaweza kuunda mtumiaji mpya kwa jina root, unaweza kujifanya kuwa yeye na utaweza kuingia kwa SSH kwenye mashine yoyote kama mizizi.

HII IMESASISHWA. {% endhint %}

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

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks: