
Entra ID-Benutzerenumeration und Authentifizierungsmethoden-Entdeckung über die öffentliche GetCredentialType-API
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.
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
# 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
| 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).
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
Email, Exists, PreferredType, HasPassword, RemoteNGC, HasFido, HasCertAuth, DomainType
Exists, NotExist, …)PushNotification / ListSessions, wenn bekannt, andernfalls True/FalsesCtx) von der Microsoft OAuth-Autorisierungsseitelogin.microsoftonline.com/common/GetCredentialTypeKeine Authentifizierung erforderlich. Dies verwendet denselben nicht authentifizierten Ablauf wie die Login-Benutzeroberfläche.
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.