
ماسح ضوئي لتحديد الخوادم التي تحتوي على برامج SSH وربما تكون عرضة للثغرات CVE-2024-6387 وCVE-2023-48795.
ماسح لتحديد الخوادم التي تحتوي على برامج SSH قد تكون عرضة للثغرات CVE-2024-6387 وCVE-2023-48795.
| CVE | الاسم | الشرط | الخطورة |
|---|---|---|---|
| CVE-2024-6387 | regreSSHion | OpenSSH < 9.8p1 | حرجة |
| CVE-2023-48795 | Terrapin | OpenSSH < 9.6 | عالية |
حالة سباق في معالج الإشارة SIGALRM لخادم OpenSSH تسمح بـ RCE غير مصادَق بصلاحيات الجذر على أنظمة Linux مع glibc. تؤثر على جميع إصدارات OpenSSH السابقة للإصدار 9.8p1.
هجوم اقتطاع البادئة في مصافحة SSH (البروتوكول الثنائي) يسمح لخصم يقوم بهجوم الوسيط (MITM) بإزالة رسائل امتداد الأمان التي تم التفاوض عليها في بداية الجلسة. يؤثر على OpenSSH < 9.6.
يتصل السكريبت مباشرة بمنفذ SSH الخاص بالأهداف ويقرأ شعار التعريف (مثال: SSH-2.0-OpenSSH_9.7)، دون إرسال أي بيانات اعتماد. وبعد الحصول على الإصدار، يقارنه بالإصدارات المُصححة لكل ثغرة ويصنّف المضيف.
Alvo → Conexão TCP porta 22 → Leitura do banner SSH → Identificação do software
→ Parse da versão OpenSSH → Comparação com versões fixadas → Classificação + Log + CSV
كما يقوم السكريبت بتحديد المصنّع/برنامج SSH من خلال الشعار، مع التعرّف على:
pip install requests packaging urllib3 dnspython
مكتبة
dnspythonاختيارية، لكنها موصى بها بشدة — فحلّ DNS العكسي المتوازي يكون أسرع بشكل ملحوظ باستخدامها. وبدونdnspython، يستخدم السكريبتsocketكخطة بديلة.
# IP individual
python ssh_scanner.py --ip 192.168.1.10
# Faixa CIDR
python ssh_scanner.py --cidr 10.0.0.0/24
# Múltiplos CIDRs
python ssh_scanner.py --cidr 10.0.0.0/24 192.168.1.0/24
# ASN (prefixos resolvidos via RIPE Stat, fallback para bgp.tools)
python ssh_scanner.py --asn AS12345
# Combinação de entradas
python ssh_scanner.py --asn AS12345 --cidr 10.0.0.0/8 --ip 1.2.3.4
# A partir de um arquivo (um IP, CIDR ou ASN por linha)
python ssh_scanner.py --file alvos.txt
# Portas adicionais (além da 22)
python ssh_scanner.py --cidr 10.0.0.0/24 --ports 22 2222 22222
يتم تنفيذ حل DNS على دفعات قبل فحص SSH، مع قائمة انتظار مخصصة من الخيوط، مما يمنع زمن استجابة DNS من التأثير على سرعة الفحص.
تُكتب جميع النتائج في ./logs/:
| الملف | المحتوى |
|---|
formato_estruturado.csv)الأعمدة الموجودة:
مثال على الأسطر:
IP | PORTA | TIMESTAMP_UTC | DOMINIO | FABRICANTE | SW_NAME | SW_VERSAO | CVEs | BANNER
192.168.1.10 | 22 | 2026-05-20T00:39:33Z | host.exemplo.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.exemplo.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.exemplo.com | Mikrotik | ROSSSH | N/D | | SSH-2.0-ROSSSH
في نهاية الفحص، إذا وُجدت مضيفون عرضة للخطر، يعرض السكريبت تلقائيًا معاينة لأول 20 سطرًا من CSV المنظم في الطرفية.
قم بتحديث OpenSSH إلى الإصدار 9.8p1 أو أحدث (يغطي كلتا الثغرتين):
# Ubuntu / Debian — via repositório do sistema
sudo apt update && sudo apt install --only-upgrade openssh-server
ssh -V
# CentOS / RHEL / Rocky
sudo dnf update openssh-server
ssh -V
# Compilação a partir do fonte (versão mais recente)
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
هذا السكريبت مخصص للاستخدام في البنية التحتية الخاصة بك أو بتفويض صريح. الفحص غير المصرح به قد ينتهك تشريعات متعددة، لذا استخدمه بحذر.
أي إجراءات وعواقب ناتجة عن سوء استخدام هذه الأداة تقع على مسؤوليتك الشخصية.
إذا كانت لديك اقتراحات للتحسين أو وجدت أخطاء برمجية، افتح issue أو أرسل Pull Request. كل المساهمات مرحب بها! 🚀
| Banner | المصنّع المحدد |
|---|
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 |
| أخرى غير مخطّطة | الاسم المستخرج من الشعار |
| المعلمة | الافتراضي | الوصف |
|---|
--ports | 22 | منفذ/منافذ SSH المراد فحصها |
--workers | 60 | خيوط معالجة متزامنة لفحص SSH |
--timeout | 3.0 | مهلة اتصال SSH بالثواني |
--dns-workers | 200 | خيوط معالجة متزامنة لحل DNS العكسي |
--dns-timeout | 1.5 | مهلة استعلامات DNS بالثواني |
--no-confirm | — | يتخطى التأكيد قبل البدء (مفيد في الأتمتة) |
ssh_scan_<timestamp>.log | سجل كامل للفحص (جميع مضيفي SSH الذين تم العثور عليهم) |
ssh_scan_<timestamp>_vulneraveis.txt | فقط المضيفون المصنفون كـ VULNERÁVEL |
ssh_scan_<timestamp>_resultados.csv | جميع مضيفي SSH مع الحالة الكاملة |
ssh_scan_<timestamp>_formato_estruturado.csv | CSV منظم يتضمن IP والمنفذ والطابع الزمني والنطاق والمصنّع والثغرات CVE |
| العمود | الوصف |
|---|
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 الكامل الملتقط |
| الحالة | المعنى |
|---|
VULNERÁVEL | إصدار OpenSSH مؤكد أقل من الإصدار المُصحح |
SEGURO | إصدار OpenSSH مؤكد في الإصدار المُصحح أو أحدث |
VERSÃO-OCULTA | تم اكتشاف SSH ولكن الإصدار غير مكشوف — غير مؤكد كآمن |
SSH-NÃO-OPENSSH | تم العثور على خادم SSH ولكنه ليس OpenSSH (مثل Dropbear أو Cisco أو غيرها) |
NÃO-SSH | المنفذ استجاب لكن الشعار لا يطابق بروتوكول SSH |