Gssapi-Abuse es una herramienta lanzada como parte de mi charla DEF CON 31, diseñada para enumerar hosts en redes de Active Directory susceptibles al abuso de GSSAPI. Esta herramienta se enfoca en dos características principales que exploraremos a continuación.
Características de la Herramienta
Enumeración de Hosts No Windows
La primera característica permite identificar hosts no Windows unidos a Active Directory que ofrecen autenticación GSSAPI a través de SSH.
Actualizaciones Dinámicas de DNS
La segunda característica permite realizar actualizaciones dinámicas de DNS para hosts abusables de GSSAPI que carecen de entradas DNS correctas. Esto asegura que las entradas DNS coincidan tanto con el nombre principal del servicio como con la dirección IP.
Requisitos Previos
Para utilizar gssapi-abuse, se requiere una pila krb5 funcional con un krb5.conf configurado correctamente. En sistemas Windows, se debe instalar el software MIT Kerberos y en sistemas Linux, es necesario instalar el paquete libkrb5-dev.
Una vez cumplidos los requisitos, las dependencias de Python se pueden instalar con pip.
Windows
En los hosts de Windows, se debe instalar el software MIT Kerberos además de los módulos de Python enumerados en
requirements.txt
, esto se puede obtener en la página de distribución de MIT Kerberos . Windows krb5.conf se puede encontrar en
C:\ProgramData\MIT\Kerberos5\krb5.conf
.
Linux
El paquete
libkrb5-dev
debe instalarse antes de instalar los requisitos de Python.
En todos los SO
Una vez que se cumplan los requisitos , puede instalar las dependencias de Python mediante la herramienta pip/pip3.
pip install -r requirements.txt
Modo de Enumeración
El modo de enumeración se conecta a Active Directory, realiza una búsqueda LDAP para identificar computadoras que no son de Windows y luego intenta conectarse a cada host a través de SSH para determinar si permite la autenticación basada en GSSAPI.
Una vez que se haya obtenido la lista de máquinas que no son Windows, gssapi-abuse intentará conectarse a cada host a través de SSH y determinará si se permite la autenticación basada en GSSAPI.
Ejemplo de Uso
python .\gssapi-abuse.py -d ad.ginge.com enum -u john.doe -p SuperSecret!
[=] Encontradas 2 máquinas no Windows registradas en AD
[!] El host ubuntu.ad.ginge.com no tiene GSSAPI habilitado sobre SSH, ignorando
[+] El host centos.ad.ginge.com tiene GSSAPI habilitado sobre SSH
Modo DNS
El modo DNS utiliza Kerberos y dnspython para realizar actualizaciones de DNS autenticadas. Es necesario contar con una configuración krb5 válida y un ticket de servicio TGT o DNS dirigido a un controlador de dominio específico.
El modo DNS utiliza Kerberos y dnspython para realizar una actualización de DNS autenticada a través del puerto 53 mediante el protocolo DNS-TSIG. Actualmente, el modo
dns
depende de una configuración krb5 que funcione con un ticket de servicio TGT o DNS válido dirigido a un controlador de dominio específico, por ejemplo
DNS/dc1.victim.local
.
Ejemplos de Uso
Agregar un registro DNS A para el host ahost.ad.ginge.com:
python .\gssapi-abuse.py -d ad.ginge.com dns -t ahost -a add --type A --data 192.168.128.50
Agregar un
PTR
registro inverso para el host
ahost.ad.ginge.com
. Observe que el
data
argumento termina con a
.
, esto es importante o el registro se convierte en un registro relativo a la zona, lo cual no queremos. También necesitamos especificar la zona de destino a actualizar, ya que
PTR
los registros se almacenan en zonas diferentes a los registros
A
.
python .\gssapi-abuse.py -d ad.ginge.com dns --zone 128.168.192.in-addr.arpa -t 50 -a add --type PTR --data ahost.ad.ginge.com.
Resultados de Búsqueda de DNS
Después de la ejecución, se pueden verificar los resultados de búsqueda directa e inversa con comandos nslookup.
nslookup ahost.ad.ginge.com
&
nslookup 192.168.128.50