
SSH सॉफ्टवेयर वाले सर्वरों की पहचान के लिए स्कैनर जो संभवतः CVE-2024-6387 और CVE-2023-48795 के प्रति संवेदनशील हैं।
संभावित रूप से CVE CVE-2024-6387 और CVE-2023-48795 के लिए कमजोर SSH सॉफ़्टवेयर वाले सर्वरों की पहचान करने के लिए स्कैनर।
| CVE | नाम | शर्त | गंभीरता |
|---|---|---|---|
| CVE-2024-6387 | regreSSHion | OpenSSH < 9.8p1 | गंभीर |
| CVE-2023-48795 | Terrapin | OpenSSH < 9.6 | उच्च |
OpenSSH सर्वर के SIGALRM सिग्नल हैंडलर में रेस कंडीशन, glibc वाले Linux सिस्टम पर अप्रमाणित RCE को root के रूप में सक्षम बनाती है। यह OpenSSH के 9.8p1 से पहले के सभी संस्करणों को प्रभावित करता है।
SSH हैंडशेक (बाइनरी प्रोटोकॉल) में प्रीफ़िक्स ट्रंकेशन अटैक, जो MITM विरोधी को सत्र की शुरुआत में बातचीत की गई सुरक्षा एक्सटेंशन संदेशों को हटाने की अनुमति देता है। OpenSSH < 9.6 को प्रभावित करता है।
स्क्रिप्ट लक्ष्यों के SSH पोर्ट से सीधे कनेक्ट होती है और बिना कोई क्रेडेंशियल भेजे पहचान बैनर (जैसे: SSH-2.0-OpenSSH_9.7) पढ़ती है। संस्करण हाथ में लेने के बाद, इसकी तुलना प्रत्येक CVE के निर्धारित संस्करणों से करती है और होस्ट को वर्गीकृत करती है।
लक्ष्य → पोर्ट 22 पर TCP कनेक्शन → SSH बैनर पढ़ना → सॉफ़्टवेयर पहचान
→ OpenSSH संस्करण पार्स → निर्धारित संस्करणों से तुलना → वर्गीकरण + लॉग + CSV
स्क्रिप्ट बैनर से SSH सॉफ़्टवेयर निर्माता/सॉफ़्टवेयर की भी पहचान करती है, निम्नलिखित को पहचानते हुए:
| बैनर | पहचाना गया निर्माता |
|---|---|
SSH-2.0-OpenSSH_9.7 | OpenSSH |
SSH-2.0-ROSSSH | Mikrotik |
SSH-2.0-Cisco-1.25 | Cisco |
SSH-2.0-dropbear_2022.83 | Dropbear |
SSH-2.0-libssh-0.9.6 | libssh |
SSH-2.0-AsyncSSH_2.13.2 | AsyncSSH |
SSH-2.0-paramiko_2.9.5 | Paramiko |
SSH-2.0-Bitvise-... | Bitvise |
SSH-2.0-WolfSSH_1.4.14 | wolfSSH |
| अन्य अनमैप्ड | बैनर से निकाला गया नाम |
pip install requests packaging urllib3 dnspython
dnspythonवैकल्पिक है, लेकिन अत्यधिक अनुशंसित है — इसके साथ समानांतर रिवर्स रिज़ॉल्यूशन काफी तेज़ है।dnspythonके बिना, स्क्रिप्ट फ़ॉलबैक के रूप मेंsocketका उपयोग करती है।
# एकल IP
python ssh_scanner.py --ip 192.168.1.10
# CIDR रेंज
python ssh_scanner.py --cidr 10.0.0.0/24
# एकाधिक CIDR
python ssh_scanner.py --cidr 10.0.0.0/24 192.168.1.0/24
# ASN (RIPE Stat के माध्यम से हल किए गए प्रीफ़िक्स, bgp.tools पर फ़ॉलबैक)
python ssh_scanner.py --asn AS12345
# इनपुट का संयोजन
python ssh_scanner.py --asn AS12345 --cidr 10.0.0.0/8 --ip 1.2.3.4
# फ़ाइल से (प्रति पंक्ति एक IP, CIDR या ASN)
python ssh_scanner.py --file targets.txt
# अतिरिक्त पोर्ट (22 के अलावा)
python ssh_scanner.py --cidr 10.0.0.0/24 --ports 22 2222 22222
| पैरामीटर | डिफ़ॉल्ट | विवरण |
|---|---|---|
--ports | 22 | स्कैन करने के लिए SSH पोर्ट |
--workers | 60 | SSH स्कैन के लिए एक साथ थ्रेड |
--timeout | 3.0 | SSH कनेक्शन टाइमआउट सेकंड में |
--dns-workers | 200 | रिवर्स DNS रिज़ॉल्यूशन के लिए एक साथ थ्रेड |
--dns-timeout | 1.5 | DNS क्वेरी टाइमआउट सेकंड में |
--no-confirm | — | शुरू करने से पहले पुष्टि को छोड़ें (ऑटोमेशन में उपयोगी) |
DNS रिज़ॉल्यूशन SSH स्कैन से पहले एक बैच में, समर्पित थ्रेड कतार के साथ निष्पादित किया जाता है, जिससे DNS विलंबता स्कैनिंग गति को प्रभावित नहीं करती।
सभी परिणाम ./logs/ में सहेजे जाते हैं:
| फ़ाइल | सामग्री |
|---|---|
ssh_scan_<timestamp>.log | स्कैन का पूरा लॉग (सभी पाए गए SSH होस्ट) |
ssh_scan_<timestamp>_vulnerable.txt | केवल VULNERABLE के रूप में वर्गीकृत होस्ट |
ssh_scan_<timestamp>_results.csv | पूर्ण स्थिति वाले सभी SSH होस्ट |
ssh_scan_<timestamp>_structured_format.csv | IP, पोर्ट, टाइमस्टैम्प, डोमेन, निर्माता और CVE वाला संरचित CSV |
structured_format.csv)मौजूद कॉलम:
| कॉलम | विवरण |
|---|---|
IP | होस्ट का IP पता |
PORTA | SSH पोर्ट जहां बैनर कैप्चर किया गया |
TIMESTAMP_UTC | स्कैन के समय का ISO 8601 UTC टाइमस्टैम्प |
DOMINIO | रिवर्स DNS (PTR) के माध्यम से होस्टनाम या SEM-PTR |
FABRICANTE | बैनर से पहचाना गया निर्माता |
SW_NAME | बैनर से निकाला गया SSH सॉफ़्टवेयर नाम |
SW_VERSAO | SSH सॉफ़्टवेयर का संस्करण |
CVEs | प्रभावित CVE, ; द्वारा अलग (लोअरकेस) |
BANNER | कैप्चर किया गया पूरा SSH बैनर |
पंक्तियों का उदाहरण:
IP | PORTA | TIMESTAMP_UTC | DOMINIO | FABRICANTE | SW_NAME | SW_VERSAO | CVEs | BANNER
192.168.1.10 | 22 | 2026-05-20T00:39:33Z | host.example.com | OpenSSH | OpenSSH | 9.7 | cve-2024-6387;cve-2023-48795 | SSH-2.0-OpenSSH_9.7
192.168.1.20 | 22 | 2026-05-20T12:46:03Z | host2.example.com | OpenSSH | OpenSSH | 9.4 | cve-2023-48795;cve-2024-6387 | SSH-2.0-OpenSSH_9.4
192.168.1.30 | 22 | 2026-05-20T12:47:11Z | router.example.com | Mikrotik | ROSSSH | N/A | | SSH-2.0-ROSSSH
स्कैन के अंत में, यदि कमजोर होस्ट हैं, तो स्क्रिप्ट स्वचालित रूप से टर्मिनल में संरचित CSV की पहली 20 पंक्तियों का पूर्वावलोकन प्रदर्शित करती है।
| स्थिति | अर्थ |
|---|---|
VULNERABLE | OpenSSH संस्करण की पुष्टि हुई है कि यह पैच किए गए संस्करण से नीचे है |
SAFE | OpenSSH संस्करण की पुष्टि हुई है कि यह पैच किए गए या उससे ऊपर है |
VERSION-HIDDEN | SSH का पता चला लेकिन संस्करण उजागर नहीं हुआ — सुरक्षित नहीं माना जा सकता |
NOT-OPENSSH | SSH सर्वर मिला लेकिन OpenSSH नहीं है (Dropbear, Cisco, आदि) |
NOT-SSH | पोर्ट ने उत्तर दिया लेकिन बैनर SSH प्रोटोकॉल से मेल नहीं खाता |
OpenSSH को 9.8p1 या उच्चतर संस्करण में अपडेट करें (दोनों CVE को कवर करता है):
# Ubuntu / Debian — सिस्टम रिपॉजिटरी के माध्यम से
sudo apt update && sudo apt install --only-upgrade openssh-server
ssh -V
# CentOS / RHEL / Rocky
sudo dnf update openssh-server
ssh -V
# स्रोत से संकलन (नवीनतम संस्करण)
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz
tar xzf openssh-9.9p1.tar.gz
cd openssh-9.9p1 && ./configure && make && sudo make install
अपडेट करने के बाद, सेवा को पुनरारंभ करें:
sudo systemctl restart sshd