はじめに
この実験では、Metasploit Framework 内の補助スキャナーモジュールを使用して、SSH (Secure Shell) のバージョン列挙を実行する方法を学びます。Metasploit は、膨大な数のエクスプロイト、ペイロード、および補助モジュールを含む強力な侵入テストツールです。
補助モジュールは直接的なエクスプロイトには使用されませんが、スキャン、ファジング、情報収集などの他の目的で使用されます。SSH 列挙は、セキュリティ評価の偵察フェーズにおける重要な部分です。SSH サーバーの特定のバージョンを特定することにより、攻撃者はそのバージョンに関連付けられた既知の脆弱性を検索できます。
Metasploit コンソールを起動し、適切なモジュールを検索し、そのオプションを設定し、ターゲットに対して実行して SSH バージョンを発見する方法を学びます。
ssh_version 補助モジュールを検索する
このステップでは、Metasploit Framework コンソールを起動し、SSH バージョンをスキャンできるモジュールを検索します。
まず、ターミナルを開きます。Metasploit コンソールは、フレームワークのコマンドラインインターフェースです。msfconsole と入力して起動できます。ここでは、起動時のバナーを抑制する「サイレント」起動のための -q フラグを使用します。
Metasploit コンソールを起動するには、次のコマンドを実行します。
msfconsole -q
コンソールがロードされると、msf6 > のような Metasploit プロンプトが表示されます。ここで、search コマンドを使用してモジュールを検索できます。SSH バージョン スキャンに関連するモジュールを探しています。
Metasploit コンソールに次のコマンドを入力して Enter キーを押します。
search ssh_version
Metasploit はモジュールデータベースを検索し、一致するものを表示します。出力には auxiliary/scanner/ssh/ssh_version モジュールが表示され、これがまさに私たちが求めているものです。
msf6 > search ssh_version
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_version normal No Detect SSH Version
Interact with a module by name or index. For example info 0, use 0 or use auxiliary/scanner/ssh/ssh_version
msf6 >
ssh_version モジュールを選択する
このステップでは、見つけた ssh_version モジュールを選択し、利用可能なオプションを表示します。
正しいモジュールを特定したので、それをフレームワークのコンテキストにロードする必要があります。これは、use コマンドの後にモジュールのフルネームを指定して行います。
msfconsole プロンプトで、次のコマンドを入力します。
use auxiliary/scanner/ssh/ssh_version
コマンドを実行すると、プロンプトが変更されたことに気づくでしょう。アクティブなモジュールの名前が含まれるようになり、設定の準備ができたことを示します。新しいプロンプトは次のようになります:msf6 auxiliary(scanner/ssh/ssh_version) >。
このモジュールで設定できるパラメータを確認するには、show options コマンドを使用します。
show options
このコマンドは、ssh_version モジュールのすべてのオプションのテーブルを表示します。これには、現在の設定、必須かどうか、および簡単な説明が含まれます。次のステップで設定する RHOSTS と THREADS オプションに特に注意してください。
msf6 auxiliary(scanner/ssh/ssh_version) > show options
Module options (auxiliary/scanner/ssh/ssh_version):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 22 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads (max one per host)
TIMEOUT 30 yes Timeout for the SSH probe
...
RHOSTS オプションをターゲットサブネットに設定する
このステップでは、スキャンのターゲットを設定します。RHOSTS オプションは、Metasploit がスキャンするリモートホストまたはホストを指定します。
この実験では、セットアップスクリプトがローカルマシンに SSH サーバーをインストールして起動したため、ローカルマシン自体をスキャンします。ローカルマシンの IP アドレスは常に 127.0.0.1 です。
モジュールオプションは、set コマンドの後にオプション名と割り当てたい値を指定して設定できます。
ターゲットをローカルマシンに設定するには、msfconsole プロンプトで次のコマンドを実行します。
set RHOSTS 127.0.0.1
Metasploit は、オプションとその新しい値を印刷して変更を確認します。
RHOSTS => 127.0.0.1
これで、スキャナーにどのマシンをターゲットにするかを指示しました。ネットワークをスキャンしていた場合は、ここに IP アドレスの範囲を指定できます (例:192.168.1.0/24)。
同時実行スレッド数の設定
このステップでは、スキャナーの同時実行スレッド数を調整します。このオプションは、同時にいくつのホストがスキャンされるかを制御します。
現在のように単一のホストをスキャンする場合、複数のスレッドから得られるメリットはそれほど大きくありませんが、プロセスを高速化するために大規模なネットワークをスキャンする際には重要な設定です。その設定方法を学ぶことは良い習慣です。
デフォルト値は 1 です。これを 10 に増やしましょう。再び set コマンドを使用します。
msfconsole プロンプトで、次のコマンドを入力します。
set THREADS 10
Metasploit は、設定が更新されたことを確認します。
THREADS => 10
これで、スキャナーは最大 10 個のスレッドを使用するように設定されました。これにより、IP アドレスの範囲をスキャンする際の速度が大幅に向上します。
モジュールを実行し、検出された SSH バージョンを確認する
このステップでは、すべてのオプションを設定した後、スキャナーモジュールを実行して出力を分析します。
run コマンド (またはそのエイリアスである exploit) は、現在ロードされているモジュールを設定済みの設定で実行します。
スキャンを開始するには、msfconsole プロンプトで run と入力して Enter キーを押すだけです。
run
モジュールは、127.0.0.1 のポート 22 に接続を試みます。アクティブな SSH サービスが見つかった場合、バージョンバナーを取得して表示します。出力は以下のようになります。
[*] 127.0.0.1:22 - Scanned 1 of 1 hosts (100%)
[+] 127.0.0.1:22 - SSH server detected: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
[*] Auxiliary module execution completed
[+] 記号は成功を示します。出力は、ポート 22 の 127.0.0.1 で SSH サーバーが検出され、Ubuntu システム上の OpenSSH_8.9p1 というバージョンが報告されていることを示しています。この情報は、このバージョンに固有の脆弱性を検索するなど、ペネトレーションテストの次のステップに役立ちます。
まとめ
この実験では、Metasploit の補助スキャナーを使用して SSH バージョンの列挙を正常に実行しました。
以下の方法を学びました。
- Metasploit Framework コンソールを起動する。
searchコマンドを使用して特定のモジュールを検索する。useコマンドを使用してモジュールを選択しロードする。setコマンドを使用してRHOSTSやTHREADSのようなモジュールオプションを設定する。runコマンドを使用してモジュールを実行する。- 結果を解釈してターゲット上の SSH サーバーバージョンを特定する。
このプロセスは、サイバーセキュリティおよびペネトレーションテストの分野における情報収集と偵察の基本的なスキルです。


