# FreeIPA Pentesting {% hint style="success" %} Leer & oefen AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Leer & oefen GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Ondersteun HackTricks * Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)! * **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐩 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Basiese Inligting FreeIPA is 'n oopbron **alternatief** vir Microsoft Windows **Active Directory**, hoofsaaklik vir **Unix** omgewings. Dit kombineer 'n volledige **LDAP gids** met 'n MIT **Kerberos** Sleutelverspreidingsentrum vir bestuur soortgelyk aan Active Directory. Dit gebruik die Dogtag **Sertifikaatstelsel** vir CA & RA sertifikaatbestuur, en ondersteun **multi-faktor** verifikasie, insluitend slimkaarte. SSSD is geĂŻntegreer vir Unix verifikasieprosesse. ## Vingerafdrukke ### LĂȘers & Omgewing Veranderlikes * Die lĂȘer by `/etc/krb5.conf` is waar Kerberos kliĂ«ntinligting, wat nodig is vir inskrywing in die domein, gestoor word. Dit sluit KDC's en admin bedieners se liggings, standaardinstellings, en kaarte in. * Stelselswye standaardinstellings vir IPA kliĂ«nte en bedieners word in die lĂȘer geleĂ« by `/etc/ipa/default.conf` gestel. * Gaste binne die domein moet 'n `krb5.keytab` lĂȘer by `/etc/krb5.keytab` hĂȘ vir verifikasieprosesse. * Verskeie omgewing veranderlikes (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) word gebruik om na spesifieke lĂȘers en instellings wat relevant is vir Kerberos verifikasie te verwys. ### Binaries Gereedskap soos `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch`, en `kvno` is sentraal tot die bestuur van FreeIPA domeine, wat Kerberos kaartjies hanteer, wagwoorde verander, en dienskaartjies verkry, onder andere funksies. ### Netwerk 'n Illustrasie word verskaf om 'n tipiese FreeIPA bedieneropstelling te toon. ## Verifikasie Verifikasie in FreeIPA, wat **Kerberos** benut, weerspieĂ«l dit in **Active Directory**. Toegang tot domeinbronne vereis 'n geldige Kerberos kaartjie, wat in verskeie plekke gestoor kan word, afhangende van FreeIPA domein konfigurasie. ### **CCACHE Kaartjie LĂȘers** CCACHE lĂȘers, wat tipies in **`/tmp`** met **600** toestemmings gestoor word, is binĂȘre formate vir die stoor van Kerberos geloofsbriewe, belangrik vir verifikasie sonder 'n gebruiker se platte wagwoord weens hul draagbaarheid. Om 'n CCACHE kaartjie te ontleed kan gedoen word met die `klist` opdrag, en om 'n geldige CCACHE Kaartjie te hergebruik behels die uitvoer van `KRB5CCNAME` na die kaartjie lĂȘer se pad. ### **Unix Sleutelring** Alternatiewelik kan CCACHE Kaartjies in die Linux sleutelring gestoor word, wat meer beheer oor kaartjie bestuur bied. Die omvang van kaartjie berging verskil (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), met `klist` wat in staat is om hierdie inligting vir die gebruiker te ontleed. Dit is egter moontlik dat die hergebruik van 'n CCACHE Kaartjie uit die Unix sleutelring uitdagings kan bied, met gereedskap soos **Tickey** beskikbaar om Kerberos kaartjies te onttrek. ### Sleuteltab Sleuteltab lĂȘers, wat Kerberos principals en versleutelde sleutels bevat, is krities vir die verkryging van geldige kaartjie toekenningskaartjies (TGT) sonder die behoefte aan die principal se wagwoord. Om geloofsbriewe uit sleuteltab lĂȘers te ontleed en te hergebruik kan maklik gedoen word met nutsmiddels soos `klist` en skripte soos **KeytabParser**. ### Cheatsheet Jy kan meer inligting vind oor hoe om kaartjies in linux te gebruik in die volgende skakel: {% content-ref url="privilege-escalation/linux-active-directory.md" %} [linux-active-directory.md](privilege-escalation/linux-active-directory.md) {% endcontent-ref %} ## Enumerasie {% hint style="warning" %} Jy kan die **enumerasie** uitvoer via **ldap** en ander **binĂȘre** gereedskap, of **deur verbinding te maak met die webblad op poort 443 van die FreeIPA bediener**. {% endhint %} ### Gaste, Gebruikers, en Groepe Dit is moontlik om **gaste**, **gebruikers** en **groepe** te skep. Gaste en gebruikers word in houers genaamd “**Gaste Groepe**” en “**Gebruikers Groepe**” onderskeidelik gesorteer. Hierdie is soortgelyk aan **Organisatoriese Eenhede** (OU). Standaard in FreeIPA, laat die LDAP bediener **anonieme bindings** toe, en 'n groot hoeveelheid data is **ongeverifieerd** opneembaar. Dit kan alle data wat beskikbaar is ongeverifieerd opneem: ``` ldapsearch -x ``` Om **meer inligting** te verkry, moet jy 'n **geoutentiseerde** sessie gebruik (kyk na die Outentisering afdeling om te leer hoe om 'n geoutentiseerde sessie voor te berei). ```bash # 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" ``` Van 'n domein-verbonden masjien sal jy in staat wees om **geĂŻnstalleerde binaire** te gebruik om die domein te enumerate: ```bash ipa user-find ipa usergroup-find ipa host-find ipa host-group-find ------------------- ipa user-show --all ipa usergroup-show --all ipa host-find --all ipa hostgroup-show --all ``` {% hint style="info" %} Die **admin** gebruiker van **FreeIPA** is die ekwivalent van **domein administrateurs** van **AD**. {% endhint %} ### Hashes Die **root** gebruiker van die **IPA bediener** het toegang tot die wagwoord **hashes**. * Die wagwoord hash van 'n gebruiker word as **base64** gestoor in die “**userPassword**” **attribuut**. Hierdie hash kan **SSHA512** (ou weergawe van FreeIPA) of **PBKDF2\_SHA256** wees. * Die **Nthash** van die wagwoord word as **base64** gestoor in “**ipaNTHash**” as die stelsel **integrasie** met **AD** het. Om hierdie hashes te kraak: ‱ As freeIPA geĂŻntegreer is met AD, is **ipaNTHash** maklik om te kraak: Jy moet **decode** **base64** -> herkodeer dit as **ASCII** hex -> John The Ripper of **hashcat** kan jou help om dit vinnig te kraak. ‱ As 'n ou weergawe van FreeIPA gebruik word, dan word **SSHA512** gebruik: Jy moet **decode** **base64** -> vind SSHA512 **hash** -> John The Ripper of **hashcat** kan jou help om dit te kraak. ‱ As 'n nuwe weergawe van FreeIPA gebruik word, dan word **PBKDF2\_SHA256** gebruik: Jy moet **decode** **base64** -> vind PBKDF2\_SHA256 -> dit se **lengte** is 256 byte. John kan werk met 256 bits (32 byte) -> SHA-265 word gebruik as die pseudo-willekeurige funksie, blokgrootte is 32 byte -> jy kan slegs die eerste 256 bit van ons PBKDF2\_SHA256 hash gebruik -> John The Ripper of hashcat kan jou help om dit te kraak.
Om die hashes te onttrek moet jy **root in die FreeIPA bediener** wees, daar kan jy die hulpmiddel **`dbscan`** gebruik om dit te onttrek:
### HBAC-Rules Daar is die reĂ«ls wat spesifieke toestemmings aan gebruikers of gasheer oor hulpbronne (gashere, dienste, diensgroepe...) toeken. ```bash # 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 --all ``` #### Sudo-Rules FreeIPA stel gesentraliseerde beheer van **sudo permissions** via sudo-rules in. Hierdie reĂ«ls laat die uitvoering van opdragte met sudo op gasheer binne die domein toe of beperk dit. 'n Aanvaller kan moontlik die toepaslike gashere, gebruikers en toegelate opdragte identifiseer deur hierdie reĂ«ls te ondersoek. ```bash # 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 --all ``` ### Rolgebaseerde Toegangbeheer 'n **rol** bestaan uit verskeie **privileges**, elk waarvan 'n versameling **permissions** insluit. Hierdie rolle kan aan gebruikers, gebruikers **groepe**, **gasheer**, gasheer groepe, en dienste toegeken word. Byvoorbeeld, oorweeg die standaard “Gebruiker Administrateur” rol in FreeIPA om hierdie struktuur te illustreer. Die rol `User Administrator` het hierdie privileges: * **User Administrators** * **Group Administrators** * **Stage User Administrators** Met die volgende opdragte is dit moontlik om die rolle, privileges en permissions te lys: ```bash # Using ldap ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local" # Using ipa binary ipa role-find ipa role-show --all ipa privilege-find ipa privilege-show --all ipa permission-find ipa permission-show --all ``` ### Aanval Scenario Voorbeeld In [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) kan jy 'n eenvoudige voorbeeld vind van hoe om sekere toestemmings te misbruik om die domein te kompromitteer. ### Linikatz/LinikatzV2 * [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2) * [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz) ## Privesc ### ~~root gebruiker skepping~~ {% hint style="warning" %} As jy **'n nuwe gebruiker met die naam `root` kan skep**, kan jy hom naboots en jy sal in staat wees om **SSH in enige masjien as root in te gaan.** **DIT IS GEPATCH.** {% endhint %} Jy kan 'n gedetailleerde verduideliking nagaan in [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b) ## Verwysings * [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](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-i-authentication-77e73d837d6a) * [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1) * [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ) {% hint style="success" %} Leer & oefen AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Leer & oefen GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Ondersteun HackTricks * Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)! * **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐩 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}