はじめに
この実験 (Lab) では、Metasploit Framework を使用して Server Message Block (SMB) の列挙 (enumeration) を行う方法を学びます。SMB は、ネットワーク上のノード間でファイル、プリンター、シリアルポートの共有アクセスを提供するために使用されるネットワークプロトコルです。SMB のバージョンを列挙することは、ペネトレーションテストにおける重要な最初のステップです。これにより、ターゲットで実行されている特定のソフトウェアとそのバージョンを特定でき、既知の脆弱性と照合することができます。
ここでは、Metasploit の補助スキャナーモジュールの一つ、具体的には auxiliary/scanner/smb/smb_version を使用してターゲットをスキャンし、SMB のバージョンを特定します。Metasploit は、脆弱性を発見、悪用、検証を容易にする強力なペネトレーションテストフレームワークです。
この実験 (Lab) の終わりには、Metasploit の起動、モジュールの検索、モジュールオプションの設定、およびターゲットシステムに関する情報を収集するためのスキャナーの実行に慣れていることでしょう。
smb_version 補助モジュールの検索
このステップでは、Metasploit Framework コンソールを起動し、SMB バージョンスキャンを実行するための適切なモジュールを検索します。msfconsole は Metasploit と対話するための主要なインターフェースです。
まず、ターミナルを開き、以下のコマンドを実行して Metasploit コンソールを起動します。初期化にはしばらく時間がかかる場合があります。
msfconsole -q
-q フラグは、起動時のバナーを非表示にします。ロードされると、msf6 > のような Metasploit プロンプトが表示されます。
次に、SMB バージョンスキャンモジュールを見つけましょう。search コマンドを使用して smb_version に関連するモジュールを検索できます。
search smb_version
一致するモジュールのリストが表示されます。私たちが関心を持っているのは補助スキャナーです。出力は以下のようになります。
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/smb/smb_version normal No SMB Version Detection
1 exploit/windows/smb/smb_doublepulsar_eternalblue 2017-04-14 extraordinary Yes SMBv1/SMBv2 DoublePulsar/EternalBlue Unauthenticated RCE
出力から、auxiliary/scanner/smb/smb_version が必要なモジュールであることがわかります。
smb_version モジュールの選択
このステップでは、前のステップで見つけたモジュールを選択します。正しいモジュールを特定した後、use コマンドを使用してフレームワークのコンテキストにロードする必要があります。
msfconsole プロンプトで、smb_version スキャナーを選択するために次のコマンドを入力します。
use auxiliary/scanner/smb/smb_version
プロンプトが、現在ロードされているモジュールを反映するように変更されることに気づくでしょう。
msf6 auxiliary(scanner/smb/smb_version) >
これは、モジュールが現在アクティブであることを示します。このモジュールで設定できるオプションを確認するには、show options コマンドを使用します。
show options
これにより、モジュールに設定できるパラメータのテーブルが表示されます。
Module options (auxiliary/scanner/smb/smb_version):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
THREADS 1 yes The number of concurrent threads (max one per host)
次のステップで設定する RHOSTS と THREADS オプションに特に注意してください。Required 列は、スキャナーを実行する前に RHOSTS を設定する必要があることを示しています。
RHOSTS オプションをターゲットの IP 範囲に設定する
このステップでは、スキャンのターゲットを設定します。RHOSTS オプション(Remote Hosts)は、Metasploit にどのマシンをスキャンするかを指示します。この実験では、ローカルマシンに Samba サーバーをインストールし、それをターゲットとして使用します。したがって、RHOSTS をループバック IP アドレスである 127.0.0.1 に設定します。
set コマンドを使用して、RHOSTS に値を割り当てます。
set RHOSTS 127.0.0.1
Metasploit は変更を確認します。
RHOSTS => 127.0.0.1
再度 show options を実行することで、オプションが正しく設定されたことを確認できます。RHOSTS の Current Setting として 127.0.0.1 がリストされているのがわかります。スキャナーはターゲットを知る必要があるため、これは必須のステップです。
THREADS オプションを高速スキャン用に設定する
このステップでは、THREADS オプションを調整します。このオプションは、Metasploit が使用する同時スキャンスレッドの数を制御します。スレッド数を増やすと、多数のホストをターゲットにする際のスキャン速度を大幅に向上させることができます。
単一のホスト(127.0.0.1)をスキャンする場合、複数のスレッドによるパフォーマンスの向上は見られませんが、このオプションの設定方法を学ぶことは良い習慣です。スレッド数を 50 に設定しましょう。
再度 set コマンドを使用して THREADS の値を変更します。
set THREADS 50
Metasploit は設定を確認します。
THREADS => 50
これで、スキャナーは最大 50 のスレッドを使用するように設定されました。これは、192.168.1.0/24 のようなネットワーク範囲をスキャンする際に非常に効果的です。
スキャナーを実行し、出力を分析する
このステップでは、すべてのオプションが設定されたので、スキャナーを実行する準備ができました。run コマンド(またはそのエイリアスである exploit)は、指定されたターゲットに対してモジュールを起動します。
msfconsole プロンプトで、スキャナーを実行します。
run
モジュールは、127.0.0.1 のポート 445 に接続し、SMB のバージョンを特定しようとします。出力は以下のようになります。
[*] 127.0.0.1:445 - Sending SMBv1 request
[+] 127.0.0.1:445 - Host is running Samba 4.15.13-Ubuntu (Samba 4.15.13-Ubuntu)
[*] 127.0.0.1:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
出力を分析しましょう。
[+]記号は、成功した結果を示します。Host is running Samba 4.15.13-Ubuntuという行は、SMB サーバーソフトウェアの正確なバージョンを教えてくれます。この情報は、ペネトレーションテスターにとって非常に価値があり、このバージョンに固有の脆弱性を検索できるようになります。- 最後の行は、スキャンが完了したことを確認します。
ターゲットの SMB バージョンの列挙に成功しました。Metasploit コンソールを終了するには、exit と入力するだけです。
exit
まとめ
この実験では、Metasploit の補助スキャナーを使用して SMB の列挙を正常に実行しました。Metasploit Framework 内でモジュールを使用するための基本的なワークフローを学びました。
以下の主要なスキルを練習しました。
- Metasploit コンソール(
msfconsole)の起動。 searchコマンドを使用したモジュールの検索。useコマンドを使用したモジュールの選択とロード。show optionsおよびsetを使用したRHOSTSやTHREADSなどのモジュールオプションの表示と設定。runコマンドを使用したモジュールの実行。- 出力を分析して、ターゲットに関する重要な情報を収集すること。
この情報収集プロセスは、あらゆるセキュリティ評価またはペネトレーションテストの基本的な要素です。実験の完了おめでとうございます!


