
Un script que puede comprobar si una dirección de correo electrónico es válida en Office365 (enumeración de usuarios/correos). Esto no realiza ningún intento de inicio de sesión, no tiene limitación de velocidad y es increíblemente útil para evaluaciones de ingeniería social para descubrir qué correos existen y cuáles no.
Un script que puede ver si una dirección de correo electrónico es válida en Office365. No realiza ningún intento de inicio de sesión, no tiene límite de velocidad y es increíblemente útil para evaluaciones de ingeniería social para encontrar qué correos existen y cuáles no.
Microsoft no considera la "enumeración de correos electrónicos" como una vulnerabilidad, por lo que esto aprovecha una "característica". Hay un par de otros scripts públicos de validación de correos electrónicos de Office365, pero todos (los que he visto) requieren al menos 1 intento de inicio de sesión por cuenta de usuario. Eso es detectable y puede ser encontrado como un intento de fuerza bruta ligero (1 contraseña "común" en múltiples cuentas).
Este script permite la validación de correos electrónicos con cero intentos de inicio de sesión y solo utiliza la API Autodiscover integrada de Microsoft, por lo que es invisible para la persona/empresa propietaria de la dirección de correo. Además, esta llamada a la API parece no tener límite de velocidad y pude validar más de 2,000 direcciones de correo en 1 minuto en mis pruebas.
El script es realmente básico y fácil de usar. Crea un archivo con los correos que quieres verificar si son válidos o no y pásalo como argumento al script. O puedes proporcionar un archivo solo con nombres de usuario y usar el argumento -s para agregar automáticamente un sufijo a cada entrada:
Uso: UhOh365.py [-h] [-v] [-t HILOS] [-o SALIDA] archivo
argumentos posicionales:
archivo Archivo de entrada con un correo por línea
argumentos opcionales:
-h, --help mostrar este mensaje de ayuda y salir
-v, --verbose Mostrar cada resultado como válido/inválido. Por defecto solo muestra válidos
-s, --suffix Agregar un sufijo de dominio a cada línea de entrada del archivo (ej: contoso.com)
-t HILOS, --threads HILOS
Número de hilos a ejecutar. Por defecto son 20
-o SALIDA, --output SALIDA
Archivo de salida solo para correos válidos
-n, --nossl Desactivar la verificación SSL. Esto puede aumentar la velocidad si
es necesario
-p PROXY, --proxy PROXY
Especificar un proxy para ejecutar esto (ej: 'http://127.0.0.1:8080')
Esto es realmente algo muy fácil de hacer. Resulta que el endpoint de la API /autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 devuelve diferentes códigos de estado dependiendo de si un correo existe en o365 o no. El código de estado 200 significa que existe, un 302 significa que no existe.
Si el correo existe:

Si el correo no existe:

Observa que esta solicitud no requiere autenticación ni parámetros identificativos y no provoca un intento de inicio de sesión en la cuenta objetivo.
Chris King
@raikiasec