
Um script que permite verificar se um endereço de email é válido no Office365 (enumeração de usuários/emails). Não realiza nenhuma tentativa de login, não possui limitação de taxa e é extremamente útil para avaliações de engenharia social para descobrir quais emails existem e quais não.
Um script que pode verificar se um endereço de e-mail é válido no Office365. Isso não realiza nenhuma tentativa de login, não é limitado e é incrivelmente útil para avaliações de engenharia social para descobrir quais e-mails existem e quais não.
A Microsoft não considera "enumeração de e-mails" uma vulnerabilidade, portanto isso está tirando proveito de uma "funcionalidade". Existem alguns outros scripts públicos de validação de e-mail do Office365, mas todos (que vi) exigem pelo menos 1 tentativa de login por conta de usuário. Isso é detectável e pode ser encontrado como uma tentativa leve de força bruta (1 senha "comum" em várias contas).
Este script permite a validação de e-mail com zero tentativas de login e utiliza apenas a API Autodiscover integrada da Microsoft, sendo assim invisível para a pessoa/empresa que possui o endereço de e-mail. Além disso, esta chamada de API parece ser completamente sem limitação de taxa e consegui validar mais de 2.000 endereços de e-mail em 1 minuto nos meus testes.
O script é realmente muito básico e fácil de usar. Você cria um arquivo com os e-mails que deseja verificar se são válidos ou não e o passa como argumento para o script. Ou você pode fornecer um arquivo apenas com nomes de usuário e usar o argumento -s para adicionar automaticamente um sufixo a cada entrada:
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')
Na verdade, isso é muito fácil de fazer. Acontece que o endpoint da API /autodiscover/autodiscover.json/v1.0/{EMAIL}?Protocol=Autodiscoverv1 retorna códigos de status diferentes para se um e-mail existe no o365 ou não. Código de status 200 significa que existe, 302 significa que não existe.
Se o e-mail existe:

Se o e-mail não existe:

Observe que esta requisição não requer autenticação ou parâmetros de identificação e não causa uma tentativa de login na conta alvo.
Chris King
@raikiasec