Contaremos con varias entradas en relación con pentesting sobre Active Directory poniendo un énfasis al uso de herramientas que permitan realizar un pentest sobre ello y además ver y profundizar en la integración de las mismas.
Hoy veremos un script en Python que nos permite realizar Password Spraying en un Directorio Activo de Windows.
Sprayhound
Es un script realizado en Python que realiza un password spraying seguro sobre un Active Directory, permitiendo trabajar e integrar directamente con Bloodhound, llegando a marcar directamente en Bloodhound cuando se obtiene el credencial de un usuario
Instalación
Para instalar tenemos dos opciones realizar directamente por pip, vale aclarar que requieres estar con python 3.
|
|
O desde el mismo repositorio.
|
|
Ejecución de Sprayhound
Si ejecutamos sprayhound -h obtendremos la siguiente información.
|
|
Si tenemos este resultado quiere decir que está instalado correctamente.
Para realizar el password spraying requerimos contar dos escenarios.
- Tener un listado de posibles usuarios.
- Contar con algún usuario válido en dominio para obtener el resto de usuarios, ya sea por ejemplo con Crackmapexec o realizarlo con ayuda de Sprayhound
Sprayhound con usuarios.
|
|
En caso de que tengamos algún usuario con la contraseña que estemos realizando el password spraying será el siguiente.
Autenticación a LDAP
En el caso de que contamos con un usuario válido podremos autenticarnos por LDAP para obtener los usuarios del dominio y además identificar la política de contraseñas haciendo por ello lo mencionado al inicio del post que es una forma de hacerlo seguro.
Entonces ejecutamos con los flags -lu
y -lp
que nos brindara la autenticación por LDAP para obtener todos los usuarios y comprobar sobre ellos el proceso de Password Spraying.
|
|
Al realizar esta tarea validamos la autenticación y como obtiene los usuarios de dominio un total de 105.
Integración con Bloodhound
Ahora veremos la integración con Bloodhound que permite tener sprayhound para ello primero obtendremos con el ingestor respectivo el mapeo del dominio y cargaremos el mismo en Bloodhound.
Mapeando el dominio con Bloodhound.
En este punto ejecutamos el ingestor de python bloodhound.py para realizar el mapeo del dominio y contar con la integracion respectiva.
Ejecucion con Bloodhound
Para que sprayhound se autentique correctamente contra Bloodhound tendremos que hacer uso de las variables -nu
y -np
por defecto se autenticara al 127.0.0.1
, pero si deseas que lo realice a otro equipo en específico se realiza con -nh
.
El comando completo se muestra a continuación.
|
|
En este caso identificamos que se tiene dos usuarios válidos con la contraseña que estamos registrando.
A diferencia de las anteriores pruebas nos menciona nuevamente si deseamos marcar como owned al indicarle que si nos especificara que realizo la tarea.
Si visualizamos en Bloodhound veremos que ambos están marcados.
Si al realizar el proceso e identificamos un usuario valido pero el mismo no se encuentra en bloodhound obtendremos el siguiente mensaje.
Camino para ser Domain Admin
Al realizar la ejecución de la herramienta y obtenemos algún usuario con privilegios administrativos en el dominio, veremos al final [PATH TO DA].
Si llegamos a visualizar esto en Bloodhound además de marcarlo podremos ver que evidentemente se tiene una forma de acceder a ser ADMINISTRADOR DE DOMINIO.
Monitoreando la autenticación con LDAPMONITOR
Por fines de prueba me dispuse a realizar el monitoreo del controlador de dominio por medio de ldapmonitor para identificar los eventos que estaba realizando.
El controlador de dominio comienza a recibir todos los intentos de inicio de sesión del resto de las cuentas, verificando que es solo uno por usuario.
En este caso, ejecute él bloqueó de una cuenta después de 5 intentos, para comprobar si estaba correctamente funcionando el proceso.
Punto final
Como saben estamos ya con esta entrada trabajando con una integración con Bloodhound, y además de ver como ejecutar otra herramienta.
Regards
Snifer