はじめに
Metasploit Framework は、リモートターゲットマシンに対してエクスプロイトコードを開発、テスト、実行するための強力なオープンソースツールです。あらゆるセキュリティ評価において重要な部分を占めるのが情報収集であり、これにはオープンポートや実行中のサービスを特定するためのポートスキャンが含まれます。
Metasploit は、db_nmap コマンドを通じて人気の Nmap スキャナーを統合しています。db_nmap の主な利点は、スキャン結果を Metasploit データベースに直接自動保存するため、収集したデータを簡単に管理およびクエリできることです。
この実験では、db_nmap を使用して基本的なポートスキャンを実行し、Metasploit コンソール内で結果を表示する方法を学びます。
スキャン結果のためのワークスペースの選択
このステップでは、Metasploit コンソールを起動し、専用のワークスペースを作成します。Metasploit のワークスペースは、各評価のためにホスト、サービス、その他の収集されたデータを分離して保持することにより、プロジェクトを整理するのに役立ちます。
まず、ターミナルを開き、以下のコマンドを実行して Metasploit Framework コンソールを起動します。読み込みにしばらく時間がかかる場合があります。
msfconsole
msfconsole プロンプト (msf6 >) が表示されたら、新しいワークスペースを作成して切り替えることができます。ワークスペースの名前は portscan_lab とします。新しいワークスペースを追加するには -a フラグを使用します。
workspace -a portscan_lab
確認メッセージが表示されるはずです。
[*] Added workspace: portscan_lab
[*] Workspace: portscan_lab
正しいワークスペースにいることを確認するには、引数なしで workspace コマンドを実行できます。アスタリスク * は現在アクティブなワークスペースを示します。
workspace
出力には、利用可能なすべてのワークスペースがリストされます。
default
* portscan_lab
ワークスペースの設定が完了したので、スキャンを開始する準備ができました。
TCP SYN スキャンを db_nmap -sS で実行する
このステップでは、TCP SYN スキャンを実行します。「ステルススキャン」または「ハーフオープン」スキャンとしても知られるこのスキャンタイプは、高速でターゲットシステムにログが記録されにくいという理由から、人気の選択肢です。-sS フラグは、Nmap に SYN スキャンを実行するように指示します。
msfconsole プロンプト内で、db_nmap コマンドを使用してローカルマシン (localhost) をスキャンします。結果は自動的に portscan_lab ワークスペースに保存されます。
db_nmap -sS localhost
コマンドは Nmap を実行し、その進捗状況と結果を表示します。出力は標準の Nmap 出力と同様になります。
[*] Nmap: Starting Nmap 7.94 ( https://nmap.org ) at ...
[*] Nmap: Nmap scan report for localhost (127.0.0.1)
[*] Nmap: Host is up (0.000084s latency).
[*] Nmap: Other addresses for localhost (not scanned): ::1
[*] Nmap: Not shown: 997 closed tcp ports (reset)
[*] Nmap: PORT STATE SERVICE
[*] Nmap: 22/tcp open ssh
[*] Nmap: 5432/tcp open postgresql
[*] Nmap: 6200/tcp open oracle-tns
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
スキャンによりいくつかのオープンポートが特定され、この情報は現在 Metasploit データベースに格納されています。
サービスバージョン検出スキャンを db_nmap -sV で実行する
このステップでは、オープンポートで実行されているサービスの特定のバージョンを特定するための、より詳細なスキャンを実行します。サービスバージョンを知ることは、潜在的な脆弱性を見つける上で非常に重要です。-sV フラグは、Nmap でバージョン検出を有効にします。
msfconsole プロンプトで以下のコマンドを実行します。Nmap はバージョン情報を取得するために各オープンポートと対話する必要があるため、このスキャンは前のスキャンよりも少し時間がかかります。
db_nmap -sV localhost
出力は SYN スキャンよりも詳細になります。バージョン検出プローブによって収集された情報が含まれる新しい VERSION 列に注目してください。
[*] Nmap: Starting Nmap 7.94 ( https://nmap.org ) at ...
[*] Nmap: Nmap scan report for localhost (127.0.0.1)
[*] Nmap: Host is up (0.00011s latency).
[*] Nmap: Other addresses for localhost (not scanned): ::1
[*] Nmap: Not shown: 997 closed tcp ports (reset)
[*] Nmap: PORT STATE SERVICE VERSION
[*] Nmap: 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
[*] Nmap: 5432/tcp open postgresql PostgreSQL DB 14.10 (Ubuntu 14.10-0ubuntu0.22.04.1)
[*] Nmap: 6200/tcp open unknown
[*] Nmap: Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 6.78 seconds
この新しい情報も自動的にデータベースに追加され、検出されたホストとそのサービスのレコードが更新されます。
hosts コマンドでデータベース内の検出済みホストを一覧表示する
このステップでは、スキャン中に検出されたホストを表示するために Metasploit データベースをクエリする方法を学びます。hosts コマンドは、現在のワークスペースに保存されているすべてのホストの概要を提供します。
msfconsole プロンプトで hosts コマンドを実行します。
hosts
出力は、見つかったすべてのホストをリストするテーブルになります。localhost のみをスキャンしたため、1 つのエントリが表示されます。
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
127.0.0.1 localhost Linux Linux device
このコマンドは、プロジェクトワークスペースで識別され保存されたすべてのターゲットをすばやく確認する方法です。
services コマンドで検出されたサービスを一覧表示する
このステップでは、services コマンドを使用して、データベース内のホストで検出されたオープンポートとサービスに関する詳細情報を表示します。このコマンドは、バージョン検出スキャンを実行した後に特に役立ちます。
msfconsole プロンプトで services コマンドを実行します。
services
出力には、見つかったすべてのサービスの詳細なテーブルが表示されます。ポート、プロトコル、サービス名、およびステップ 3 で収集したバージョン情報がどのように含まれているかに注目してください。
Services
========
Host Port Proto Name State Info
---- ---- ----- ---- ----- ----
127.0.0.1 22 tcp ssh open OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
127.0.0.1 5432 tcp postgresql open PostgreSQL DB 14.10 (Ubuntu 14.10-0ubuntu0.22.04.1)
127.0.0.1 6200 tcp unknown open
services コマンドを使用すると、ターゲットシステム上のすべての潜在的な侵入口をすばやく確認できます。これは、セキュリティ評価の次のフェーズを計画する上で基本的な部分です。
まとめ
この実験では、Metasploit Framework 内でポートスキャンを実行する基本的な方法を習得しました。
まず、プロジェクトを整理するための専用ワークスペースを設定しました。次に、db_nmap コマンドを使用して、高速な TCP SYN スキャン (-sS) と、より詳細なサービスバージョン検出スキャン (-sV) の両方を実行しました。最後に、hosts および services コマンドを使用して Metasploit データベースをクエリし、自動的に保存されたスキャン結果を確認する方法を学びました。
このワークフローは、ペネトレーションテストおよびセキュリティ分析における情報収集フェーズの基盤となります。


