<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
FreeIPA es una **alternativa** de código abierto a Microsoft Windows **Active Directory**, principalmente para entornos **Unix**. Combina un directorio **LDAP completo** con un Centro de Distribución de Claves MIT **Kerberos** para la gestión similar a Active Directory. Utiliza el Sistema de Certificados Dogtag para la gestión de certificados CA y RA, y admite la autenticación **multifactor**, incluidas las tarjetas inteligentes. SSSD está integrado para procesos de autenticación de Unix.
* El archivo en `/etc/krb5.conf` es donde se almacena la información del cliente Kerberos, necesaria para la inscripción en el dominio. Esto incluye las ubicaciones de los KDC y los servidores de administración, configuraciones predeterminadas y asignaciones.
* Las configuraciones predeterminadas del sistema para clientes y servidores IPA se establecen en el archivo ubicado en `/etc/ipa/default.conf`.
* Los hosts dentro del dominio deben tener un archivo `krb5.keytab` en `/etc/krb5.keytab` para procesos de autenticación.
* Se utilizan varias variables de entorno (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) para apuntar a archivos específicos y configuraciones relevantes para la autenticación de Kerberos.
Herramientas como `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch` y `kvno` son fundamentales para administrar dominios FreeIPA, manejar tickets de Kerberos, cambiar contraseñas y adquirir tickets de servicio, entre otras funcionalidades.
La autenticación en FreeIPA, aprovechando **Kerberos**, refleja la de **Active Directory**. El acceso a los recursos del dominio requiere un ticket Kerberos válido, que puede almacenarse en varias ubicaciones dependiendo de la configuración del dominio FreeIPA.
Los archivos CCACHE, almacenados típicamente en **`/tmp`** con permisos **600**, son formatos binarios para almacenar credenciales de Kerberos, importantes para la autenticación sin la contraseña en texto plano del usuario debido a su portabilidad. Analizar un ticket CCACHE se puede hacer utilizando el comando `klist`, y reutilizar un Ticket CCACHE válido implica exportar `KRB5CCNAME` a la ruta del archivo del ticket.
Alternativamente, los Tickets CCACHE se pueden almacenar en el llavero de Linux, ofreciendo más control sobre la gestión de tickets. El alcance del almacenamiento de tickets varía (`KEYRING:nombre`, `KEYRING:proceso:nombre`, `KEYRING:hilo:nombre`, `KEYRING:sessión:nombre`, `KEYRING:persistent:uidnúmero`), con `klist` capaz de analizar esta información para el usuario. Sin embargo, reutilizar un Ticket CCACHE desde el llavero de Unix puede plantear desafíos, con herramientas como **Tickey** disponibles para extraer tickets de Kerberos.
Los archivos Keytab, que contienen principios de Kerberos y claves encriptadas, son críticos para obtener tickets de concesión de tickets (TGT) válidos sin necesidad de la contraseña del principio. Analizar y reutilizar credenciales de archivos Keytab se puede realizar fácilmente con utilidades como `klist` y scripts como **KeytabParser**.
Podrías realizar la **enumeración** a través de **ldap** y otras **herramientas binarias**, o **conectándote a la página web en el puerto 443 del servidor FreeIPA**.
Es posible crear **hosts**, **usuarios** y **grupos**. Los hosts y usuarios se clasifican en contenedores llamados "**Grupos de Hosts**" y "**Grupos de Usuarios**" respectivamente. Estos son similares a las **Unidades Organizativas** (OU).
De forma predeterminada en FreeIPA, el servidor LDAP permite **vínculos anónimos**, y una gran cantidad de datos son enumerables **sin autenticación**. Esto puede enumerar todos los datos disponibles sin autenticación:
Para obtener **más información**, necesitas usar una sesión **autenticada** (consulta la sección de Autenticación para aprender cómo preparar una sesión autenticada).
* El hash de la contraseña de un usuario se almacena en formato **base64** en el atributo “**userPassword**”. Este hash puede ser **SSHA512** (versiones antiguas de FreeIPA) o **PBKDF2\_SHA256**.
* El **Nthash** de la contraseña se almacena en formato **base64** en “**ipaNTHash**” si el sistema está integrado con **AD**.
• Si FreeIPA está integrado con AD, el **ipaNTHash** es fácil de crackear: Debes **decodificar** el **base64** -> re-codificarlo como **ASCII** hexadecimal -> John The Ripper o **hashcat** pueden ayudarte a crackearlo rápidamente
• Si se utiliza una versión antigua de FreeIPA, se utiliza **SSHA512**: Debes decodificar el **base64** -> encontrar el **hash** SSHA512 -> John The Ripper o **hashcat** pueden ayudarte a crackearlo
• Si se utiliza una nueva versión de FreeIPA, se utiliza **PBKDF2\_SHA256**: Debes decodificar el **base64** -> encontrar PBKDF2\_SHA256 -> su **longitud** es de 256 bytes. John puede trabajar con 256 bits (32 bytes) -> SHA-265 se utiliza como función seudoaleatoria, el tamaño del bloque es de 32 bytes -> solo puedes usar los primeros 256 bits de nuestro hash PBKDF2\_SHA256 -> John The Ripper o hashcat pueden ayudarte a crackearlo
FreeIPA permite el control centralizado sobre los **permisos de sudo** a través de las reglas de sudo. Estas reglas permiten o limitan la ejecución de comandos con sudo en hosts dentro del dominio. Un atacante podría potencialmente identificar los hosts aplicables, usuarios y comandos permitidos examinando estos conjuntos de reglas.
Un **rol** está compuesto por varios **privilegios**, cada uno de los cuales abarca una colección de **permisos**. Estos roles pueden asignarse a Usuarios, **Grupos** de Usuarios, **Anfitriones**, Grupos de Anfitriones y Servicios. Por ejemplo, considera el rol predeterminado de "Administrador de Usuarios" en FreeIPA para ejemplificar esta estructura.
En [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) puedes encontrar un ejemplo simple de cómo abusar de algunos permisos para comprometer el dominio.
Si puedes **crear un nuevo usuario con el nombre `root`**, puedes hacerse pasar por él y ser capaz de **acceder por SSH a cualquier máquina como root.**
Puedes ver una explicación detallada en [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).