
CredSpy v1.1.0
Entra ID-Benutzerenumeration und Authentifizierungsmethoden-Entdeckung über die öffentliche GetCredentialType-API
CredSpy
Zählt Microsoft Entra ID-Authentifizierungsmethoden für E-Mail-Adressen mithilfe der öffentlichen GetCredentialType-API auf. Dies ist derselbe Endpunkt, den die Microsoft-Anmeldeseite verwendet, wenn Sie einen Benutzernamen eingeben. Im Gegensatz zu den meisten Tools, die die GetCredentialType-Methode verwenden, zeigt CredSpy auch die für vorhandene Konten unterstützten Authentifizierungsmethoden an.
Nützlich für Sicherheitsbewertungen: Benutzeraufzählung, Ermittlung der bevorzugten Authentifizierungsmethode und Identifizierung von Konten mit Passwort-, Remote NGC- (z. B. Passwordless Push Notification), FIDO2-/Passkey- oder Zertifikatsauthentifizierung.
Inhaltsverzeichnis
Installation
Erfordert Python 3.10+.
pipx (empfohlen):
# 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 ...
Nach der Installation führen Sie credspy von überall aus:
credspy -h
Verwendung
# 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
Optionen
| Flag | Beschreibung |
|---|---|
target | E-Mail-Adresse oder Pfad zu einer Textdatei |
--proxy URL | Leitet den gesamten Datenverkehr über einen Proxy; deaktiviert die SSL-Verifizierung (Format: http://127.0.0.1:8080) |
--no-color | Deaktiviert die farbige Terminalausgabe |
--csv FILE | Schreibt Ergebnisse in CSV |
--save-existing FILE | Speichert E-Mails, die existieren |
--save-ngc FILE | Speichert E-Mails, bei denen RemoteNGC (z. B. Passwordless Push-Notification) unterstützt wird |
--save-password-preferred FILE | Speichert vorhandene E-Mails mit Passwort als bevorzugte Methode |
--skip-ngc | Deaktiviert RemoteNGC-Prüfungen (vermeidet Push-Benachrichtigungen, wenn RemoteNGC die bevorzugte Methode ist; dies deaktiviert auch die NGC-Erkennung) |
--delay <float> | Wartet die angegebene Anzahl von Sekunden zwischen jedem Konto. Verwenden Sie dies beim Prüfen einer großen Anzahl von Konten, um Drosselung zu vermeiden |
[!IMPORTANT] In dem seltenen Fall, dass der Benutzer RemoteNGC als primäre Methode festgelegt hat, löst Microsoft während der Aufzählung sofort die RemoteNGC-Push-Benachrichtigung an die Authenticator-App aus. Die einzige Möglichkeit, dies zu vermeiden, besteht darin,
isRemoteNGCSupportedin derGetCredentialType-Anfrage auf false zu setzen. Dies hat zur Folge, dass die Antwort nicht mehr zurückgibt, ob RemoteNGC unterstützt wird. Wenn Sie das Versenden automatischer Benachrichtigungen vermeiden möchten und die RemoteNGC-Erkennung nicht benötigen, verwenden Sie das Flag--skip-ngc.
Wenn eine Ausgabedatei bereits existiert, werden Sie aufgefordert, das Überschreiben zu bestätigen (Y/n).
Ausgabe
Die Ergebnisse werden im Terminal ausgegeben, während jede E-Mail geprüft wird:
[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
Wenn das E-Mail-Konto existiert, zeigt die erste Spalte nach der E-Mail-Adresse die bevorzugte Authentifizierungsmethode für den Benutzer an. Die letzte Spalte listet die anderen unterstützten Authentifizierungsmethoden auf, wie z. B. Password, RemoteNGC, Fido (=PassKeys) und Certificate-Authentifizierung.
All diese Informationen sind sehr nützlich, wenn man sich auf Phishing-Angriffe vorbereitet.
Bei der Fido-Authentifizierung wird die Anzahl der Einträge in der AllowList der von Microsoft zurückgegebenen FidoParams angezeigt. Dies kann als Indikator dafür verwendet werden, wie viele Fido-Authentifizierungsmethoden der Benutzer registriert hat. Es scheint jedoch, dass dies auch gelöschte Fido-Schlüssel einschließt, die nicht mehr mit dem Konto verknüpft sind.
Am Ende wird eine Zusammenfassung ausgegeben:
--- 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-Spalten
Email, Exists, PreferredType, HasPassword, RemoteNGC, HasFido, HasCertAuth, DomainType
- Exists — Enum-Name (
Exists,NotExist, …) - RemoteNGC —
PushNotification/ListSessions, wenn bekannt, andernfallsTrue/False
Funktionsweise
- Abrufen eines Sitzungskontexts (
sCtx) von der Microsoft OAuth-Autorisierungsseite - Senden jedes Benutzernamens per POST an
login.microsoftonline.com/common/GetCredentialType - Parsen der Credential-Flags und Ausgeben / Exportieren der Ergebnisse
Keine Authentifizierung erforderlich. Dies verwendet denselben nicht authentifizierten Ablauf wie die Login-Benutzeroberfläche.
Haftungsausschluss
Dieses Tool ist nur für autorisierte Sicherheitstests und Forschung gedacht. Verwenden Sie es nur gegen Mandanten und Konten, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Die Autoren sind nicht für Missbrauch verantwortlich.