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

Enumere os 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 (por exemplo, Notificação Push sem Senha), FIDO2/passkeys 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 através de um proxy; desativa a verificação SSL (Formato: http://127.0.0.1:8080)
--no-colorDesativa a saída colorida no terminal
--csv FILEGrava os resultados em CSV
--save-existing FILESalva os e-mails que existem
--save-ngc FILESalva os e-mails com RemoteNGC (por exemplo, notificação push sem senha) suportado
--save-password-preferred FILESalva os 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)
--delay <float>Aguarda a quantidade de segundos fornecida entre cada conta. Use ao verificar um grande número de contas para evitar throttling

[!IMPORTANT] No caso raro de o usuário ter o RemoteNGC definido como método principal, a Microsoft acionará instantaneamente a notificação push do RemoteNGC para o aplicativo Authenticator durante a enumeração. A única maneira de evitar isso é definir isRemoteNGCSupported como false na requisição GetCredentialType. Isso tem como consequência que a resposta não retornará mais se o RemoteNGC é suportado. Se você quiser evitar o envio de quaisquer notificações automáticas e não precisar da descoberta de RemoteNGC, use a flag --skip-ngc.

Se qualquer arquivo de saída já existir, você será solicitado a confirmar 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 Password, RemoteNGC, Fido (=PassKeys) e autenticação por Certificate.

Todas essas informações são muito úteis para levar em consideração ao se preparar para ataques de phishing.

Para autenticação Fido, o número de entradas na AllowList dos FidoParams retornados pela Microsoft é mostrado. Isso pode ser usado como um indicador para saber quantos métodos de autenticação Fido o usuário registrou. No entanto, parece que isso também inclui chaves Fido excluídas que não estão mais vinculadas à conta.

Um resumo é impresso no 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 do CSV

Email, Exists, PreferredType, HasPassword, RemoteNGC, HasFido, HasCertAuth, DomainType

  • Exists — nome do enum (Exists, NotExist, …)
  • RemoteNGC — PushNotification / ListSessions quando conhecido, caso contrário True/False

Como funciona

  1. Obtém um contexto de sessão (sCtx) da página de autorização do Microsoft OAuth
  2. Envia cada nome de usuário via POST para login.microsoftonline.com/common/GetCredentialType
  3. Analisa as flags de credencial e imprime / exporta os resultados

Nenhuma autenticação é necessária. Isso usa o mesmo fluxo não autenticado que a interface de login.

Esta ferramenta destina-se apenas a testes de segurança e pesquisa autorizados. Use-a somente contra tenants e contas que você possui ou tem permissão escrita explícita para testar. Os autores não são responsáveis pelo uso indevido.

Categorias