はじめに
Metasploit の世界へようこそ!Metasploit Framework は、サイバーセキュリティの専門家によって、エクスプロイトの開発、テスト、実行に使用される非常に強力なオープンソースツールです。これには、さまざまなペネトレーションテストタスクに使用できるコードの断片であるモジュールの膨大なデータベースが含まれています。これらのモジュールには、エクスプロイト、ペイロード、および補助ツールが含まれます。
この実験 (Lab) では、Metasploit モジュールを扱うための基本的なワークフローを学習します。まず Metasploit コンソールを起動し、次に特定のモジュールを検索する方法、使用するモジュールを選択する方法、およびその基本オプションを設定する方法を学習します。これは、将来のペネトレーションテスターにとって不可欠な基礎スキルセットです。
search type:exploit でエクスプロイトを検索する
このステップでは、search コマンドを使用して Metasploit Framework 内のモジュールを検索する方法を学習します。search コマンドは、利用可能な数千のモジュールをナビゲートするための主要なツールです。
まず、Metasploit Framework コンソールを起動します。起動にはしばらく時間がかかる場合があります。
msfconsole
バナーと、msf > のように見える Metasploit のコマンドプロンプトが表示されます。この実験 (Lab) でのそれ以降のすべてのコマンドは、このコンソール内で実行されます。
検索をより効果的にするために、キーワードを使用して結果をフィルタリングできます。最も一般的なキーワードの 1 つは type であり、探しているモジュールの種類(例:exploit、payload、auxiliary)を指定できます。
エクスプロイトとして分類されているすべてのモジュールを検索してみましょう。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) ...
これにより、利用可能なエクスプロイトの全体像は把握できますが、リストが大きすぎて実用的ではありません。次のステップでは、リストを絞り込みます。
search platform:linux でプラットフォームによる検索の絞り込み
このステップでは、検索結果を絞り込む方法を学習します。前の検索では、多くの異なるオペレーティングシステムに対する数千のエクスプロイトが返されました。関連性の高いエクスプロイトを見つけるには、さらにフィルターを追加する必要があります。
platform キーワードを使用すると、ターゲットオペレーティングシステム(例:windows、linux、osx、android)に基づいてモジュールをフィルタリングできます。複数のキーワードを単一の 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 を実行することで、オプションが更新されたことを確認できます。LHOST の Current Setting として 127.0.0.1 がリストされているのが確認できるはずです。この単純な set コマンドが、攻撃を開始する前にすべてのモジュールを設定する方法となります。
Metasploit コンソールを終了するには、exit と入力できます。
exit
まとめ
この実験(Lab)の完了、おめでとうございます!Metasploit Framework を操作するための最も基本的な最初のステップを学習しました。
これで、以下のことができるようになりました。
- Metasploit コンソール (
msfconsole) の起動。 searchコマンドを使用してモジュールを検索し、typeやplatformでフィルタリングする方法。useコマンドを使用して特定のモジュールを選択する方法。show optionsでモジュールの設定可能なパラメータを表示する方法。setコマンドを使用してモジュールのパラメータを設定する方法(例:リスナーの LHOST の設定)。
これらのコマンドは、Metasploit で実行するあらゆるタスクのコアワークフローを構成します。これらを習得することが、この強力な侵入テストツールを効果的に使用するための鍵となります。



