Metasploit 補助スキャンモジュール

LinuxBeginner
オンラインで実践に進む

はじめに

Metasploit Framework は、侵入テスト(ペネトレーションテスト)、脆弱性評価、エクスプロイト開発に使用される強力なオープンソースツールです。膨大なエクスプロイトのコレクションで有名ですが、エクスプロイト以外のタスクを実行するための「auxiliary(補助)」モジュール群も含まれています。これらのモジュールは、スキャン、ファジング、スニッフィング、偵察(reconnaissance)など、直接的なエクスプロイトを伴わないタスクを実行します。

この実験(Lab)では、Metasploit の最も基本的な補助モジュールの一つである TCP ポートスキャナの使用方法を学びます。モジュールの選択方法、ターゲットホストやポートなどのオプションの設定方法、そしてスキャンを実行してターゲットマシン上の開いているポートを発見する方法を習得します。

use auxiliary/scanner/portscan/tcp を使用したポートスキャナモジュールの利用

このステップでは、Metasploit Framework コンソールを起動し、TCP ポートスキャナモジュールを選択します。

まず、Metasploit コンソールを起動する必要があります。これはフレームワークと対話するための主要なインターフェースです。ターミナルを開き、次のコマンドを実行します。

msfconsole -q

-q フラグは「quiet」を意味し、よりクリーンなインターフェースのために起動バナーを抑制します。ロードが完了すると、msf > のような Metasploit のコマンドプロンプトが表示されます。

次に、use コマンドを使用して、TCP ポートスキャン用の補助モジュールを選択します。このコマンドは指定されたモジュールをロードし、設定の準備をします。

Metasploit プロンプトに次のコマンドを入力します。

use auxiliary/scanner/portscan/tcp

コマンド実行後、プロンプトが現在ロードされているモジュールを反映するように変化したことに気づくでしょう。これは、現在 TCP ポートスキャナのコンテキストで作業していることを確認します。

プロンプトは次のようになるはずです。

msf auxiliary(scanner/portscan/tcp) >

スキャン範囲を set RHOSTS 192.168.1.0/24 で設定

このステップでは、スキャンのターゲットを設定します。Metasploit では、ターゲットホストは RHOSTS (Remote Hosts) 変数によって定義されます。

モジュールを実行する前に、そのアクションをどこに向けるかを指定する必要があります。set コマンドはモジュールオプションを設定するために使用されます。RHOSTS には、単一の IP アドレス、ホスト名、IP の範囲(例:192.168.1.10-192.168.1.20)、または CIDR 表記のネットワーク範囲(例:192.168.1.0/24)を指定できます。

この実験(Lab)では、セットアップスクリプトによって開始されたサービスを見つけるために、ローカルマシンをスキャンします。ローカルマシンの IP アドレスは 127.0.0.1 です。

set コマンドを使用してターゲットを定義します。

set RHOSTS 127.0.0.1

Metasploit は、変数とその新しい値を印刷することで設定を確認します。

RHOSTS => 127.0.0.1

現在のモジュールで利用可能なすべてのオプションを確認し、設定を検証するには、いつでも show options コマンドを使用できます。

ポートを set PORTS 1-1000 で設定

このステップでは、ターゲットホストでスキャンするポートを指定します。デフォルトでは、スキャナは一般的なポートの短いリストのみをチェックする場合があります。より徹底的なスキャンを実行するには、PORTS 変数を設定する必要があります。

PORTS オプションは、カンマ区切りのポートリスト(例:22,80,443)またはポートの範囲(例:1-1024)を受け入れます。この実験(Lab)のセットアップスクリプトは、ポート 9998000 でサービスを開始しました。スキャンでそれらを見つけることを確実にするために、広範囲のポートをスキャンします。

ポート範囲を 1 から 10000 に設定しましょう。再度 set コマンドを使用します。

set PORTS 1-10000

コンソールが変更を確認します。

PORTS => 1-10000

これで、スキャナはターゲットホスト 127.0.0.1 上のポート 1 から 10000 までのすべてをチェックするように設定されました。

run コマンドでスキャンを実行

このステップでは、ポートスキャンを実行します。モジュールが選択され、必要なすべてのオプション(RHOSTS および PORTS)が設定されたので、スキャナを起動する準備が整いました。

run コマンド(またはそのエイリアスである exploit)は、Metasploit に対して、現在ロードされているモジュールを指定された設定で実行するように指示します。

スキャンを開始するには、次のように入力するだけです。

run

Metasploit はスキャンプロセスを開始します。指定された範囲内のターゲットホストの各ポートへの接続を試みます。開いているポートが見つかると、コンソールにメッセージが出力されます。以前に設定した開いているポートを示す出力が表示されるはずです。

出力は次のようなものになります。

[+] 127.0.0.1             - 127.0.0.1:22 - TCP OPEN
[+] 127.0.0.1             - 127.0.0.1:3002 - TCP OPEN
[+] 127.0.0.1             - 127.0.0.1:3001 - TCP OPEN
[+] 127.0.0.1             - 127.0.0.1:5433 - TCP OPEN
[*] 127.0.0.1             - Scanned 1 of 1 hosts (100% complete)

この出力は、スキャナがローカルマシン上の開いているポートを正常に識別したことを確認します。

jobs -l でスキャン結果を分析

このステップでは、Metasploit のタスクをバックグラウンドジョブとして管理する方法を学びます。前のステップではスキャン結果が直接画面に出力されましたが、より時間のかかるタスクは、コンソールを他のコマンドのために空けておくために、バックグラウンドで実行されることがよくあります。

モジュールをバックグラウンドジョブとして実行するには、run コマンドに -j フラグを追加できます。これをポートスキャナで試してみましょう。

run -j

今回は、スキャンが完了するのを待つ代わりに、すぐにプロンプトが返ってきます。Metasploit は、モジュールがバックグラウンドジョブとして実行されていることを通知します。

[*] Auxiliary module running as background job 1.

Enter キーを押して続行してください。

実行中のすべてのバックグラウンドジョブのリストを表示するには、jobs コマンドを使用できます。-l フラグを使用すると、より詳細なリストが表示されます。

jobs -l

出力には、ジョブの ID、名前、ステータスが表示されます。

Jobs
====

  Id  Name                             Payload  Payload opts
  --  ----                             -------  ------------
  1   Auxiliary: scanner/portscan/tcp

jobs コマンドは、別のエクスプロイトを設定しながら長いスキャンを実行するなど、複数のタスクを管理するために不可欠です。ジョブの ID を使用して、例えば出力の表示や停止を行うことができます。

まとめ

この実験(Lab)の完了おめでとうございます!Metasploit の補助(auxiliary)モジュールを使用して、ネットワークポートスキャンを正常に実行できました。

この実験(Lab)では、以下のことを学びました。

  • Metasploit Framework コンソール(msfconsole)の起動。
  • use コマンドを使用した補助モジュールの選択。
  • set コマンドを使用した RHOSTSPORTS などのモジュールオプションの設定。
  • run コマンドを使用したモジュールの実行。
  • モジュールをバックグラウンドタスクとして実行し、jobs コマンドで管理する方法。

ポートスキャンは、あらゆるペネトレーションテストにおいて極めて重要な最初のステップであり、Metasploit はこのタスクを実行するための強力かつ柔軟な方法を提供します。これは、利用可能な数百の補助モジュールの中のほんの一例です。他のスキャンや偵察(reconnaissance)のために、他のモジュールを探求することを推奨します。