
# Verificador de Senhas do Azure AD
Em um ambiente Azure AD, é possível determinar se um usuário tem a Autenticação Multifator (MFA) desabilitada sem exigir privilégios especiais. Isso pode ser feito analisando a data de criação da conta e a data da última alteração de senha.
Se a data e hora de criação de uma conta corresponderem à data e hora da última alteração de senha, isso pode indicar que nenhuma interação humana ocorreu desde que a conta foi criada e que o usuário não conseguiu habilitar a Autenticação Multifator (MFA) ou alterar sua senha. E existem outras "anomalias", como a data de alteração de senha ser mais antiga que a data de criação. Isso sugere também que a Autenticação Multifator (MFA) não pôde ser habilitada porque o Usuário ainda não existia!
Atualização em 16-10-2023:
Atualização em 18-02-2024:
Essas informações podem ser úteis para identificar riscos de segurança potenciais, projetadas para uso tanto por equipes vermelhas quanto azuis.
O arquivo do banco de dados roadrecon ou o arquivo JSON extraído com o auxílio da opção --code-javascript é necessário para esta ferramenta.
A ferramenta Roadrecon é desenvolvida por dirkjanm e pode ser baixada no github https://github.com/dirkjanm/ROADtools ou pip install roadrecon.
Como usar, consulte:
python3 azurepwchecker.py
usage: azurepwchecker.py [-h] [--roadrecon-dump] [--roadrecon-dump-mfa] [-d DB] [-m] [-l] [-ll] [-lll] [-la] [-lo]
[-ji JSON_INPUT] [-c]
Azure AD Password Checker - Este é um parser para o arquivo JSON gerado ou para o arquivo do banco de dados roadrecon, projetado para uso tanto por equipes vermelhas quanto azuis.
O banco de dados pode ser criado ao usar a opção --code-javascript para extrair o arquivo 'merged_users.json', que será criado para posteriormente ser inserido com o argumento --json-input.
E o arquivo roadrecon.db gerado pelo roadrecon pode ser usado! roadrecon é desenvolvido por https://github.com/dirkjanm, créditos a ele!
options:
-h, --help show this help message and exit
-d DB, --db DB Specify the path to the 'roadrecon.db' database file, default is this location
-m, --mfa-list User Accounts without MFA (No privileged user required)! This argument helps identify user
accounts that have not enabled Multi-Factor Authentication (MFA). If an account's creation
date and time match its last password change date and time, it may indicate that no human
interaction has occurred since the account was created, and the user has not been able to
enable MFA or change their password. And there are other 'anomalies' such as the password
change date being older than the creation date. This suggests also that Multi-Factor
Authentication (MFA) couldn't be enabled because the User wasn't created yet! :-]
-mo OUTFILE, --outfile OUTFILE
Output users with MFA anomalies to file
-l, --pw-month User accounts that had their passwords changed last month
-ll, --pw-year User accounts that had their passwords changed last year
-lll, --pw-older User accounts that haven't changed their passwords in a long time, oldest first
-la, --admin User accounts that are members of 'Admin' named groups, including 'Global Reader'
-lo, --out-of-hours User password change that occurred outside of office hours, specifically between 5:00 PM
(17:00) and 8:00 AM (08:00) on weekdays, as well as on Saturdays and Sundays
-ji JSON_INPUT, --json-input JSON_INPUT
Provide the JSON file imported from your web browser's console using JavaScript. For
'createdDateTime' and 'lastPasswordChange' details, ensure you download the JSON output using
the '--code-javascript' option.
-c, --code-javascript
Perform extraction even if 'azurepwchecker.py' or 'roadrecon' is unavailable. This script
enables extraction through the JavaScript console of a web browser. To proceed, ensure you
have a valid account to log in at https://portal.azure.com/#view/Microsoft_AAD_UsersAndTenants
/UserManagementMenuBlade/~/AllUsers or an active session on a computer. Copy and paste the
provided JavaScript code into the browser's console. Once the session is validated and you
have the necessary permissions, a JSON file named 'merged_users.json' will be generated. You
can then import it using the following command as example: 'azurepwchecker.py --json-input
merged_users.json -m'
-v, --version show program's version number and exit
run roadrecon first:
(Run the following command to install the tool "pip install roadrecon)"
--roadrecon-dump "roadrecon dump" command or do it with roadrecon
--roadrecon-dump-mfa "roadrecon dump --mfa" command (requires privileged access) or do it with roadrecon
azurepwchecker.py --code-javascript ou o arquivo js na pasta:Siga estes passos para obter uma lista de usuários juntamente com as informações das contas usando o script fornecido.
Faça login no Portal do Azure
Acesse o Gerenciamento de Usuários
Abra as Ferramentas de Desenvolvedor
F12 no seu navegador para abrir as ferramentas do desenvolvedor.Execute o Script
Obtenha UsersList e UserInfo
Baixe as Informações Mescladas do Usuário
merged_users.json será gerado se tudo ocorrer bem.Execute no Verificador de Senhas do Azure AD
azurepwchecker.py --json-input merged_users.jsonVeja o exemplo:
Veja a introdução:
Atualização 16-10-2023:

Como usar o argumento --code-javascript para gerar uma lista de usuários no Portal do Azure, que pode então ser importada usando o comando azurepwchecker.py --json-input merged_users.json:
Atualização 13-02-2024:
Enviei uma versão editada do GraphRunner do @dafthack e créditos a ele. Nesta versão modificada, adicionei um novo recurso que permite ler arquivos HAR diretamente do dispositivo da "vítima". Essa nova função ajuda a verificar e examinar Access Tokens para acessar diferentes permissões ou escopos. Além disso, se um Access Token expirou, esta versão permite o uso de um Refresh Token para criar um novo Access Token. Esse processo é sensível ao tempo, mas elimina a necessidade de nomes de usuário e senhas, se você já tiver feito login no ambiente Office365, pois requer apenas os tokens de sessão encontrados nos arquivos HAR.
Por favor, entenda que o código pode parecer um pouco desorganizado. Minha especialidade não é primariamente JavaScript, então meu foco principal foi adicionar novos recursos em vez de organizar o código.
Baixe o(s) arquivo(s) HAR. Você pode usar as Ferramentas de Desenvolvimento disponíveis nos navegadores. Na maioria dos navegadores, basta pressionar F12 para abrir as Ferramentas de Desenvolvimento e, em seguida, navegar até a aba 'Network' para salvar os arquivos HAR, após atualizar a página da web: vídeo
Envie seu(s) arquivo(s) HAR pela interface fornecida. Após o envio, você pode navegar por vários Access Tokens para analisar os detalhes da sessão, incluindo seus escopos e muito mais. Tokens exibidos em vermelho indicam que expiraram. O GraphRunner também suporta o uso de Refresh Tokens para gerar novos Access Tokens válidos quando necessário: vídeo
Recursos adicionados para permitir o download de dados completos do usuário em um arquivo JSON, detectar anomalias de MFA em contas e baixar uma lista dessas anomalias: vídeo