Num ambiente Azure AD, é possível determinar se um utilizador tem a Autenticação Multi-Factor (MFA) desativada sem necessitar de quaisquer 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 a criação da conta e que o usuário não foi capaz de ativar a autenticação multifator (MFA) ou alterar sua conta. senha. E há outras ‘anomalias’, como a data de alteração da senha ser anterior à 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 foi criado!
Atualização em 16-10-2023:
Atualização em 18-02-2024:
Estas informações podem ser úteis para identificar potenciais riscos de segurança concebidos para utilização pelas equipas vermelha e azul.
O arquivo de banco de dados roadrecon ou arquivo JSON que foi extraído com a ajuda 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 veja:
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 - This is a parser for generated JSON file or the roadrecon database file designed for use by both red and blue teams.
Database can be created when using --code-javascript option to extract 'merged_users.json' file with be created to later input this file with --json-input argument.
And roadrecon generated roadrecon.db file can be used! roadrecon is developed by https://github.com/dirkjanm credits to him!
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 js na pasta:Siga estas etapas para recuperar uma lista de usuários junto com as informações de suas contas usando o script fornecido.
Faça login no Portal do Azure
Acesse o gerenciamento de usuários
Abra as ferramentas do desenvolvedor
F12
em seu navegador para abrir as ferramentas do desenvolvedor.Execute o roteiro
Recuperar UsersList e UserInfo
Baixar informações do usuário mescladas
merged_users.json
será gerado se tudo correr bem.Executar no verificador de senha do Azure AD
azurepwchecker.py --json-input merged_users.json
Veja 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:
Carreguei a versão editada do GraphRunner de @dafthack e créditos para ele. Nesta versão modificada, adicionei um novo recurso que permite ler arquivos HAR diretamente do dispositivo da “vítima”. Esta nova função ajuda a verificar e examinar tokens de acesso para acessar diferentes permissões ou escopos. Além disso, se um Token de Acesso tiver expirado, esta versão permite o uso de um Token de Atualização para criar um novo Token de Acesso. Este processo é urgente, mas elimina a necessidade de nomes de usuário e senhas, caso você já tenha 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 experiência não é principalmente em JavaScript, então meu foco principal era 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 em navegadores da web. Para a maioria dos navegadores, basta pressionar F12 para abrir as Ferramentas de Desenvolvimento e navegar até a guia 'Rede' para salvar os arquivos HAR, após atualizar a página da web: video
Carregue seu(s) arquivo(s) HAR através da interface fornecida. Após o upload, você pode navegar por vários tokens de acesso para analisar detalhes da sessão, incluindo seus escopos e muito mais. Os tokens exibidos em vermelho indicam que expiraram. GraphRunner também suporta o uso de Tokens de Atualização para gerar Tokens de Acesso novos e válidos quando necessário: vídeo
Adicionados recursos 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