13 KiB
Pentesting di FreeIPA
Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud repos di github.
Informazioni di Base
FreeIPA è un'alternativa open-source all'Active Directory di Microsoft Windows, principalmente per ambienti Unix. Combina un completo directory LDAP con un Centro di Distribuzione Chiavi MIT Kerberos per la gestione simile all'Active Directory. Utilizzando il Sistema di Certificati Dogtag per la gestione dei certificati CA & RA, supporta l'autenticazione multi-fattore, inclusi i smartcard. SSSD è integrato per i processi di autenticazione Unix.
Impronte Digitali
File e Variabili d'Ambiente
- Il file in
/etc/krb5.conf
è dove sono memorizzate le informazioni del client Kerberos, necessarie per l'iscrizione al dominio. Questo include le posizioni dei KDC e dei server di amministrazione, le impostazioni predefinite e le mappature. - Le impostazioni predefinite a livello di sistema per i client e i server IPA sono impostate nel file situato in
/etc/ipa/default.conf
. - Gli host all'interno del dominio devono avere un file
krb5.keytab
in/etc/krb5.keytab
per i processi di autenticazione. - Diverse variabili d'ambiente (
KRB5CCNAME
,KRB5_KTNAME
,KRB5_CONFIG
,KRB5_KDC_PROFILE
,KRB5RCACHETYPE
,KRB5RCACHEDIR
,KRB5_TRACE
,KRB5_CLIENT_KTNAME
,KPROP_PORT
) sono utilizzate per puntare a file specifici e impostazioni rilevanti per l'autenticazione Kerberos.
Eseguibili
Strumenti come ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
e kvno
sono centrali nella gestione dei domini FreeIPA, nel trattare i biglietti Kerberos, nel cambiare le password e nell'ottenere i biglietti di servizio, tra le altre funzionalità.
Rete
Viene fornita un'illustrazione per rappresentare una tipica configurazione del server FreeIPA.
Autenticazione
L'autenticazione in FreeIPA, sfruttando Kerberos, riflette quella in Active Directory. L'accesso alle risorse del dominio richiede un biglietto Kerberos valido, che può essere memorizzato in varie posizioni a seconda della configurazione del dominio FreeIPA.
File Biglietti CCACHE
I file CCACHE, memorizzati tipicamente in /tmp
con permessi 600, sono formati binari per memorizzare le credenziali Kerberos, importanti per l'autenticazione senza la password in chiaro dell'utente a causa della loro portabilità. Il parsing di un biglietto CCACHE può essere fatto utilizzando il comando klist
, e riutilizzare un biglietto CCACHE valido coinvolge l'esportazione di KRB5CCNAME
nel percorso del file del biglietto.
Portachiavi Unix
Alternativamente, i Biglietti CCACHE possono essere memorizzati nel portachiavi Linux, offrendo maggiore controllo sulla gestione dei biglietti. La portata della memorizzazione dei biglietti varia (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), con klist
in grado di analizzare queste informazioni per l'utente. Tuttavia, riutilizzare un Biglietto CCACHE dal portachiavi Unix può presentare sfide, con strumenti come Tickey disponibili per estrarre i biglietti Kerberos.
Keytab
I file Keytab, contenenti principali Kerberos e chiavi crittografate, sono fondamentali per ottenere biglietti di concessione di ticket (TGT) validi senza necessità della password del principale. Analizzare e riutilizzare le credenziali dai file Keytab può essere facilmente eseguito con utility come klist
e script come KeytabParser.
Cheatsheet
Puoi trovare ulteriori informazioni su come utilizzare i biglietti in Linux nel seguente link:
{% content-ref url="privilege-escalation/linux-active-directory.md" %} linux-active-directory.md {% endcontent-ref %}
Enumerazione
{% hint style="warning" %} Potresti eseguire l'enumerazione tramite ldap e altri strumenti binari, o connettendoti alla pagina web sulla porta 443 del server FreeIPA. {% endhint %}
Host, Utenti e Gruppi
È possibile creare host, utenti e gruppi. Gli host e gli utenti sono ordinati in contenitori chiamati "Gruppi Host" e "Gruppi Utenti" rispettivamente. Questi sono simili alle Unità Organizzative (OU).
Per impostazione predefinita in FreeIPA, il server LDAP consente bind anonimi, e una vasta gamma di dati è enumerabile non autenticati. Questo può enumerare tutti i dati disponibili non autenticati:
ldapsearch -x
Per ottenere ulteriori informazioni è necessario utilizzare una sessione autenticata (controlla la sezione sull'Autenticazione per imparare come preparare una sessione autenticata).
# 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"
Da una macchina connessa a dominio sarai in grado di utilizzare binari installati per enumerare il dominio:
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" %} L'utente admin di FreeIPA è l'equivalente degli amministratori di dominio di AD. {% endhint %}
Hash
L'utente root del server IPA ha accesso ai hash delle password.
- L'hash della password di un utente è memorizzato come base64 nell'attributo "userPassword". Questo hash potrebbe essere SSHA512 (versioni precedenti di FreeIPA) o PBKDF2_SHA256.
- L'Nthash della password è memorizzato come base64 in "ipaNTHash" se il sistema è integrato con AD.
Per craccare questi hash:
• Se FreeIPA è integrato con AD, l'ipaNTHash è facile da craccare: Dovresti decodificare il base64 -> ricodificarlo come esadecimale ASCII -> John The Ripper o hashcat possono aiutarti a craccarlo velocemente
• Se viene utilizzata una vecchia versione di FreeIPA, quindi viene utilizzato SSHA512: Dovresti decodificare il base64 -> trovare l'hash SSHA512 -> John The Ripper o hashcat possono aiutarti a craccarlo
• Se viene utilizzata una nuova versione di FreeIPA, quindi viene utilizzato PBKDF2_SHA256: Dovresti decodificare il base64 -> trovare PBKDF2_SHA256 -> la sua lunghezza è di 256 byte. John può lavorare con 256 bit (32 byte) -> SHA-265 utilizzato come funzione pseudo-casuale, la dimensione del blocco è di 32 byte -> puoi utilizzare solo i primi 256 bit del nostro hash PBKDF2_SHA256 -> John The Ripper o hashcat possono aiutarti a craccarlo
Per estrarre gli hash è necessario essere root nel server FreeIPA, lì puoi utilizzare lo strumento dbscan
per estrarli:
Regole HBAC
Queste sono le regole che concedono specifici permessi agli utenti o host su risorse (host, servizi, gruppi di servizi...)
# 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
Regole Sudo
FreeIPA consente il controllo centralizzato delle autorizzazioni sudo tramite le regole sudo. Queste regole permettono o limitano l'esecuzione di comandi con sudo sugli host all'interno del dominio. Un attaccante potrebbe potenzialmente identificare gli host, gli utenti e i comandi consentiti esaminando questi set di regole.
# 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
Controllo degli Accessi Basato sui Ruoli
Un ruolo è composto da vari privilegi, ognuno dei quali comprende una serie di autorizzazioni. Questi ruoli possono essere assegnati a Utenti, Gruppi di Utenti, Host, Gruppi di Host e Servizi. Ad esempio, considera il ruolo predefinito di "Amministratore Utente" in FreeIPA per esemplificare questa struttura.
Il ruolo Amministratore Utente
ha i seguenti privilegi:
- Amministratori Utente
- Amministratori Gruppo
- Amministratori Utente di Stage
Con i seguenti comandi è possibile enumerare i ruoli, i privilegi e le autorizzazioni:
# 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
Esempio di Scenario di Attacco
In https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e puoi trovare un semplice esempio di come abusare di alcuni permessi per compromettere il dominio.
Linikatz/LinikatzV2
Privesc
Creazione utente root
{% hint style="warning" %}
Se riesci a creare un nuovo utente con il nome root
, puoi impersonarlo e sarai in grado di accedere via SSH a qualsiasi macchina come root.
QUESTO È STATO CORRETTO. {% endhint %}
Puoi trovare una spiegazione dettagliata in https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Riferimenti
- 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
Impara l'hacking AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se desideri vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud github repos.