はじめに
この実験では、Nmap の強力なネットワークスキャン機能を Metasploit Framework と統合する方法を学びます。Metasploit には独自の組み込みスキャン機能がありますが、Nmap のような外部ツールの結果をインポートする必要がよくあります。これは、ペネトレーションテストにおいて一般的なワークフローであり、すべての偵察データを Metasploit のデータベース内に一元化することができます。
Nmap のスキャン結果をインポートすることで、Nmap によって発見されたホストやサービスに対して、Metasploit のデータ管理およびエクスプロイト機能を活用できます。ここでは、Nmap スキャンを実行し、出力を XML ファイルに保存し、その後 Metasploit コンソール内の db_import コマンドを使用してデータベースを更新します。
Metasploit 外で Nmap スキャンを実行し、XML に保存する
このステップでは、基本的な Nmap スキャンを実行し、その結果を XML ファイルに保存します。XML 形式は、構造化されており解析が容易なため、他のツールへのインポートに最適です。ここでは localhost をスキャンして、実行中のサービスとそのバージョンを特定します。
まず、デフォルトのプロジェクトディレクトリである /home/labex/project にいることを確認してください。
ターミナルで以下の nmap コマンドを実行します。オプションの内訳は以下の通りです。
-sV: 開いているポートをプローブして、サービス/バージョンの情報を決定します。-oX nmap_scan.xml: スキャン結果をnmap_scan.xmlという名前のファイルに XML 形式で出力します。localhost: スキャンのターゲットです。
nmap -sV -oX nmap_scan.xml localhost
スキャンが完了すると、結果を要約した以下のような出力が表示されます。開いているポートは正確には異なる場合があります。
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
...
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.43 seconds
このコマンドは、現在のディレクトリ (~/project) に nmap_scan.xml という名前のファイルを作成します。
msfconsole で db_import コマンドを使用する
このステップでは、Metasploit Framework コンソールを起動します。msfconsole は Metasploit と対話するための主要なインターフェースであり、モジュールへのアクセス、データの管理、攻撃の開始を可能にします。
ここでは、起動時のバナーを抑制してインターフェースをよりクリーンにするために、-q (quiet) フラグを付けて msfconsole を起動します。データベース接続は自動的に確立されます。
Metasploit コンソールを起動するには、次のコマンドを実行します。
msfconsole -q
しばらくすると、ターミナルのプロンプトが msf6 > に変わり、Metasploit コンソール内に入ったことを示します。
msf6 >
msfconsole 内では、ペネトレーションテストのワークフローを管理するための多くのコマンドにアクセスできます。その中の一つが db_import であり、次のステップで Nmap スキャンデータをロードするために使用します。
Nmap XML ファイルへのパスを指定する
Metasploit コンソール内に入ったので、Nmap スキャン結果をインポートできます。この目的には db_import コマンドが使用されます。最初のステップで作成した XML ファイルへの絶対パスを指定する必要があります。
ファイルは /home/labex/project に作成したので、そのパスを使用します。
msfconsole プロンプト内で db_import コマンドを実行します。
db_import /home/labex/project/nmap_scan.xml
Metasploit は XML ファイルを解析し、そのデータをデータベースにインポートします。データがインポートされていることを確認する出力が表示されるはずです。
msf6 > db_import /home/labex/project/nmap_scan.xml
[*] Importing 'Nmap XML' data from /home/labex/project/nmap_scan.xml
[*] Importing host 127.0.0.1
[*] Successfully imported /home/labex/project/nmap_scan.xml
このメッセージは、Nmap スキャンからのホスト、ポート、サービスが Metasploit データベースに保存されたことを確認します。
hosts コマンドを使用してインポートされたホストを確認する
このステップでは、ホスト情報が Metasploit データベースに正常にインポートされたことを確認します。msfconsole の hosts コマンドは、現在のワークスペースで Metasploit が認識しているすべてのホストを一覧表示します。
スキャンデータをインポートした後、hosts コマンドを実行すると、スキャンしたターゲットである localhost (127.0.0.1) が表示されるはずです。
msfconsole プロンプト内で、hosts コマンドを入力して Enter キーを押します。
hosts
出力は、IP アドレス、MAC アドレス(利用可能な場合)、名前、オペレーティングシステムを含む、データベース内のホストを一覧表示するテーブルになります。
msf6 > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
127.0.0.1 localhost Ubuntu Linux Linux device
リストに 127.0.0.1 が表示されることは、Nmap スキャンからのホストデータがデータベースに正しく追加されたことを確認します。
services コマンドを使用してインポートされたサービスをクエリする
この最終ステップでは、インポートされたホストで検出されたサービスを調べます。msfconsole の services コマンドは、データベースに追加されたすべての開いているポートと実行中のサービスを一覧表示します。これは、潜在的な攻撃ベクトルを特定するために重要です。
msfconsole プロンプト内で services コマンドを実行します。
services
これにより、サービスが実行されているホスト、ポート、プロトコル、サービス名、バージョン情報を含む、すべてのサービスの詳細なテーブルが表示されます。
msf6 > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
127.0.0.1 22 tcp ssh open OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
この出力は、Nmap によって検出された特定のサービスが、Metasploit 内で整理されて表示されていることを示しています。この情報を使用して、フレームワーク内で関連するエクスプロイトまたは補助モジュールを検索できます。
Metasploit コンソールを終了するには、exit と入力するだけです。
exit
まとめ
この実験では、外部ツールを Metasploit Framework に統合するための基本的なワークフローを習得しました。
以下の方法を学びました。
- バージョン検出付きで Nmap スキャンを実行し、結果を XML ファイルに保存する方法。
- Metasploit コンソールを開始し、
db_importコマンドを使用して Nmap スキャンデータをロードする方法。 hostsコマンドを使用してインポートされたデータを検証し、検出されたホストを表示する方法。servicesコマンドを使用してデータベースをクエリし、詳細なサービス情報を取得する方法。
このスキャンデータインポートプロセスは、ペネトレーションテスト中の効果的なデータ管理に不可欠であり、さまざまなソースからの情報を単一の強力なプラットフォームに統合して、分析とエクスプロイトを可能にします。


