12 KiB
FreeIPA Pentesting
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
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 {% 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).
# 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:
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" %} 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.
# 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 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.
# 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
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:
# 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
Aanval Scenario Voorbeeld
In 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
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
Verwysings
- 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" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.