アップデート一覧に戻る
New releaseJul 28, 2026

CredSpy v1.1.0

Entra IDのユーザー列挙と認証方式の発見(公開されたGetCredentialType API経由)

共有

PyPi Version Python Version GitHub Sponsors Twitter LinkedIn

CredSpy

公開されている GetCredentialType API を使用して、メールアドレスに対する Microsoft Entra ID の認証方法を列挙します。これは、Microsoft のログインページでユーザー名を入力した際に使用されるものと同じエンドポイントです。GetCredentialType メソッドを使用するほとんどのツールとは対照的に、CredSpy は既存アカウントでサポートされている認証方法も表示します。

セキュリティ評価に役立ちます: ユーザー列挙、優先認証方法の特定、パスワード、Remote NGC (例: パスワードレスプッシュ通知)、FIDO2/パスキー、または証明書認証を使用するアカウントの特定。

目次

インストール

Python 3.10+ が必要です。

pipx (推奨):

# 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 ...

インストール後は、どこからでも credspy を実行できます:

credspy -h

使用方法

# 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

オプション

FlagDescription
targetメールアドレスまたはテキストファイルへのパス
--proxy URLすべてのトラフィックをプロキシ経由でルーティング; SSL 検証を無効化 (形式: http://127.0.0.1:8080)
--no-color色付きターミナル出力を無効化
--csv FILE結果を CSV に書き込む
--save-existing FILE存在するメールアドレスを保存
--save-ngc FILERemoteNGC (例: パスワードレスプッシュ通知) がサポートされているメールアドレスを保存
--save-password-preferred FILEパスワードが優先方法である既存のメールアドレスを保存
--skip-ngcRemoteNGC チェックを無効化 (RemoteNGC が優先方法の場合にプッシュ通知を回避; これにより NGC 検出も無効化されます)
--delay <float>各アカウント間で指定された秒数だけスリープ。多数のアカウントをチェックする際のスロットリング回避に使用

[!IMPORTANT] ユーザーが RemoteNGC を主要な方法として設定している稀なケースでは、列挙中に Microsoft が Authenticator アプリへ RemoteNGC プッシュ通知を即座にトリガーします。 これを回避する唯一の方法は、GetCredentialType リクエストで isRemoteNGCSupported を false に設定することです。これにより、レスポンスで RemoteNGC がサポートされているかどうかが返されなくなります。 自動通知の送信を避けたい場合で、RemoteNGC の検出が不要な場合は、--skip-ngc フラグを使用してください。

出力ファイルが既に存在する場合、上書きの確認を求められます (Y/n)。

出力

各メールアドレスがチェックされると、結果がターミナルにストリーミングされます:

[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

メールアカウントが存在する場合、メールアドレスの後の最初の列にユーザーの優先認証方法が表示されます。最後の列には、Password、RemoteNGC、Fido (=PassKeys)、Certificate 認証など、その他のサポートされている認証方法が一覧表示されます。

これらの情報はすべて、フィッシング攻撃の準備において考慮すべき非常に有用なものです。

Fido 認証の場合、Microsoft から返される FidoParams の AllowList 内のエントリ数が表示されます。これは、ユーザーが登録している Fido 認証方法の数を知る指標として使用できます。ただし、これにはアカウントにリンクされなくなった削除済みの Fido キーも含まれるようです。

最後にサマリーが出力されます:

--- 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

CSV 列

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

  • Exists — enum 名 (Exists, NotExist, …)
  • RemoteNGC — 判明している場合は PushNotification / ListSessions、それ以外は True/False

仕組み

  1. Microsoft OAuth authorize ページからセッションコンテキスト (sCtx) を取得
  2. 各ユーザー名を login.microsoftonline.com/common/GetCredentialType に POST
  3. 資格情報フラグを解析し、結果を表示 / エクスポート

認証は不要です。これはログイン UI と同じ未認証フローを使用します。

免責事項

このツールは 許可されたセキュリティテストおよび研究のみ を目的としています。所有している、またはテストに対する明示的な書面による許可を得ているテナントおよびアカウントに対してのみ使用してください。作者は不正使用に対して責任を負いません。

カテゴリ