
Schlanker Python-Scanner für CVE-2023-48795 (SSH Terrapin prefix truncation). Führt passiven Banner-Grab und KEXINIT-Parse durch, um anfällige Chiffre/MAC-Kombinationen und fehlende Strict-KEX-Mitigation zu erkennen.
Ein leichter Python-Scanner für CVE-2023-48795 — die SSH Terrapin-Prefix-Trunkierungsschwachstelle.
Terrapin ist eine Protokollebene-Schwachstelle in SSH, die es einem Angreifer ermöglicht, der einen aktiven MitM durchführt, die ausgehandelten Erweiterungsinformationen zu kürzen und die Verbindungssicherheit herabzustufen – am kritischsten wird dabei
ext-info(für Server-Signaturalgorithmen) undping(verwendet von OpenSSHsno-auth-Erweiterung) deaktiviert.
Die Schwachstelle besteht, weil bestimmte SSH-Verschlüsselungs-/MAC-Kombinationen – insbesondere chacha20-poly1305 und CBC-Modus-Verfahren mit Encrypt-then-MAC – es einem aktiven MitM-Angreifer ermöglichen, während des Handshakes SSH-Sequenznummern zu injizieren und zu entfernen, wodurch die ausgehandelten Erweiterungsdaten ohne Erkennung gekürzt werden.
Der Fix führte eine strikte KEX-Erweiterung (kex-strict-*[email protected]) ein, die sowohl vom Client als auch vom Server beworben werden muss, um immun zu sein.
Das Skript führt nur einen passiven Banner-Grab und eine KEXINIT-Analyse durch — keinen vollständigen SSH-Handshake, keine Authentifizierung, keine Ausnutzung:
SSH_MSG_KEXINIT-Paket des ServersDa die Überprüfung vollständig innerhalb der Schlüsselaustauschphase stattfindet, ist sie nicht intrusiv und hinterlässt keine nennenswerten Spuren über einen normalen TCP-Verbindungsversuch hinaus.
socket, struct, argparse, concurrent.futures)git clone https://github.com/Mr-Whiskerss/terrapin_check
cd terrapin_check
chmod +x terrapin_check.py
python3 terrapin_check.py <host> [port]
python3 terrapin_check.py 192.168.1.10
python3 terrapin_check.py 192.168.1.10 2222
Ein Ziel pro Zeile – akzeptiert Format host oder host:port.
python3 terrapin_check.py -f targets.txt
python3 terrapin_check.py -f targets.txt --threads 20 --timeout 3
python3 terrapin_check.py -f targets.txt --summary
usage: terrapin_check.py [-h] [-f FILE] [-p PORT] [--threads THREADS] [--timeout TIMEOUT] [--summary] [host] [port]
positional arguments:
host Ziel-Host
port SSH-Port (Standard: 22)
options:
-h, --help Zeigt diese Hilfemeldung an und beendet das Programm
-f, --file FILE Datei mit Hosts (host oder host:port pro Zeile)
-p, --port-flag PORT Standardport bei Verwendung von -f (Standard: 22)
--threads THREADS Gleichzeitige Threads für Massenscan (Standard: 10)
--timeout TIMEOUT Socket-Timeout in Sekunden (Standard: 5.0)
--summary Nur einzeilige Zusammenfassung pro Host ausgeben
| Code | Bedeutung |
|---|---|
0 | Keine verwundbaren Hosts gefunden |
1 | Ein oder mehrere verwundbare Hosts erkannt |
Dies ermöglicht eine saubere Verwendung des Skripts in Pipelines und automatisierten Workflows.
────────────────────────────────────────────────────────────
Ziel : 192.168.1.10:22
Banner : SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
Status : VERWUNDBAR
Strict-KEX : Nein
✗ ChaCha20-Poly1305 beworben → Prefix-Trunkierung möglich
✗ CBC+ETM-Kombination beworben
CBC-Verschlüsselungen : aes128-cbc, aes256-cbc
ETM-MACs : [email protected], [email protected]
KEX-Algorithmen:
curve25519-sha256
ecdh-sha2-nistp256
diffie-hellman-group14-sha256
────────────────────────────────────────────────────────────
[VULN] 192.168.1.10:22 VERWUNDBAR (CVE-2023-48795)
[SAFE] 192.168.1.20:22 Nicht verwundbar
[MIT] 192.168.1.30:22 Algorithmen vorhanden, aber Strict-KEX mildert
[?] 192.168.1.99:22 FEHLER: Verbindung abgelehnt
Das Skript markiert einen Host als VERWUNDBAR, wenn eine der folgenden Bedingungen zutrifft und die Strict-KEX-Erweiterung nicht beworben wird:
Der Server bewirbt [email protected] in einer der beiden Verschlüsselungsrichtungen.
Der Server bewirbt eine beliebige CBC-Modus-Verschlüsselung und einen beliebigen ETM-MAC zusammen:
Überprüfte CBC-Verschlüsselungen:
aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, idea-cbc, arcfour, arcfour128, arcfour256, [email protected]
Überprüfte ETM-MACs:
[email protected], [email protected], [email protected], [email protected], und Varianten
Wenn der Server [email protected] in seiner KEX-Algorithmusliste bewirbt, ist die Verbindung unabhängig von den angebotenen Verschlüsselungen und MACs geschützt. Das Skript meldet in diesem Fall MITIGIERT anstelle von VERWUNDBAR.
# /etc/ssh/sshd_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
MACs hmac-sha2-256,hmac-sha2-512
Das Entfernen von Algorithmen verringert die Chiffrier-Agilität. Eine Aktualisierung ist stets die bevorzugte Abhilfe.
Dieses Tool ist nur für autorisierte Sicherheitsbewertungen bestimmt. Verwenden Sie es nur gegen Systeme, die Sie besitzen oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Der Autor übernimmt keine Haftung für Missbrauch.
Teil des Mr-Whiskerss Pentesting-Toolkits.
| Feld | Detail |
|---|
| CVE | CVE-2023-48795 |
| CVSS | 5.9 (Mittel) |
| Typ | SSH-Protokoll — Prefix-Trunkierung / Integritätsumgehung |
| Offenlegung | Dezember 2023 |
| Betroffen | OpenSSH < 9.6, PuTTY < 0.80, libssh < 0.10.6 und viele andere |
| Referenzen | terrapin-attack.com |
| Aktion | Detail |
|---|
| OpenSSH aktualisieren | Auf ≥ 9.6 auf Client und Server aktualisieren. Strict KEX ist standardmäßig aktiviert. |
| Andere Implementierungen patchen | PuTTY ≥ 0.80, libssh ≥ 0.10.6, Paramiko ≥ 3.4.0, AsyncSSH ≥ 2.14.2 |
| Verwundbare Algorithmen entfernen | Wenn eine Aktualisierung nicht sofort möglich ist, entfernen Sie chacha20-poly1305 und CBC-Verschlüsselungen + ETM-MACs aus sshd_config: |