
CVE-2024-6387およびCVE-2023-48795に対して脆弱な可能性があるSSHソフトウェアを実行するサーバーを識別するためのスキャナー。
CVE-2024-6387 および CVE-2023-48795 に対して脆弱な可能性のある SSH ソフトウェアを実行するサーバーを識別するためのスキャナ
| CVE | 名前 | 条件 | 重大度 |
|---|---|---|---|
| CVE-2024-6387 | regreSSHion | OpenSSH < 9.8p1 | CRITICAL |
| CVE-2023-48795 | Terrapin | OpenSSH < 9.6 | HIGH |
OpenSSH サーバーの SIGALRM シグナルハンドラにおける競合状態により、glibc を使用する Linux システム上で root としての 認証なし RCE が可能になります。9.8p1 より前のすべての OpenSSH バージョンに影響します。
SSH ハンドシェイク(バイナリプロトコル)に対するプレフィックス切り詰め攻撃で、MITM 攻撃者がセッション開始時にネゴシエートされたセキュリティ拡張メッセージを削除できるようにします。OpenSSH < 9.6 に影響します。
このスクリプトはターゲットの SSH ポートに直接接続し、識別バナー(例:SSH-2.0-OpenSSH_9.7)を読み取ります。資格情報は一切送信しません。取得したバージョンを各 CVE の修正バージョンと比較し、ホストを分類します。
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は任意ですが強く推奨されます — これを使用すると並列逆引き解決が大幅に高速になります。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/ に書き込まれます:
| ファイル | 内容 |
|---|---|
ssh_scan_<timestamp>.log |
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
スキャン終了時に脆弱なホストが存在する場合、スクリプトは構造化 CSV の最初の 20 行のプレビューをターミナルに自動的に表示します。
OpenSSH を 9.8p1 以降 のバージョンに更新してください(両方の CVE をカバーします):
# 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 ホスト) |
ssh_scan_<timestamp>_vulneraveis.txt | VULNERÁVEL と分類されたホストのみ |
ssh_scan_<timestamp>_resultados.csv | 完全なステータスを持つすべての SSH ホスト |
ssh_scan_<timestamp>_formato_estruturado.csv | IP、ポート、タイムスタンプ、ドメイン、製造元、CVE を含む構造化 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 バナー |
| ステータス | 意味 |
|---|
VULNERÁVEL | 修正版より下の OpenSSH バージョンであることが確認された |
SEGURO | 修正版以上の OpenSSH バージョンであることが確認された |
VERSÃO-OCULTA | SSH は検出されたがバージョンが公開されていない — 安全とは確認できない |
SSH-NÃO-OPENSSH | SSH サーバーは見つかったが OpenSSH ではない(Dropbear、Cisco など) |
NÃO-SSH | ポートは応答したが、バナーが SSH プロトコルと一致しない |