Metasploit モジュールの検索と選択

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

はじめに

Metasploit の世界へようこそ!Metasploit Framework は、サイバーセキュリティの専門家によって、エクスプロイトの開発、テスト、実行に使用される非常に強力なオープンソースツールです。これには、さまざまなペネトレーションテストタスクに使用できるコードの断片であるモジュールの膨大なデータベースが含まれています。これらのモジュールには、エクスプロイト、ペイロード、および補助ツールが含まれます。

この実験 (Lab) では、Metasploit モジュールを扱うための基本的なワークフローを学習します。まず Metasploit コンソールを起動し、次に特定のモジュールを検索する方法、使用するモジュールを選択する方法、およびその基本オプションを設定する方法を学習します。これは、将来のペネトレーションテスターにとって不可欠な基礎スキルセットです。

このステップでは、search コマンドを使用して Metasploit Framework 内のモジュールを検索する方法を学習します。search コマンドは、利用可能な数千のモジュールをナビゲートするための主要なツールです。

まず、Metasploit Framework コンソールを起動します。起動にはしばらく時間がかかる場合があります。

msfconsole

バナーと、msf > のように見える Metasploit のコマンドプロンプトが表示されます。この実験 (Lab) でのそれ以降のすべてのコマンドは、このコンソール内で実行されます。

検索をより効果的にするために、キーワードを使用して結果をフィルタリングできます。最も一般的なキーワードの 1 つは type であり、探しているモジュールの種類(例:exploitpayloadauxiliary)を指定できます。

エクスプロイトとして分類されているすべてのモジュールを検索してみましょう。Metasploit コンソールに次のコマンドを入力します。

search type:exploit

利用可能なエクスプロイトの長いリストが表示されます。出力は次の列に整理されています。

  • #: 検索結果のインデックス番号。
  • Name: モジュールの完全なパスと名前。
  • Disclosure Date: 脆弱性が公に開示された日時。
  • Rank: エクスプロイトの信頼性(low から excellent まで)。
  • Check: ターゲットをエクスプロイトせずに脆弱性をチェックできるかどうかを示します。
  • Description: モジュールが何をするかの簡単な要約。
msf > search type:exploit

Matching Modules
================

   ##   Name                                    Disclosure Date  Rank       Check  Description
   -   ----                                    ---------------  ----       -----  -----------
   0   exploit/windows/local/adobe_sandbox_esc  2011-04-15       excellent  No     Adobe Reader/Acrobat "Movie" Annotation Sandbox Escape
   1   exploit/windows/fileformat/acdsee_pica   2011-01-12       good       No     ACDSee PicaView 2.0 EML File Parsing Buffer Overflow
   ... (output truncated) ...

これにより、利用可能なエクスプロイトの全体像は把握できますが、リストが大きすぎて実用的ではありません。次のステップでは、リストを絞り込みます。

このステップでは、検索結果を絞り込む方法を学習します。前の検索では、多くの異なるオペレーティングシステムに対する数千のエクスプロイトが返されました。関連性の高いエクスプロイトを見つけるには、さらにフィルターを追加する必要があります。

platform キーワードを使用すると、ターゲットオペレーティングシステム(例:windowslinuxosxandroid)に基づいてモジュールをフィルタリングできます。複数のキーワードを単一の search コマンドに組み合わせることで、非常に具体的なクエリを作成できます。

Linux プラットフォーム専用に設計されたエクスプロイトを検索してみましょう。

search type:exploit platform:linux

出力は、Linux システムに関連する、はるかに短く、より管理しやすいエクスプロイトのリストになります。

msf > search type:exploit platform:linux

Matching Modules
================

   ##   Name                                          Disclosure Date  Rank     Check  Description
   -   ----                                          ---------------  ----     -----  -----------
   0   exploit/linux/http/advantech_switch_bash_env_exec 2014-09-24       excellent  Yes    Advantech Switch Bash Environment Variable Code Injection (Shellshock)
   1   exploit/linux/http/airties_login_cgi_bof      2012-01-17       excellent  No     AirTies login.cgi Buffer Overflow
   ... (output truncated) ...

