
Скрипт, который может проверить, является ли адрес электронной почты действительным в Office365 (перебор пользователей/email). Он не выполняет попыток входа в систему, не имеет ограничений по скорости и чрезвычайно полезен для оценки социальной инженерии, чтобы определить, какие email существуют, а какие нет.
Скрипт, который позволяет проверить, существует ли адрес электронной почты в Office365. Он не выполняет попыток входа, не имеет ограничений по частоте запросов и чрезвычайно полезен для оценки социальной инженерии — позволяет определить, какие email-адреса существуют, а какие нет.
Microsoft не считает «перебор email-адресов» уязвимостью, поэтому мы используем «функцию». Существует несколько других публичных скриптов для проверки email в Office365, но все они (насколько я видел) требуют как минимум одну попытку входа на каждую учётную запись. Это обнаружимо и может быть расценено как лёгкая атака перебора (один «распространённый» пароль для многих учётных записей).
Данный скрипт позволяет проверять email без единой попытки входа и использует только встроенный Autodiscover API от Microsoft, поэтому он невидим для владельца email-адреса или компании. Кроме того, этот API-запрос, по-видимому, совершенно не ограничен по частоте — в ходе тестирования я смог проверить более 2000 email-адресов за одну минуту.
Скрипт очень прост в использовании. Создайте файл с email-адресами, которые хотите проверить, и передайте его скрипту в качестве аргумента. Или можете передать файл только с именами пользователей и использовать аргумент -s, чтобы автоматически добавить суффикс к каждой записи:
Usage: UhOh365.py [-h] [-v] [-t THREADS] [-o OUTPUT] file
positional arguments:
file Input file containing one email per line
optional arguments:
-h, --help show this help message and exit
-v, --verbose Display each result as valid/invalid. By default only displays valid
-s, --suffix Add a domain suffix to every input line from file (e.g: contoso.com)
-t THREADS, --threads THREADS
Number of threads to run with. Default is 20
-o OUTPUT, --output OUTPUT
Output file for valid emails only
-n, --nossl Turn off SSL verification. This can increase speed if
needed
-p PROXY, --proxy PROXY
Specify a proxy to run this through (eg: 'http://127.0.0.1:8080')
На самом деле всё очень просто. Оказывается, конечная точка API /autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 возвращает разные коды состояния в зависимости от того, существует ли email в O365 или нет. Код 200 означает, что адрес существует, код 302 — что его нет.
Если email существует:

Если email не существует:

Обратите внимание: этот запрос не требует аутентификации или идентифицирующих параметров и не вызывает попытки входа в целевую учётную запись.
Chris King
@raikiasec