FreeIPA Pentesting
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 Dogtag Certificate System 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.
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
) 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 nella gestione dei domini FreeIPA, gestendo i ticket Kerberos, cambiando le password e acquisendo ticket di servizio, tra le altre funzionalità.
Viene fornita un'illustrazione per rappresentare una tipica configurazione del server FreeIPA.
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 diverse 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 necessità 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.
Puoi trovare ulteriori informazioni su come utilizzare i ticket in linux nel seguente link:
Linux Active DirectoryPuoi eseguire l'enumerazione tramite ldap e altri strumenti binari, o collegandoti alla pagina web sulla porta 443 del server FreeIPA.
È 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 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).
Da una macchina unita al dominio, sarai in grado di utilizzare binaries installati per enumerare il dominio:
L'utente admin di FreeIPA è l'equivalente degli admin di dominio di AD.
L'utente root del server IPA ha accesso agli 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 ha integrazione con AD.
Per decifrare questi hash:
• 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
Per estrarre gli hash devi essere root nel server FreeIPA, lì puoi usare lo strumento dbscan
per estrarli:
Ci sono regole che concedono permessi specifici a utenti o host su risorse (host, servizi, gruppi di servizi...)
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.
Il ruolo Amministratore Utenti
ha questi privilegi:
Amministratori Utenti
Amministratori Gruppi
Amministratori Utenti di Stadio
Con i seguenti comandi è possibile enumerare i ruoli, i privilegi e i permessi:
In 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.
Se puoi creare un nuovo utente con il nome root
, puoi impersonarlo e sarai in grado di SSH in qualsiasi macchina come root.
QUESTO È STATO CORRETTO.
Puoi controllare una spiegazione dettagliata in https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)