
CredSpy v1.1.0
Enumeração de usuários do Entra ID e descoberta de métodos de autenticação através da API pública GetCredentialType
CredSpy
Enumera métodos de autenticação do Microsoft Entra ID para endereços de e-mail usando a API pública GetCredentialType. Este é o mesmo endpoint que a página de login da Microsoft usa quando você insere um nome de usuário. Ao contrário da maioria das ferramentas que usam o método GetCredentialType, o CredSpy também mostra os métodos de autenticação suportados para contas existentes.
Útil para avaliações de segurança: enumeração de usuários, descoberta do método de autenticação preferido e identificação de contas com senha, Remote NGC (ex.: notificação push sem senha), FIDO2/chaves de acesso ou autenticação por certificado.
Índice
Instalação
Requer Python 3.10+.
pipx (recomendado):
# Install pipx (skip this if you already have it)
apt install pipx
pipx ensurepath
# From PyPI (recommended)
pipx install credspy
# Or from GitHub
pipx install git+https://github.com/RedByte1337/CredSpy.git
# From a local clone
git clone https://github.com/RedByte1337/CredSpy.git
cd CredSpy
pipx install .
pip:
pip install .
# or run without installing
pip install -r requirements.txt
python credspy.py ...
Após a instalação, execute credspy de qualquer lugar:
credspy -h
Uso
# Single email
credspy [email protected]
# File of emails (one per line, # for comments)
credspy emails.txt
# Through a proxy (SSL verification disabled for MITM tools)
credspy emails.txt --proxy http://127.0.0.1:8080
# Export results to CSV
credspy emails.txt --csv results.csv
# Save filtered email lists (combinable)
credspy emails.txt \
--save-existing existing.txt \
--save-ngc ngc.txt \
--save-password-preferred password-preferred.txt
Opções
| Flag | Descrição |
|---|---|
target | Endereço de e-mail ou caminho para um arquivo de texto |
--proxy URL | Roteia todo o tráfego por um proxy; desativa a verificação SSL (Formato: http://127.0.0.1:8080) |
--no-color | Desativa a saída colorida no terminal |
--csv FILE | Escreve os resultados em CSV |
--save-existing FILE | Salva e-mails que existem |
--save-ngc FILE | Salva e-mails com suporte a RemoteNGC (ex.: notificação push sem senha) |
--save-password-preferred FILE | Salva e-mails existentes com senha como método preferido |
--skip-ngc | Desativa as verificações de RemoteNGC (evita notificações push quando RemoteNGC é o método preferido; isso também desativa a descoberta de NGC) |
[!IMPORTANT] No caso raro de o usuário ter RemoteNGC definido como método principal, a Microsoft acionará instantaneamente a notificação push RemoteNGC para o aplicativo Authenticator durante a enumeração. A única maneira de evitar isso é definir
isRemoteNGCSupportedcomo false na solicitaçãoGetCredentialType. Isso tem a consequência de que a resposta não retornará mais se RemoteNGC é suportado. Se você quiser evitar o envio de notificações automáticas e não precisar da descoberta de RemoteNGC, use a flag--skip-ngc.
Se algum arquivo de saída já existir, será solicitado que você confirme a sobrescrita (Y/n).
Saída
Os resultados são exibidos no terminal à medida que cada e-mail é verificado:
[email protected] | Preferred: Fido (7) | Supported: Password, RemoteNGC (PushNotification), Fido (Count: 3)
[email protected] | IfExistsResult: NotExist (1)
[email protected] | Preferred: Password (1) | Supported: Password, RemoteNGC (PushNotification)
[email protected] | Preferred: RemoteNGC (2) | Supported: Password, RemoteNGC (PushNotification)
[email protected] | Preferred: Fido (7) | Supported: Password, Fido (Count: 5), Certificate
Se a conta de e-mail existir, a primeira coluna após o endereço de e-mail mostrará o método de autenticação preferido do usuário. A última coluna listará os outros métodos de autenticação suportados, como senha, RemoteNGC, Fido (=PassKeys) e autenticação por certificado.
Toda essa informação é muito útil de se levar em consideração ao preparar ataques de phishing.
Para autenticação Fido, é mostrado o número de entradas na AllowList dos FidoParams retornados pela Microsoft. Isso pode ser usado como um indicador para saber quantos métodos de autenticação Fido o usuário cadastrou. No entanto, parece que isso também inclui chaves Fido excluídas que não estão mais vinculadas à conta.
Um resumo é impresso ao final:
--- Summary ---
Exists: 6/7
Throttled: 0/7
Preferred: Fido 3/6, Password 2/6, ...
Supported: Password 6/6, RemoteNGC 1/6, Fido 3/6, Certificate 2/6
DomainType: Managed 6/6
--- Output files ---
CSV (results.csv): 7 entries
Colunas CSV
Email, Exists, PreferredType, HasPassword, RemoteNGC, HasFido, HasCertAuth, DomainType
- Exists — nome do enum (
Exists,NotExist, …) - RemoteNGC —
PushNotification/ListSessionsquando conhecido, caso contrárioTrue/False
Como funciona
- Obter um contexto de sessão (
sCtx) da página de autorização OAuth da Microsoft - Enviar via POST cada nome de usuário para
login.microsoftonline.com/common/GetCredentialType - Analisar os flags das credenciais e imprimir / exportar os resultados
Nenhuma autenticação é necessária. Isso usa o mesmo fluxo não autenticado da interface de login.
Aviso legal
Esta ferramenta destina-se apenas a testes de segurança e pesquisa autorizados. Use-a somente contra locatários e contas que você possua ou para os quais tenha permissão explícita por escrito para testar. Os autores não são responsáveis pelo uso indevido.