Conceptos a entender:

AD (active directory): este es un sistema que usan las empresas para gestionar identidades y accesos dentro de una red. Allí se almacenan usuarios, computadoras, grupos y permisos. Es como una base de datos central que decide quien puede acceder a que recurso dentro de la organizacion

LDAP: Este es el protocolo que permite consultar y obtener informacion de Active Directory. Es como el lenguaje que se usa para busquedas dentro del directorio

Kerberos: es un protocolo de autenticacion que usa Active Directory para verificar identidades de forma segura. En lugar de enviar contrasenias constantemente, utiliza tickets

SPN (Service Principal Name): un SPN es un identificador que asocia un servicio (base de datos o servidor web) con una cuenta dentro de Active Directory. Indica que ese usuario esta ejecutando un servicio en especifico.

Ej: un usuario tiene un SPN como HTTP/server, significa que esa cuenta es ligada a un servicio web

Usuario Kerberoasteable: un usuario Kerberoasteable es cualquier cuenta en Active Directory que tiene configurado un SPN. Esto lo convierte en objetivo de ataque porque kerberos permite solicitar un ticket cifrado usando la contrasenia de esa cuenta

Kerberoasting: esta es una tecnica de ataque que aprovecha el como funciona keberos. Un atacante solicita tickets de servicio asociados con cuentas SPN. Esos tickets estan cifrados con la contrasenia del usuario del servicio

Dump LDAP: Este es una copia de la informacion del directorio, exportada a un formato como JSON. Contiene usuarios, atributos configuracion y demas. Este tipo de archivo permite analizar la estructura de Active Directory sin estar conectado al sistema real

Teniendo estos conceptos claros nos enfocamos en el reto:

Este trata de analizar un volcado de Active Directory obtenido mediante ldap2json. A partir de este archivo, se debia identificar un usuario vulnerable a Kerberoasting (es decir un usuario configurado a un SPN)

Para esto usaremos la herramienta que se nos menciona en el enunciado que es ldap2json que esta es una herramienta que sirve para poder extraer informacion de un directorio LDAP y convertirla a formato JSON. Esta pensada principalmente para trabajar con entornos de active directory

En palabras mas simples ldap2json actua como un traductor. Por un lado se conecta al servidor LDAP (usando el protocolo LDAP) y consulta informacion de usuarios, grupos, equipos y atributos. Por otro lado toma esos datos y los guarda en un archivo JSON, que es mucho mas facil de analizar fuera del entorno original

En nuestro caso ya nos dieron el resultado de la ejecucion de este, ahora nuestro trabajo es anlizar ese archivo JSON para encontrar un usuario Kerberoasteable.

Primero clonamos el repositorio

git clone https://github.com/p0dalirius/ldap2json.git

None
clonado de repositorio

La clonar iremos al directorio que se crea un directorio:

None

Ya estando aquí debemos ir hasta el directorio analysis y ejecutar el script en python ya que el script ldap2json.py se usa para extraer informacion directamente del servidor LDAP y analysis.py lo que hace este script es leer un archivo JSON ya generado

Entendido esto seguimos:

None
ejecucion de la herramienta

Como se puede ver la herramienta ya esta en ejecucion y estamos dentro de la consola iterativa de esta

Viendo la documentacion de la herramienta en: https://github.com/p0dalirius/ldap2json/tree/master/analysis

Nos muestra comandos para nuestro caso usamos:

object_by_property_name: se usa para buscar un objeto dentro del volvado LDAP que contenga un atributo especifico

servicePrincipalName: este corresponde al nombre del atributo que se quiere buscar

None
busqueda de objetos

Y pues como muestra la imagen se nos muestra todos los objetos que contienen el atributo servicePrincipalName (SPN)

De los cuales solo nos interesa el objeto Alexandria que es un usuario con SPN

krbtgt: es una cuenta interna utilizada por kerberos

DC01: este es elc ontrolador de dominio, este posee el SNP por defecto

El ultimo comando a ejecutar es:

object_by_dn: busca un objeto especifico por su Distinguished Name (DN)

CN=Alexandria,CN=Users,DC=ROOTME,DC=local: esto es el Distinguished Name (DN)

None
busqueda especifica de un objeto por su DN
None
bandera encontrada

Y ahí nos muestra la bandera del reto

Entonces damos por terminado el reto

Mientras realice el reto aprendi conceptos como SPN y LDAP, tambien un poco el funcionamiento de Active Directory. Comprendi el uso de la herramienta ldap2json, especialmente en su fase de analisis para explorar informacion ya extraida