¿Qué es?
Este ataque se basa en construir un TGS (ticket
Kerberos) válido para un servicio, una vez se ha obtenido el hash NTLM del
propietario del susodicho servicio. De esta manera, es posible acceder a este
servicio con un TGS personalizado que contenga los más elevados privilegios.
Ejemplo de este tipo de
ataque
El siguiente ejemplo parte de una máquina de HTB
(intelligence).
Paso 1.
Tenemos un usuario y su hash NTLMv2, que incluso ha
sido posible crackear, pero esto último no es relevante en este caso.
Hash NTLMv2 del usuario
Ted.Graves
Paso 2.
Comprobamos si existe algún servicio sobre el cual
el usuario sea propietario.
Para comprobar esto se utilizará la herramienta: gMSADumper (https://github.com/micahvandeusen/gMSADumper),
ya que la herramienta “impacket”, no trae ninguna herramienta para hacer
esto. Al menos hasta dónde mi conocimiento llega.
***** NOTA: *****
Esta herramienta, busca Group Managed Service
Accounts (gMSA), pero, ¿qué son?
Los gMSAs
son cuentas de servicio que ofrecen una manera segura para ejecutar
aplicaciones, servicios y tareas de manera automatizada. Fueron introducidas en
Windows Server 2016 pero pueden ser aprovechadas en Windows Server 2012 y
versiones anteriores
Las características
de estas cuentas son que las contraseñas de las mismas son generadas
aleatoriamente, cambian automáticamente y no es necesario que ningún usuario
las conozca. Además, estas cuentas de servicio son “instaladas” únicamente
en el servidor (por lo tanto será necesario utilizar una cuenta de máquina) que
solicitara su uso al AD en tiempo de ejecución. Por lo dicho,
Las gMSAs
son un tipo específico de objeto dentro de Active Directory, concretamente: msDS-GroupManagedServiceAccount. Dentro
de este objeto, la propiedad/atributo más importante es: msDS-ManagedPassword, este atributo contiene un BLOB con
información de la contraseña actual
Bibliografía:
·
https://stealthbits.com/blog/what-are-group-managed-service-accounts-gmsa/
********************
El uso de la herramienta nos devuelve el siguiente
dato:
Es decir, existe un servicio sobre el que el
usuario Ted.Graves, tiene permisos.
Paso 3.
Procedemos a utilizar la herramienta de impacket: getST, para generar un ticket de
servicio que nos permita elevar permisos sobre la máquina.
El resultado es:
Es decir, tenemos un problema de fecha/hora.
***** NOTA: *****
En un entorno de AD, es muy importante tener la
hora sincronizada con el controlador de dominio, ya que Kerberos no funciona
correctamente si la fecha y hora de nuestro equipo no va acorde con la fecha y
hora del controlador de dominio/servidor
Para mejorar esto, necesitamos configurar el
servicio NTP de nuestra máquina para que utilice el servidor NTP del servidor y
así corregir el problema
Si tuvieras algún problema con ello, se recomienda
seguir las siguientes instrucciones
********************
Repetimos la solicitud para generar un ticket de
servicio, y conseguimos nuestro objetivo
Ahora sólo queda utilizar el ticket generado mediante
Pass-The-Ticket
En cualquier caso
Lo que hagas con la información es cosa tuya, no
mía... pero ten conciencia