
माइक्रोसॉफ्ट नेटवर्क सेवा फिंगरप्रिंटिंग टूल
संस्करण: 1.0
लेखक: Laurent Gaffie
कंपनी: Secorizon
MSFinger एक उच्च-प्रदर्शन नेटवर्क फिंगरप्रिंटिंग टूल है जिसे आंतरिक नेटवर्क रीकॉनिसेंस के लिए डिज़ाइन किया गया है। यह तेज़ी से Microsoft सेवाओं की पहचान करता है, सुरक्षा कॉन्फ़िगरेशन का पता लगाता है, और SMB, LDAP, और LDAPS प्रोटोकॉल में संभावित कमज़ोरियों को उजागर करता है।
मुख्य विशेषताएँ:
MSFinger शुद्ध पायथन में लिखा गया है। Python 3.6+ के अलावा कोई अतिरिक्त निर्भरता आवश्यक नहीं है।
cd /path/to/MSFinger
chmod +x MSFinger.py
python3 MSFinger.py -i <लक्ष्य> [विकल्प]
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|---|---|
-i, --ip | लक्ष्य IP, CIDR रेंज, या IP रेंज | आवश्यक* |
-f, --file | लक्ष्यों वाली फ़ाइल (प्रति पंक्ति एक) | आवश्यक* |
-t, --timeout | सेकंड में कनेक्शन टाइमआउट | 1.0 |
-w, --workers | समवर्ती कार्यकर्ताओं की संख्या | 100 |
-d, --database | परिणामों के लिए SQLite डेटाबेस फ़ाइल | MSFinger.db |
--no-color | रंगीन आउटपुट अक्षम करें | अक्षम |
* या तो -i या -f निर्दिष्ट होना चाहिए
python3 MSFinger.py -i 192.168.1.10
python3 MSFinger.py -i 192.168.1.0/24
python3 MSFinger.py -i 192.168.1.1-50
python3 MSFinger.py -f targets.txt
उदाहरण targets.txt:
192.168.1.0/24
10.0.0.1-100
172.16.5.50
# टिप्पणियाँ समर्थित हैं
192.168.2.0/25
# छोटे टाइमआउट और अधिक कार्यकर्ताओं के साथ तेज़ स्कैन
python3 MSFinger.py -i 10.0.0.0/16 -t 0.3 -w 200
# लंबे टाइमआउट के साथ अधिक विश्वसनीय स्कैन
python3 MSFinger.py -i 192.168.1.0/24 -t 1.0 -w 50
python3 MSFinger.py -i 192.168.1.0/24 -d pentest_2026.db
python3 MSFinger.py -i 192.168.1.0/24 --no-color > scan_results.txt
परिणाम रंग-कोडित सुरक्षा संकेतकों के साथ वास्तविक समय में प्रदर्शित होते हैं:
[192.168.1.10] SMB: 3.1.1, Signing: required, OS: Windows Server 2022 21H2, Domain: CORP.LOCAL, Boot: 2026-01-01 10:30:15 | SMB1: disabled | Services: RDP, LDAP (signing: required), LDAPS (signing: required, channel binding: required)
SMB जानकारी:
SMB: X.X.X - SMB डायलेक्ट संस्करण (2.0.2, 2.1, 3.0, 3.0.2, 3.1.1)Signing: <स्थिति> - आवश्यक/सक्षम/अक्षमOS: <संस्करण> - बिल्ड नंबर के साथ Windows संस्करणDomain: <नाम> - NetBIOS डोमेन/वर्कग्रुप नामBoot: <समय> - सिस्टम बूट समय (या अक्षम/अज्ञात)SMB1 स्थिति:
SMB1: disabled - SMB1 समर्थित नहीं (सुरक्षित)SMB1: supported, Signing: <स्थिति> - SMB1 सक्षम (संभावित जोखिम)सेवाएँ:
RDP - रिमोट डेस्कटॉप प्रोटोकॉल (पोर्ट 3389) खुलाMSSQL - Microsoft SQL सर्वर (पोर्ट 1433) खुलाLDAP (signing: <स्थिति>) - पोर्ट 389 पर LDAPLDAPS (signing: <स्थिति>, channel binding: <स्थिति>) - पोर्ट 636 पर LDAPSLDAPS (port open, <त्रुटि>) - LDAPS पोर्ट प्रतिक्रिया दे रहा है लेकिन SSL हैंडशेक विफलMSFinger सभी स्कैन परिणामों को स्थायी भंडारण और विश्लेषण के लिए SQLite डेटाबेस में संग्रहीत करता है।
hosts| कॉलम | प्रकार | विवरण |
|---|---|---|
id | INTEGER | प्राथमिक कुंजी (स्वत: वृद्धि) |
ip | TEXT | IP पता (अद्वितीय) |
hostname | TEXT | होस्टनाम (भविष्य के उपयोग के लिए आरक्षित) |
os_version | TEXT | ऑपरेटिंग सिस्टम संस्करण |
os_build | INTEGER | OS बिल्ड नंबर |
domain | TEXT | डोमेन/वर्कग्रुप नाम |
boot_time | TEXT | सिस्टम बूट टाइमस्टैम्प |
smb_dialect | TEXT | SMB प्रोटोकॉल संस्करण |
smb_signing | TEXT | SMB हस्ताक्षर स्थिति |
smb1_supported | INTEGER | SMB1 सक्षम (0=नहीं, 1=हाँ) |
smb1_signing | TEXT | SMB1 हस्ताक्षर स्थिति |
rdp_open | INTEGER | RDP पोर्ट खुला (0=नहीं, 1=हाँ) |
mssql_open | INTEGER | MSSQL पोर्ट खुला (0=नहीं, 1=हाँ) |
ldap_signing | TEXT | LDAP हस्ताक्षर स्थिति |
ldaps_signing | TEXT | LDAPS हस्ताक्षर स्थिति |
ldaps_channel_binding | TEXT | LDAPS चैनल बाइंडिंग स्थिति |
ldaps_error | TEXT | LDAPS कनेक्शन त्रुटि (यदि कोई हो) |
scan_time | TIMESTAMP | पहले स्कैन का टाइमस्टैम्प |
last_seen | TIMESTAMP | सबसे हाल का स्कैन टाइमस्टैम्प |
# सभी कमज़ोर होस्ट देखें (कोई SMB हस्ताक्षर नहीं)
sqlite3 MSFinger.db "SELECT ip, os_version, smb_signing FROM hosts WHERE smb_signing != 'required'"
# LDAP हस्ताक्षर अक्षम वाले होस्ट खोजें
sqlite3 MSFinger.db "SELECT ip, domain, ldap_signing FROM hosts WHERE ldap_signing = 'not_required'"
# सभी Windows Server 2022 होस्ट सूचीबद्ध करें
sqlite3 MSFinger.db "SELECT ip, os_version, domain FROM hosts WHERE os_version LIKE '%Server 2022%'"
# CSV में निर्यात करें
sqlite3 -header -csv MSFinger.db "SELECT * FROM hosts" > results.csv
# OS के अनुसार होस्ट की गिनती
sqlite3 MSFinger.db "SELECT os_version, COUNT(*) FROM hosts GROUP BY os_version"
परीक्षण किए गए प्रोटोकॉल:
एकत्रित जानकारी:
required - सर्वर को संदेश हस्ताक्षर की आवश्यकता है (सुरक्षित)enabled - सर्वर समर्थन करता है लेकिन हस्ताक्षर अनिवार्य नहींdisabled - कोई हस्ताक्षर समर्थन नहीं (कमज़ोर)OS संस्करण मैपिंग:
| बिल्ड रेंज | ऑपरेटिंग सिस्टम |
|---|---|
| 10240 | Windows 10 1507 |
| 14393 | Windows 10 1607 / Server 2016 |
| 17763 | Windows 10 1809 / Server 2019 |
| 19041-19045 | Windows 10 20H2 - 22H2 |
| 20348 | Windows Server 2022 21H2 |
| 22000+ | Windows 11 |
| 25398 | Windows Server 2025 |
हस्ताक्षर आवश्यकताओं को निर्धारित करने के लिए अनाम बाइंड का परीक्षण करता है:
LDAP बाइंड के साथ SSL/TLS कनेक्शन का परीक्षण करता है:
संभावित परिणाम:
signing: required, channel binding: required - अधिकतम सुरक्षा (सुरक्षित)signing: not_required, channel binding: not_required - कोई सुरक्षा नहीं (कमज़ोर)port open, SSL handshake failed - पोर्ट प्रतिक्रिया दे रहा है लेकिन SSL वार्ता विफलport open, Connection error: 104 - पीयर द्वारा कनेक्शन रीसेट किया गया