はじめに
Metasploit Framework は、セキュリティ専門家が侵入テストや脆弱性評価に使用する強力なツールです。エクスプロイト、補助スキャナー、ペイロードなど、膨大なモジュールデータベースが含まれています。数千ものモジュールが利用可能であるため、適切なモジュールを効率的に検索する方法を知ることは、重要なスキルです。
この実験 (lab) では、Metasploit でモジュールを検索するための基本的なテクニックを学びます。まずキーワード検索から始め、次にモジュールタイプや特定の CVE ID を使用して検索を絞り込む方法を探ります。最後に、モジュールの詳細を確認し、使用するために選択する方法を学びます。
ssh のようなサービス名で search コマンドを使用する
このステップでは、Metasploit コンソールを起動し、特定のサービスに関連するモジュールの基本的な検索を実行します。search コマンドは、Metasploit の広範なモジュールライブラリをナビゲートするための主要なツールです。
まず、ターミナルを開き、msfconsole コマンドを実行して Metasploit Framework コンソールを起動します。ロードには少し時間がかかる場合があります。
msfconsole
バナーと Metasploit のコマンドプロンプトが表示され、msf6 > のようになります。
次に、SSH (Secure Shell) サービスに関連するすべてのモジュールを検索しましょう。Metasploit コンソールに次のコマンドを入力して Enter キーを押します。
search ssh
Metasploit は、名前または説明に "ssh" を含むすべてのモジュールのリストを表示します。出力は、いくつかの列を持つテーブルになります。
- #: 検索結果におけるモジュールのインデックス番号。
- Name: モジュールのフルパスと名前。
- Disclosure Date: 脆弱性が公開された日付。
- Rank: モジュールの信頼性評価 (例:
excellent,great,good)。 - Check: ターゲットがエクスプロイトなしで脆弱かどうかを確認するチェックメソッドがあるかどうかを示します。
- Description: モジュールが何をするかの簡単な概要。
出力は以下のようになります (リストはより長くなる場合があり、バージョンが異なる場合があります)。
msf6 > search ssh
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_login 1999-01-01 normal No SSH Login Check Scanner
1 auxiliary/scanner/ssh/ssh_login_pubkey 2002-07-23 normal No SSH Public Key Login Scanner
2 exploit/linux/ssh/libssh_auth_bypass 2018-10-16 great Yes LibSSH Authentication Bypass
3 auxiliary/scanner/ssh/ssh_enumusers 2018-08-20 normal No OpenSSH User Enumeration
4 post/linux/manage/ssh_authorized_keys normal No Linux Manage SSH Authorized Keys
...
この簡単な検索により、利用可能なすべての SSH 関連モジュールの概要を把握できます。
exploit や auxiliary のようなモジュールタイプで検索結果をフィルタリングする
このステップでは、特定のモジュールタイプで検索結果を絞り込む方法を学びます。前の検索では、auxiliary、exploit、post など、さまざまなタイプのモジュールが返されました。多くの場合、必要なモジュールの種類はわかっています。
Metasploit では、type のようなキーワードを使用して検索をフィルタリングできます。最も一般的なタイプは次のとおりです。
exploit: 脆弱性を悪用して制御を奪うモジュール。auxiliary: スキャン、ファジング、スニッフィング、その他の直接的なエクスプロイトではないアクションに使用されるモジュール。post: 侵害されたシステムで実行されるポストエクスプロイトモジュール。
SSH に関する exploit モジュールのみを見つけるために、前の検索を絞り込みましょう。検索クエリで type: フィルターを使用します。
search type:exploit ssh
出力は、exploit として分類されたモジュールに限定されます。
msf6 > search type:exploit ssh
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/linux/ssh/libssh_auth_bypass 2018-10-16 great Yes LibSSH Authentication Bypass
1 exploit/multi/ssh/sshexec 2004-01-01 manual No SSH Exec
...
同様に、SSH サービスに関する情報を収集するためのスキャナーを探している場合は、auxiliary モジュールを検索します。
search type:auxiliary ssh
このコマンドは、SSH 用のスキャナーやその他の非エクスプロイトツールのリストを返します。
msf6 > search type:auxiliary ssh
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_login 1999-01-01 normal No SSH Login Check Scanner
1 auxiliary/scanner/ssh/ssh_enumusers 2018-08-20 normal No OpenSSH User Enumeration
...
タイプフィルターを使用することは、必要なツールの種類をすばやく見つけるための強力な方法です。
特定の CVE ID で検索する
このステップでは、特定の Common Vulnerabilities and Exposures (CVE) ID に関連付けられたモジュールを検索する方法を学びます。ターゲットにしたい脆弱性の CVE ID がわかっている場合、これは対応するエクスプロイトを見つけるための最も直接的な方法です。
CVE は、公に知られているサイバーセキュリティの脆弱性に対する一意の識別子です。Metasploit モジュールは、対処する CVE でタグ付けされていることがよくあります。
cve: フィルターを使用して CVE で検索できます。たとえば、OpenSSH の一部のバージョンにおけるユーザー列挙の脆弱性である CVE-2018-15473 に関連するモジュールを検索してみましょう。
search cve:2018-15473
この検索は非常に具体的であり、この正確な脆弱性をターゲットにするように設計されたモジュールのみを返すはずです。
msf6 > search cve:2018-15473
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_enumusers 2018-08-20 normal No OpenSSH User Enumeration
ご覧のとおり、この検索は、この CVE に対応する正確な補助モジュールを特定します。CVE で検索することは、脆弱性スキャンレポートやセキュリティアドバイザリから作業している場合に不可欠なテクニックです。
info コマンドを使用してモジュールの詳細情報を表示する
このステップでは、モジュールを使用する前に詳細情報を取得する方法を学びます。有望なモジュールを見つけた後、それが何をするのか、どのようなオプションが必要なのか、誰が開発したのかを理解することが重要です。info コマンドはこれらすべてを提供します。
info コマンドは、モジュールの完全な名前または前回の検索結果のインデックス番号のいずれかで使用できます。前のステップで見つけた ssh_enumusers モジュールに関する詳細情報を取得しましょう。
完全な名前を使用できます。
info auxiliary/scanner/ssh/ssh_enumusers
または、前回の検索で項目 0 であった場合は、単に info 0 を使用することもできます。一般的には完全な名前を使用する方が信頼性が高いです。
コマンドは、モジュールに関する詳細なページを表示します。
msf6 > info auxiliary/scanner/ssh/ssh_enumusers
Name: OpenSSH User Enumeration
Module: auxiliary/scanner/ssh/ssh_enumusers
License: Metasploit Framework License (BSD)
Rank: Normal
Disclosed: 2018-08-20
Provided by:
Justin Gardner
Check supported:
No
Basic options:
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)
USER_FILE yes File containing usernames, one per line
Description:
This module enumerates valid usernames on OpenSSH servers by exploiting
a subtle timing discrepancy in the C library's handling of password
authentication.
References:
https://nvd.nist.gov/vuln/detail/CVE-2018-15473
https://www.exploit-db.com/exploits/45233/
この出力には、必要なオプション(RHOSTS、USER_FILE など)、モジュールの目的の完全な説明、および元の脆弱性開示へのリンクなど、重要な情報が含まれています。モジュールを使用する前に、必ずこの情報を確認してください。
use コマンドでモジュールを選択して使用する
この最終ステップでは、モジュールを選択してアクティブにする方法を学びます。モジュールを特定し調査したら、それをフレームワークのコンテキストにロードして設定し、実行する必要があります。これは use コマンドで行います。
info コマンドと同様に、use の後にモジュールの完全な名前または検索結果からのインデックス番号を指定できます。ssh_enumusers モジュールを選択してみましょう。
use auxiliary/scanner/ssh/ssh_enumusers
このコマンドを実行すると、Metasploit のプロンプトが変更されていることに気づくでしょう。アクティブなモジュールの名前が含まれるようになり、ロードされて設定の準備ができたことを示します。
msf6 > use auxiliary/scanner/ssh/ssh_enumusers
msf6 auxiliary(scanner/ssh/ssh_enumusers) >
新しいプロンプト msf6 auxiliary(scanner/ssh/ssh_enumusers) > は、モジュールがロードされたことを確認します。ここから通常は show options のようなコマンドを使用して設定する必要があるパラメータを確認し、set で設定し、最後に run または exploit でモジュールを実行します。この実験ではモジュールを実行しませんが、検索プロセスにおける重要な最終ステップはモジュールを選択することです。
メインの msf6 > プロンプトに戻るには、back コマンドを使用できます。
まとめ
この実験では、Metasploit Framework 内でモジュールを見つけるための基本的なスキルを学びました。これで、数千もの利用可能なモジュールを正確かつ効率的に操作できるようになりました。
このプロセスの中核となるコマンドを練習しました。
search: サービス名などのキーワードに基づいてモジュールを検索します。search type:<type>:exploitやauxiliaryのような特定のモジュールタイプの結果を絞り込みます。search cve:<cveid>: 特定の CVE 脆弱性に関連付けられたモジュールを特定します。info: モジュールの詳細、オプション、目的を調査します。use: モジュールを選択し、フレームワークのコンテキストにロードします。
これらの検索テクニックを習得することは、Metasploit を使いこなすための基本的なステップです。これで、将来のペネトレーションテストのエンゲージメントに最適なツールを見つけるための準備が整いました。


