
Office365에서 이메일 주소가 유효한지 확인할 수 있는 스크립트입니다 (사용자/이메일 열거). 로그인 시도를 수행하지 않으며, 속도 제한이 없고, 소셜 엔지니어링 평가에서 어떤 이메일이 존재하고 어떤 것이 존재하지 않는지 찾는 데 매우 유용합니다.
이 스크립트는 Office365에서 이메일 주소가 유효한지 확인할 수 있습니다. 로그인 시도를 전혀 수행하지 않으며, 제한이 없으며, 소셜 엔지니어링 평가에서 어떤 이메일이 존재하고 존재하지 않는지 찾는 데 매우 유용합니다.
Microsoft는 "이메일 열거"를 취약점으로 간주하지 않으므로, 이는 "기능"을 활용하는 것입니다. 공개된 Office365 이메일 검증 스크립트가 몇 가지 더 있지만, 제가 본 것들은 모두 사용자 계정당 최소 1번의 로그인 시도가 필요합니다. 이는 감지 가능하며 여러 계정에 대해 1개의 "일반적인" 비밀번호를 시도하는 가벼운 무차별 대입 시도로 발견될 수 있습니다.
이 스크립트는 로그인 시도 없이 이메일 검증을 가능하게 하며, Microsoft의 내장 Autodiscover API만 사용하므로 이메일 주소 소유자(개인 또는 회사)에게 보이지 않습니다. 또한, 이 API 호출은 완전히 제한이 없는 것으로 보이며, 테스트에서 1분 안에 2,000개 이상의 이메일 주소를 검증할 수 있었습니다.
스크립트는 실제로 매우 기본적이고 사용하기 쉽습니다. 확인하려는 이메일 목록이 담긴 파일을 만들고 스크립트 인수로 전달하면 됩니다. 또는 사용자 이름만 있는 파일을 제공하고 -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')
이것은 실제로 매우 간단한 작업입니다. /autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 API 엔드포인트는 이메일이 o365에 존재하는지 여부에 따라 다른 상태 코드를 반환합니다. 200 상태 코드는 존재함을 의미하고, 302는 존재하지 않음을 의미합니다.
이메일이 존재하는 경우:

이메일이 존재하지 않는 경우:

이 요청은 인증이나 식별 매개변수가 전혀 필요하지 않으며 대상 계정에 로그인 시도를 유발하지 않습니다.
Chris King
@raikiasec