3. Desactivar las protecciones del Antivirus de Windows Defender.
5. Asignar un SPN al usuario creado
7. Convertir un usuario en Administrador local de los clientes.
8. Generar carpetas compartidas con los administradores locales.
Esquema de trabajo
Vamos a explotar el siguiente esquema:
En un Directorio Activo hemos obtenido un acceso inicial con un usuario con bajos privilegios, por ejemplo, utilizando SMB Relay o NTLM Relay. (vgarcia:Password2).
Con este acceso inicial en mente vamos a tratar de crackear el Hash de un Ticket-Granting Service (TGS) expedido en nombre de un usuario que posee un SPN asociado.
En este ataque explotamos la capacidad de todos y cada uno de los usuarios autenticados de un dominio de solicitar un Ticket-Granting Service.
Recordemos que este TGS se encuentra encriptado con el secreto del servicio al que queremos acceder. Si este servicio es un usuario con un SPN asociado (un usuario que Active Directory entiende como un servicio) entonces su secreto será su contraseña y por lo tanto, el Hash obtenido se podrá crackear si la contraseña no es muy robusta.
Es una herramienta de post-explotación que se aprovecha de protocolos y características propias de los entornos de Directorio Activo para obtener una gran cantidad de información sobre los mismos.
Es una colección de clases de Python para trabajar con protocolos de red. Está pensada para obtener control a bajo nivel de los paquetes utilizados por algunos protocolos y, en algunos casos como SMBv1, la propia implementación del protocolo en sí mismo.
Concretamente para este ataque vamos a utilizar impacket-GetUserSPNs
Vamos a comprobar el alcance de nuestros credenciales capturados.
Vamos a obtener TGS de los usuarios con SPNs asociados.
Vamos a crackear el Hash capturado en el TGS.
Vamos a comprobar el alcance de nuestros nuevos credenciales.
Vamos a entrar en el DC.
EXPLOIT
1. Comprobar alcance de credenciales
Como ya hemos dicho en la introducción, hemos conseguido unos credenciales en una fase preliminar y ya tenemos nuestro Foothold en la máquina.
vgarcia:Password2
Vamos a utilizar lo ya aprendido para comprobar el alcance de estos credenciales. Realizamos un Spraying en toda la red con estos credenciales:
cme smb RED -u 'USUARIO' -p 'PASSWORD'
Vemos que el usuario es administrador solo en su propio terminal.
Sin embargo, aunque no tenga privilegios, este usuario puede solicitar TGS igual que cualquier otro usuario del dominio.
2. Obtener TGS de SPNs asociados a usuarios
A continuación aprovechando las funcionalidades de impacket-GetUserSPNs vamos a solicitar desde la cuenta del usuario que tenemos los TGS de los diferentes SPNs, a ver que encontramos.