hacktricks/network-services-pentesting/pentesting-kerberos-88/harvesting-tickets-from-linux.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

4.3 KiB

En Linux, los tickets se almacenan en cachés de credenciales o ccaches. Hay 3 tipos principales que indican dónde se pueden encontrar los tickets:

  • Archivos, por defecto en el directorio /tmp, en forma de krb5cc_%{uid}.
  • Keyrings del kernel, un espacio especial en el kernel de Linux proporcionado para almacenar claves.
  • Memoria de proceso, utilizada cuando solo un proceso necesita usar los tickets.

Para verificar qué tipo de almacenamiento se utiliza en una máquina específica, se debe comprobar la variable default_ccache_name en el archivo /etc/krb5.conf, que por defecto tiene permiso de lectura para cualquier usuario. En caso de que falte este parámetro, su valor predeterminado es FILE:/tmp/krb5cc_%{uid}.

Para extraer tickets de las otras 2 fuentes (keyrings y procesos), un gran documento, Kerberos Credential Thievery (GNU/Linux), publicado en 2017, explica formas de recuperar los tickets de ellas.

Keyring - Del documento

El kernel de Linux tiene una característica llamada keyrings. Esta es un área de memoria que reside dentro del kernel y se utiliza para administrar y retener claves.

La llamada al sistema keyctl se introdujo en la versión del kernel 2.6.10. Esto proporciona a las aplicaciones de espacio de usuario una API que se puede utilizar para interactuar con los keyrings del kernel.

El nombre del keyring en uso se puede analizar desde el archivo de configuración de Kerberos /etc/krb5.conf, que tiene habilitado el permiso de lectura para cualquier persona (octal 644) de forma predeterminada. Un atacante puede aprovechar esta información para buscar tickets que contengan keyrings y extraer los tickets. Un script de prueba de concepto que implementa esta funcionalidad se puede ver en la sección A.2 (hercules.sh). En un keyring, la ccache se almacena como componentes. Como se ve en la Figura 2, una ccache de archivo se compone de 3 componentes distintos: encabezado, principal predeterminado y una secuencia de credenciales. Un keyring contiene el principal predeterminado y las credenciales. Este script volcará estos componentes en archivos separados. Luego, utilizando un encabezado sintetizado por el atacante, se combinan estas piezas en el orden correcto para reconstruir una ccache de archivo. Este archivo reconstruido puede ser exfiltrado a una máquina atacante y luego utilizado para suplantar a un usuario de Kerberos. Un programa simple para generar un encabezado de ccache válido se puede ver en la sección A.3.

Basado en el script heracles.sh (del documento), una herramienta en C que se puede utilizar (creada por el autor de la publicación completa) es tickey, y extrae tickets de keyrings:

/tmp/tickey -i

Esta información fue tomada de: https://www.tarlogic.com/en/blog/how-to-attack-kerberos/

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