अपडेट पर वापस जाएँ
New releaseJul 28, 2026

CredSpy v1.1.0

सार्वजनिक GetCredentialType API के माध्यम से Entra ID उपयोगकर्ता गणना और प्रमाणीकरण विधि खोज

साझा करें

PyPi Version Python Version GitHub Sponsors Twitter LinkedIn

CredSpy

सार्वजनिक GetCredentialType API का उपयोग करके ईमेल पतों के लिए Microsoft Entra ID प्रमाणीकरण विधियों की गणना (enumerate) करें। यह वही एंडपॉइंट है जिसका उपयोग Microsoft लॉगिन पृष्ठ उपयोगकर्ता नाम दर्ज करने पर करता है। GetCredentialType विधि का उपयोग करने वाले अधिकांश टूल के विपरीत, CredSpy मौजूदा खातों के लिए समर्थित प्रमाणीकरण विधियों को भी दिखाता है।

सुरक्षा मूल्यांकन के लिए उपयोगी: उपयोगकर्ता गणना (user enumeration), पसंदीदा प्रमाणीकरण विधि की खोज, और पासवर्ड, 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

विकल्प

Flagविवरण
targetईमेल पता या टेक्स्ट फ़ाइल का पथ
--proxy URLसभी ट्रैफ़िक को प्रॉक्सी के माध्यम से भेजें; SSL सत्यापन अक्षम करता है (प्रारूप: http://127.0.0.1:8080)
--no-colorरंगीन टर्मिनल आउटपुट अक्षम करें
--csv FILEपरिणाम CSV में लिखें
--save-existing FILEजो ईमेल मौजूद हैं उन्हें सहेजें
--save-ngc FILEजिन ईमेल पर RemoteNGC (जैसे पासवर्डलेस पुश-नोटिफिकेशन) समर्थित है उन्हें सहेजें
--save-password-preferred FILEजिन मौजूदा ईमेल का पसंदीदा तरीका पासवर्ड है उन्हें सहेजें
--skip-ngcRemoteNGC जाँच अक्षम करें (जब RemoteNGC पसंदीदा तरीका हो तो पुश नोटिफिकेशन से बचाता है; यह NGC खोज को भी अक्षम करता है)

[!IMPORTANT] दुर्लभ मामले में जब उपयोगकर्ता ने अपनी प्राथमिक विधि के रूप में RemoteNGC सेट की हो, तो enumeration के दौरान 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 प्रमाणीकरण विधियाँ पंजीकृत (enroll) की हैं। हालाँकि, ऐसा लगता है कि इसमें हटाई गई 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 — एनम नाम (Exists, NotExist, …)
  • RemoteNGC — ज्ञात होने पर PushNotification / ListSessions, अन्यथा True/False

यह कैसे काम करता है

  1. Microsoft OAuth authorize पृष्ठ से एक सत्र संदर्भ (sCtx) प्राप्त करें
  2. प्रत्येक उपयोगकर्ता नाम को login.microsoftonline.com/common/GetCredentialType पर POST करें
  3. क्रेडेंशियल फ़्लैग पार्स करें और परिणाम प्रिंट / निर्यात करें

कोई प्रमाणीकरण आवश्यक नहीं है। यह लॉगिन UI के समान अनप्रमाणित (unauthenticated) फ़्लो का उपयोग करता है।

अस्वीकरण

यह टूल केवल अधिकृत सुरक्षा परीक्षण और अनुसंधान के लिए है। इसका उपयोग केवल उन टेनेंट और खातों के विरुद्ध करें जिनके स्वामी आप हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति आपके पास है। लेखक दुरुपयोग के लिए जिम्मेदार नहीं हैं।

श्रेणियाँ