CVE-2024-6387_Check is a lightweight, efficient tool designed to identify servers running vulnerable versions of OpenSSH, specifically targeting the recently discovered regreSSHion
vulnerability (CVE-2024-6387). This script facilitates rapid scanning of multiple IP addresses, domain names, and CIDR network ranges to detect potential vulnerabilities and ensure your infrastructure is secure.
python CVE-2024-6387_Check.py <targets> [--ports PORTS] [--timeout TIMEOUT] [--list FILE] [--grace-time-check [SECONDS]] [--dns-resolve] [--use-help-request]
<targets>
: IP addresses, domain names, file paths containing IP addresses, or CIDR network ranges.--timeout TIMEOUT
: Set connection timeout in seconds (default: 1 second).--list FILE
: File containing a list of IP addresses to check.--ports PORTS
: Specify a comma-separated list of port numbers to check (default: 22).--use-help-request
: Enable sending a HELP request if the initial SSH banner retrieval fails.--grace-time-check [SECONDS]
: Time in seconds to wait after identifying the version to check for LoginGraceTime
mitigation (default: 120 seconds).--dns-resolve
: Resolve and display hostnames for IP addresses.python CVE-2024-6387_Check.py 192.168.1.1
python CVE-2024-6387_Check.py -l ip_list.txt
python CVE-2024-6387_Check.py 192.168.1.1 example.com 192.168.1.2
python CVE-2024-6387_Check.py 192.168.1.0/24
python CVE-2024-6387_Check.py 192.168.1.1 example.com --ports 22,2222
python CVE-2024-6387_Check.py 192.168.1.1 --grace-time-check
python CVE-2024-6387_Check.py 192.168.1.1 --grace-time-check 150
python CVE-2024-6387_Check.py 192.168.1.1 --use-help-request
python CVE-2024-6387_Check.py 192.168.1.1 --dns-resolve
The tool supports checking for LoginGraceTime mitigation. When the --grace-time-check option is used, the script will wait for the specified duration after retrieving the SSH banner to see if the connection remains open, which indicates that the LoginGraceTime setting might be set to 0 as a mitigation measure.
The tool fully supports IPv6 addresses. You can scan both IPv4 and IPv6 addresses directly or through hostname resolution.
The tool recognizes certain patched versions of OpenSSH and excludes them from the vulnerability report, ensuring more accurate results.
When the --dns-resolve
option is used, the script resolves and displays hostnames for IP addresses in the output. This feature helps identify the scanned hosts more clearly.
The tool includes an option to handle restrictive SSH services that do not immediately return a banner. When the --use-help-request
option is used, the script will send a "HELP" request if the initial SSH banner retrieval fails, increasing "mitigation" detections.
The script will provide a summary of the scanned targets:
🛡️ Servers not vulnerable: 2
[+] Server at somedomain.cloudapp.azure.com (running SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11)
[+] Server at regresshion_test.cc (running SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.3)
🚨 Servers likely vulnerable: 1
[+] Server at 4.231.170.122 (abc.com) (running SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u2)
[+] Server at 4.231.170.121 (running SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u2) vulnerable and LoginGraceTime remediation not done (Session was closed by server at 120.1 seconds)
⚠️ Servers with unknown SSH version: 1
[+] Server at 103.97.85.85 (xxx.com) (banner: SSH-2.0-ROSSSH)
🔒 Servers with port 22 closed: 254
📊 Total scanned targets: 257
-d
or --dns-resolve
--use-help-request
argument. This helps to bypass certain SSH configurations that do not immediately return the banner, improving compatibility with more restrictive SSH services.