Voltar às atualizações
New releaseJul 28, 2026

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

Compartilhar

PyPi Version Python Version GitHub Sponsors Twitter LinkedIn

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

FlagDescrição
targetEndereço de e-mail ou caminho para um arquivo de texto
--proxy URLRoteia todo o tráfego por um proxy; desativa a verificação SSL (Formato: http://127.0.0.1:8080)
--no-colorDesativa a saída colorida no terminal
--csv FILEEscreve os resultados em CSV
--save-existing FILESalva e-mails que existem
--save-ngc FILESalva e-mails com suporte a RemoteNGC (ex.: notificação push sem senha)
--save-password-preferred FILESalva e-mails existentes com senha como método preferido
--skip-ngcDesativa 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 isRemoteNGCSupported como false na solicitação GetCredentialType. 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, …)
  • RemoteNGCPushNotification / ListSessions quando conhecido, caso contrário True/False

Como funciona

  1. Obter um contexto de sessão (sCtx) da página de autorização OAuth da Microsoft
  2. Enviar via POST cada nome de usuário para login.microsoftonline.com/common/GetCredentialType
  3. 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.

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.

Categorias