Metasploit でモジュールを検索する

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

はじめに

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 のようなモジュールタイプで検索結果をフィルタリングする

このステップでは、特定のモジュールタイプで検索結果を絞り込む方法を学びます。前の検索では、auxiliaryexploitpost など、さまざまなタイプのモジュールが返されました。多くの場合、必要なモジュールの種類はわかっています。

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/

この出力には、必要なオプション(RHOSTSUSER_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>: exploitauxiliary のような特定のモジュールタイプの結果を絞り込みます。
  • search cve:<cveid>: 特定の CVE 脆弱性に関連付けられたモジュールを特定します。
  • info: モジュールの詳細、オプション、目的を調査します。
  • use: モジュールを選択し、フレームワークのコンテキストにロードします。

これらの検索テクニックを習得することは、Metasploit を使いこなすための基本的なステップです。これで、将来のペネトレーションテストのエンゲージメントに最適なツールを見つけるための準備が整いました。