
Un script para probar credenciales contra Active Directory Federation Services (ADFS), permitiendo ataques de rociado de contraseñas o de fuerza bruta.
Un script para probar credenciales contra Active Directory Federation Services (ADFS), calculando la URL de ADFS de una organización y permitiendo ataques de password spraying o fuerza bruta.
La idea principal es realizar ataques de password spraying con una demora aleatoria y alta entre cada prueba, y usando una lista de proxies o Tor para dificultar la detección por parte del equipo azul. También son posibles ataques de fuerza bruta, o probar credenciales con el formato usuario:contraseña (por ejemplo de Pwndb). Los inicios de sesión probados se almacenarán en un archivo de registro para evitar probarlos dos veces.
./adfsbrute.py -t TARGET [-u USER] [-U USER_LIST] [-p PASSWORD] [-P PASSWORD_LIST] [-UL userpassword_list]
[-m MIN_TIME] [-M MAX_TIME] [-tp TOR_PASSWORD] [-pl PROXY_LIST] [-n NUMBER_OF_REQUESTS_PER_IP]
[-s STOP_ON_SUCCESS] [-r RANDOM_COMBINATIONS] [-d DEBUG] [-l LOG_FILE]
Los parámetros para los ataques son:
* -t: Dominio objetivo. Ejemplo: test.com
* -u: Nombre de usuario único. Ejemplo: [email protected]
* -U: Archivo con una lista de nombres de usuario. Ejemplo: users.txt
* -p: Contraseña única. Ejemplo: Company123
* -P: Archivo con una lista de contraseñas. Ejemplo: passwords.txt
* -UP: Archivo con una lista de credenciales en el formato "usuario:contraseña". Ejemplo: userpass.txt
* -m : Valor mínimo de segundos aleatorios a esperar entre cada prueba. Valor por defecto: 30
* -M : Valor máximo de segundos aleatorios a esperar entre cada prueba. Valor por defecto: 60
* -tp: Contraseña de Tor (cambiar direcciones IP usando Tor)
* -pl: Usar una lista de proxies (cambiar direcciones IP usando una lista de IPs proxy)
* -n: Número de solicitudes antes de cambiar la dirección IP (usado con -tp o -pl). Valor por defecto: 1
* -s: Detener en caso de éxito, cuando se encuentre una credencial correcta. Valor por defecto: Falso
* -r: Aleatorizar la combinación de usuarios y contraseñas. Valor por defecto: Verdadero
* -d: Mostrar mensajes de depuración. Valor por defecto: Verdadero
* -l: Ubicación del archivo de registro con credenciales ya probadas. Valor por defecto: tested.txt
Password spraying con la contraseña "Company123", contraseña de Tor "test123" y cambiando la IP cada 3 solicitudes:
python3 adfsbrute.py -t company.com -U users.txt -p Company123 -tp test123 -n 3
Password spraying con la contraseña "Company123", contraseña de Tor "test123", cambiando la IP en cada solicitud, tiempo de demora aleatorio entre 10 y 20 segundos y sin aleatorizar el orden de los usuarios:
python3 adfsbrute.py -t company.com -U users.txt -p Company123 -tp test123 -m 10 -M 20 -r False
Encontrando la URL de ADFS:
python3 adfsbrute.py -t company.com
Para usar Tor y cambiar la IP en cada solicitud, debes hashear una contraseña:
tor --hash-password test123
En el archivo /etc/tor/torrc, descomenta la variable ControlPort y la variable HashedControlPassword, y en esta última añade el hash:
ControlPort 9051
HashedControlPassword 16:7F314CAB402A81F860B3EE449B743AEC0DED9F27FA41831737E2F08F87
Reinicia el servicio de Tor y usa esta contraseña como argumento para el script ("-tp test123" o "--tor_password 123")
service tor restart
Este script está implementado para pruebas en auditorías de seguridad, NO lo uses sin la autorización adecuada de la empresa propietaria de ADFS o bloquearás cuentas.