Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
FreeIPA è un'alternativa open-source a Microsoft Windows **Active Directory**, principalmente per ambienti **Unix**. Combina un completo **LDAP directory** con un MIT **Kerberos** Key Distribution Center per la gestione simile a Active Directory. Utilizzando il sistema di certificati Dogtag per la gestione dei certificati CA e RA, supporta l'autenticazione **multi-fattore**, inclusi i smartcard. SSSD è integrato per i processi di autenticazione Unix.
* Il file in `/etc/krb5.conf` è dove sono memorizzate le informazioni del client Kerberos, necessarie per l'iscrizione nel dominio. Questo include le posizioni dei KDC e dei server di amministrazione, le impostazioni predefinite e le mappature.
* Varie variabili di ambiente (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) vengono utilizzate per puntare a file e impostazioni specifiche relative all'autenticazione Kerberos.
Strumenti come `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch` e `kvno` sono centrali per la gestione dei domini FreeIPA, gestendo i ticket Kerberos, cambiando le password e acquisendo i ticket di servizio, tra le altre funzionalità.
L'autenticazione in FreeIPA, sfruttando **Kerberos**, rispecchia quella in **Active Directory**. L'accesso alle risorse del dominio richiede un ticket Kerberos valido, che può essere memorizzato in varie posizioni a seconda della configurazione del dominio FreeIPA.
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 grazie alla loro portabilità. L'analisi di un ticket CCACHE può essere effettuata utilizzando il comando `klist`, e il riutilizzo di un ticket CCACHE valido comporta l'esportazione di `KRB5CCNAME` nel percorso del file del ticket.
In alternativa, i ticket CCACHE possono essere memorizzati nel keyring di Linux, offrendo maggiore controllo sulla gestione dei ticket. L'ambito della memorizzazione dei ticket varia (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), con `klist` capace di analizzare queste informazioni per l'utente. Tuttavia, il riutilizzo di un ticket CCACHE dal keyring Unix può presentare sfide, con strumenti come **Tickey** disponibili per estrarre i ticket Kerberos.
I file keytab, contenenti i principi Kerberos e le chiavi crittografate, sono critici per ottenere ticket di concessione validi (TGT) senza necessitare della password del principio. L'analisi e il riutilizzo delle credenziali dai file keytab possono essere facilmente eseguiti con utilità come `klist` e script come **KeytabParser**.
È possibile creare **host**, **utenti** e **gruppi**. Gli host e gli utenti sono ordinati in contenitori chiamati “**Host Groups**” e “**User Groups**” 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 autenticata**. Questo può enumerare tutti i dati disponibili non autenticati:
Per ottenere **ulteriori informazioni** è necessario utilizzare una sessione **autenticata** (controlla la sezione Autenticazione per imparare come preparare una sessione autenticata).
* 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 ha **integrazione** con **AD**.
• Se freeIPA è integrato con AD, **ipaNTHash** è facile da decifrare: Dovresti **decodificare****base64** -> ri-codificarlo come **ASCII** esadecimale -> John The Ripper o **hashcat** possono aiutarti a decifrarlo rapidamente
• Se viene utilizzata una versione precedente di FreeIPA, allora si utilizza **SSHA512**: Dovresti decodificare **base64** -> trovare l'**hash** SSHA512 -> John The Ripper o **hashcat** possono aiutarti a decifrarlo
• Se viene utilizzata una nuova versione di FreeIPA, allora si utilizza **PBKDF2\_SHA256**: Dovresti decodificare **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 usare solo i primi 256 bit del nostro hash PBKDF2\_SHA256 -> John The Ripper o hashcat possono aiutarti a decifrarlo
FreeIPA consente il controllo centralizzato sui **permessi sudo** tramite sudo-rules. Queste regole consentono o limitano l'esecuzione di comandi con sudo su host all'interno del dominio. Un attaccante potrebbe potenzialmente identificare gli host applicabili, gli utenti e i comandi consentiti esaminando questi set di regole.
Un **ruolo** è composto da vari **privilegi**, ognuno dei quali comprende una collezione di **permessi**. Questi ruoli possono essere assegnati a Utenti, Gruppi di Utenti, **Host**, Gruppi di Host e Servizi. Ad esempio, considera il ruolo predefinito “Amministratore Utenti” in FreeIPA per esemplificare questa struttura.
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) puoi trovare un semplice esempio di come abusare di alcune autorizzazioni per compromettere il dominio.
Puoi controllare una spiegazione dettagliata 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)
Impara e pratica Hacking AWS:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Impara e pratica Hacking GCP: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.