
Scanner zur Identifizierung von Servern mit SSH-Software, die möglicherweise anfällig für die CVEs CVE-2024-6387 und CVE-2023-48795 sind.
Scanner zur Identifizierung von Servern mit SSH-Software, die möglicherweise anfällig für die CVEs CVE-2024-6387 und CVE-2023-48795 ist.
| CVE | Name | Bedingung | Schweregrad |
|---|---|---|---|
| CVE-2024-6387 | regreSSHion | OpenSSH < 9.8p1 | CRITICAL |
| CVE-2023-48795 | Terrapin | OpenSSH < 9.6 | HIGH |
Race Condition im SIGALRM-Signalhandler des OpenSSH-Servers ermöglicht nicht authentifiziertes RCE als Root auf Linux-Systemen mit glibc. Betrifft alle OpenSSH-Versionen vor 9.8p1.
Prefix-Truncation-Angriff auf den SSH-Handshake (binäres Protokoll), der es einem MITM-Gegner erlaubt, ausgehandelte Sicherheitserweiterungsnachrichten zu Beginn der Sitzung zu entfernen. Betrifft OpenSSH < 9.6.
Das Skript verbindet sich direkt mit dem SSH-Port der Ziele und liest das Identifikationsbanner (z. B. SSH-2.0-OpenSSH_9.7), ohne Anmeldeinformationen zu senden. Anhand der Version vergleicht es mit den behobenen Versionen jeder CVE und klassifiziert den Host.
Ziel → TCP-Verbindung Port 22 → Lesen des SSH-Banners → Identifikation der Software
→ Parsen der OpenSSH-Version → Vergleich mit behobenen Versionen → Klassifizierung + Log + CSV
Das Skript identifiziert außerdem den Hersteller/die SSH-Software anhand des Banners und erkennt:
pip install requests packaging urllib3 dnspython
dnspythonist optional, aber sehr empfehlenswert – die parallele Reverse-Auflösung ist damit deutlich schneller. Ohnednspythonverwendet das Skriptsocketals Fallback.
# 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
Die DNS-Auflösung wird vor dem SSH-Scan als Batch mit einer dedizierten Thread-Warteschlange durchgeführt, sodass die DNS-Latenz die Scangeschwindigkeit nicht beeinträchtigt.
Alle Ergebnisse werden in ./logs/ gespeichert:
formato_estruturado.csv)Vorhandene Spalten:
Beispielzeilen:
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
Am Ende des Scans zeigt das Skript automatisch eine Vorschau der ersten 20 Zeilen der strukturierten CSV im Terminal an, sofern verwundbare Hosts vorhanden sind.
Aktualisieren Sie OpenSSH auf Version 9.8p1 oder höher (deckt beide CVEs ab):
# Ubuntu / Debian — über System-Repository
sudo apt update && sudo apt install --only-upgrade openssh-server
ssh -V
# CentOS / RHEL / Rocky
sudo dnf update openssh-server
ssh -V
# Kompilierung aus dem Quellcode (neueste Version)
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
Starten Sie nach der Aktualisierung den Dienst neu:
sudo systemctl restart sshd
Dieses Skript ist für die Verwendung in Ihrer eigenen Infrastruktur oder mit ausdrücklicher Genehmigung bestimmt. Nicht autorisiertes Scannen kann gegen verschiedene Gesetze verstoßen. Gehen Sie daher mit Vorsicht vor.
Sämtliche Handlungen und Konsequenzen, die aus dem Missbrauch dieses Tools resultieren, liegen in Ihrer eigenen Verantwortung.
Wenn Sie Verbesserungsvorschläge haben oder Fehler finden, öffnen Sie ein Issue oder senden Sie einen Pull Request. Jeder Beitrag ist willkommen! 🚀
| Banner | Identifizierter Hersteller |
|---|
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 |
| Andere nicht zugeordnete | Name aus dem Banner extrahiert |
| Parameter | Standard | Beschreibung |
|---|
--ports | 22 | SSH-Port(s) zum Scannen |
--workers | 60 | Gleichzeitige Threads für den SSH-Scan |
--timeout | 3.0 | Timeout der SSH-Verbindung in Sekunden |
--dns-workers | 200 | Gleichzeitige Threads für die Reverse-DNS-Auflösung |
--dns-timeout | 1.5 | Timeout der DNS-Abfragen in Sekunden |
--no-confirm | — | Überspringt die Bestätigung vor dem Start (nützlich für Automatisierungen) |
| Datei | Inhalt |
|---|
ssh_scan_<timestamp>.log | Vollständiges Scan-Log (alle gefundenen SSH-Hosts) |
ssh_scan_<timestamp>_vulneraveis.txt | Nur Hosts, die als VULNERABEL eingestuft wurden |
ssh_scan_<timestamp>_resultados.csv | Alle SSH-Hosts mit vollständigem Status |
ssh_scan_<timestamp>_formato_estruturado.csv | Strukturierte CSV mit IP, Port, Zeitstempel, Domäne, Hersteller und CVEs |
| Spalte | Beschreibung |
|---|
IP | IP-Adresse des Hosts |
PORTA | SSH-Port, an dem das Banner erfasst wurde |
TIMESTAMP_UTC | ISO-8601-UTC-Zeitstempel des Scans |
DOMINIO | Hostname per Reverse-DNS (PTR) oder SEM-PTR |
FABRICANTE | Aus dem Banner identifizierter Hersteller |
SW_NAME | Aus dem Banner extrahierte SSH-Software |
SW_VERSAO | Version der SSH-Software |
CVEs | Betroffene CVEs, getrennt durch ; (Kleinbuchstaben) |
BANNER | Vollständiges erfasstes SSH-Banner |
| Status | Bedeutung |
|---|
VULNERABEL | Bestätigte OpenSSH-Version unterhalb der korrigierten Version |
SICHER | Bestätigte OpenSSH-Version mit korrigierter oder höherer Version |
VERSION-VERSTECKT | SSH erkannt, aber Version nicht preisgegeben – nicht als sicher bestätigt |
NICHT-OPENSSH | SSH-Server gefunden, aber kein OpenSSH (Dropbear, Cisco usw.) |
KEIN-SSH | Port hat geantwortet, aber das Banner entspricht nicht dem SSH-Protokoll |