
माइक्रोसॉफ्ट नेटवर्क सेवा फिंगरप्रिंटिंग टूल
संस्करण: 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 या -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# सभी कमज़ोर होस्ट देखें (कोई 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 संस्करण मैपिंग:
हस्ताक्षर आवश्यकताओं को निर्धारित करने के लिए अनाम बाइंड का परीक्षण करता है:
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 - पीयर द्वारा कनेक्शन रीसेट किया गयाSMB हस्ताक्षर अक्षम:
LDAP हस्ताक्षर आवश्यक नहीं:
LdapEnforceChannelBinding=2 और LDAPServerIntegrity=2 सेट करेंचैनल बाइंडिंग के बिना LDAPS:
SMB हस्ताक्षर सक्षम (आवश्यक नहीं):
SMB1 समर्थित:
SMB हस्ताक्षर आवश्यक:
LDAP/LDAPS हस्ताक्षर आवश्यक:
चैनल बाइंडिंग लागू:
प्रत्येक कार्यकर्ता न्यूनतम मेमोरी (~1-2MB) का उपभोग करता है। सिस्टम संसाधनों के आधार पर कार्यकर्ताओं को समायोजित करें:
# उच्च-प्रदर्शन स्कैन (अच्छे CPU/RAM की आवश्यकता)
python3 MSFinger.py -i 10.0.0.0/8 -t 0.5 -w 500
# रूढ़िवादी स्कैन (कम संसाधन उपयोग)
python3 MSFinger.py -i 192.168.0.0/16 -t 2.0 -w 50
नेटवर्क कनेक्टिविटी जांचें:
ping <लक्ष्य_ip>
telnet <लक्ष्य_ip> 445
टाइमआउट बढ़ाएँ:
python3 MSFinger.py -i <लक्ष्य> -t 3.0
फ़ायरवॉल नियम जांचें:
"SSL handshake failed" या "Connection error: 104":
openssl s_client -connect <ip>:636 का उपयोग करने का प्रयास करेंयदि एकाधिक प्रक्रियाओं से स्कैन किया जा रहा है:
# विभिन्न डेटाबेस फ़ाइलों का उपयोग करें
python3 MSFinger.py -i 192.168.1.0/24 -d scan1.db &
python3 MSFinger.py -i 192.168.2.0/24 -d scan2.db &
सुनिश्चित करें कि स्क्रिप्ट निष्पादन योग्य है:
chmod +x MSFinger.py
पहले लाइव SMB होस्ट की पहचान करें, फिर फिंगरप्रिंट करें:
nmap -p445 --open -oG - 192.168.1.0/24 | awk '/445\/open/{print $2}' > smb_hosts.txt
python3 MSFinger.py -f smb_hosts.txt
cron के साथ नेटवर्क परिवर्तनों की निगरानी करें:
# crontab में जोड़ें (प्रतिदिन सुबह 2 बजे)
0 2 * * * /usr/bin/python3 /path/to/MSFinger.py -i 192.168.1.0/24 -d /var/scans/daily_scan.db
PowerShell से क्वेरी और सुधार:
# Install SQLite PowerShell module
Install-Module -Name SimplySql
# Query vulnerable hosts
Open-SQLiteConnection -DataSource "MSFinger.db"
$vulnerable = Invoke-SqlQuery -Query "SELECT ip FROM hosts WHERE smb_signing != 'required'"
Close-SqlConnection
# Remediate
foreach ($host in $vulnerable) {
Set-SmbServerConfiguration -ComputerName $host.ip -RequireSecuritySignature $true -Force
}
लेखक: Laurent Gaffie ([email protected])
लाइसेंस: GNU जनरल पब्लिक लाइसेंस v3.0
यह प्रोग्राम मुफ़्त सॉफ़्टवेयर है: आप इसे फ्री सॉफ़्टवेयर फाउंडेशन द्वारा प्रकाशित GNU जनरल पब्लिक लाइसेंस के संस्करण 3 या (आपके विकल्प पर) किसी भी बाद के संस्करण की शर्तों के तहत पुनर्वितरित और/या संशोधित कर सकते हैं।
यह प्रोग्राम इस उम्मीद में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; यहां तक कि व्यापारिकता या किसी विशेष उद्देश्य के लिए उपयुक्तता की निहित वारंटी के बिना। अधिक विवरण के लिए GNU जनरल पब्लिक लाइसेंस देखें।
| विकल्प | विवरण | डिफ़ॉल्ट |
|---|
-i, --ip | लक्ष्य IP, CIDR रेंज, या IP रेंज | आवश्यक* |
-f, --file | लक्ष्यों वाली फ़ाइल (प्रति पंक्ति एक) | आवश्यक* |
-t, --timeout | सेकंड में कनेक्शन टाइमआउट | 1.0 |
-w, --workers | समवर्ती कार्यकर्ताओं की संख्या | 100 |
-d, --database | परिणामों के लिए SQLite डेटाबेस फ़ाइल | MSFinger.db |
--no-color | रंगीन आउटपुट अक्षम करें | अक्षम |
| कॉलम | प्रकार | विवरण |
|---|
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 | सबसे हाल का स्कैन टाइमस्टैम्प |
| बिल्ड रेंज | ऑपरेटिंग सिस्टम |
|---|
| 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 |
| नेटवर्क प्रकार | अनुशंसित टाइमआउट | कार्यकर्ता |
|---|
| तेज़ आंतरिक LAN (1Gbps+) | 0.5s | 200-300 |
| सामान्य आंतरिक नेटवर्क | 1.0s (डिफ़ॉल्ट) | 100-150 |
| धीमा/वायरलेस नेटवर्क | 2.0-3.0s | 50-100 |
| VPN कनेक्शन | 3.0-5.0s | 30-50 |