キーワードを組み合わせることで、特定のターゲットに必要な正確なモジュールにすばやく絞り込むことができます。

exploit/multi/handler を使用してエクスプロイトモジュールを利用する

このステップでは、作業するモジュールを選択します。search コマンドでモジュールを見つけた後、use コマンドを使用してフレームワークのコンテキストにロードする必要があります。

use コマンドは、モジュールの完全な名前を引数として取ります。名前は検索結果から直接コピーできます。

この実験 (Lab) では、特別で非常に一般的なモジュールである exploit/multi/handler を選択します。このモジュールは、特定の脆弱性をターゲットとする典型的なエクスプロイトではありません。むしろ、ターゲットマシン上で実行されたペイロードからの着信接続を待機する汎用リスナーです。これは、リバースシェルをキャッチするための基本的なツールです。

次のコマンドでハンドラモジュールをロードします。

use exploit/multi/handler

コマンドを実行すると、コマンドプロンプトが変更されたことに気づくでしょう。

msf > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf exploit(multi/handler) >

プロンプト msf exploit(multi/handler) > は、現在 exploit/multi/handler モジュールのコンテキスト内にいることを示しています。ここで発行するすべてのコマンド(オプションの設定など)は、この特定のモジュールに適用されます。

show options でモジュールのオプションを確認する

このステップでは、選択したモジュールについて設定可能なパラメータを表示する方法を学習します。すべてのモジュールには、実行前に設定する必要がある一連のオプションがあります。これらのオプションは、ターゲットの IP アドレスやリッスンするポートなど、モジュールの動作を定義します。

show options コマンドは、現在ロードされているモジュールの利用可能なすべてのオプションを表示します。

現在 exploit/multi/handler のコンテキストにいるので、次のコマンドを実行します。

show options

出力には、モジュールのオプション、現在の設定、および説明が一覧表示されます。

msf exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port

Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

Required (必須) の列に注意してください。yes とマークされているオプションはすべて、モジュールを実行する前に設定する必要があります。multi/handler の場合、LHOST (リッスンホスト) と LPORT (リッスンポート) が必須です。LHOST は、お使いのマシンがリッスンする IP アドレスであり、LPORT はポート番号です。

set LHOST で基本オプションを設定する

このステップでは、set コマンドを使用してモジュールのオプションを設定する方法を学習します。このコマンドにより、show options で確認したパラメータに値を割り当てることができます。

一般的な構文は set <OPTION_NAME> <VALUE> です。

multi/handler モジュールにとって最も重要な設定オプションは LHOST("Listen Host" の略)です。これは、ハンドラがペイロードからの着信接続をリッスンする IP アドレスを指定します。

ハンドラがローカルマシンでリッスンするように、LHOST オプションをループバックアドレスである 127.0.0.1 に設定しましょう。

set LHOST 127.0.0.1

Metasploit は変更を確認します。

LHOST => 127.0.0.1

再度 show options を実行することで、オプションが更新されたことを確認できます。LHOSTCurrent Setting として 127.0.0.1 がリストされているのが確認できるはずです。この単純な set コマンドが、攻撃を開始する前にすべてのモジュールを設定する方法となります。

Metasploit コンソールを終了するには、exit と入力できます。

exit

まとめ

この実験(Lab)の完了、おめでとうございます!Metasploit Framework を操作するための最も基本的な最初のステップを学習しました。

これで、以下のことができるようになりました。

  • Metasploit コンソール (msfconsole) の起動。
  • search コマンドを使用してモジュールを検索し、typeplatform でフィルタリングする方法。
  • use コマンドを使用して特定のモジュールを選択する方法。
  • show options でモジュールの設定可能なパラメータを表示する方法。
  • set コマンドを使用してモジュールのパラメータを設定する方法(例:リスナーの LHOST の設定)。

これらのコマンドは、Metasploit で実行するあらゆるタスクのコアワークフローを構成します。これらを習得することが、この強力な侵入テストツールを効果的に使用するための鍵となります。