はじめに
Metasploit Framework は、ペネトレーションテストやセキュリティリサーチに使用される強力なツールです。データベースなしでも使用できますが、PostgreSQL のようなデータベースに接続することで、その能力は大幅に向上します。データベースを使用すると、ホスト、検出されたサービス、脆弱性、収集された証拠 (loot) に関する情報を保存できます。これにより、大規模な評価におけるデータ管理がはるかに効率的になります。
この実験 (lab) では、Metasploit データベースを構成および使用するための基本的な手順を学びます。データベースサービスを初期化し、接続を確認し、ワークスペースを使用してプロジェクトを整理する方法を学びます。
msfdb init による Metasploit データベースの初期化
このステップでは、Metasploit データベースを初期化します。Metasploit Framework には、PostgreSQL データベースを管理するための便利なスクリプト msfdb が含まれています。init コマンドは、PostgreSQL サービスを開始し、Metasploit 専用のデータベースとユーザーを作成し、フレームワークが自動的に使用できるように接続情報を保存します。
システムサービスを管理し、データベースユーザーを作成するため、このコマンドは sudo を付けて実行する必要があります。
ターミナルを開き、以下のコマンドを実行してください。
sudo msfdb init
データベースが初期化されていることを示す出力が表示されます。このプロセスにはしばらく時間がかかる場合があります。出力は以下のようになり、データベースユーザー、データベース、および設定ファイルが作成されたことを確認できます。
[+] Starting database
[+] Creating database user 'msf'
[+] Creating database 'msf'
[+] Creating database 'msf_test'
[+] Creating configuration file '/home/labex/.msf4/database.yml'
[+] Creating initial database schema
このコマンドは一度だけ実行すれば十分です。その後、データベースは Metasploit が使用できる状態になります。
db_status によるデータベース接続ステータスの確認
このステップでは、先ほど初期化したデータベースに Metasploit が正常に接続されていることを確認します。これを行うには、まず Metasploit と対話するための主要なインターフェースである Metasploit Framework コンソールを起動する必要があります。
ターミナルに msfconsole と入力してコンソールを起動します。
msfconsole
しばらくすると、コンソールが準備完了であることを示す msf6 > プロンプトが表示されます。
次に、データベース接続ステータスを確認するには、Metasploit コンソール内で db_status コマンドを使用します。
db_status
接続が成功すると、確認メッセージが表示されます。
[*] postgresql connected to msf
これにより、Metasploit がデータベースに正しく接続され、データの保存準備ができたことが確認できます。次のステップのために、ここでは msfconsole 内に留まります。
プロジェクト用の新しいワークスペースの作成
このステップでは、新しいワークスペースの作成方法を学びます。ワークスペースは Metasploit データベースの最も便利な機能の 1 つです。これらはデータの独立したコンテナとして機能し、異なるペネトレーションテストのエンゲージメントやプロジェクトを互いに完全に分離して保持することができます。デフォルトでは、default という名前のワークスペースから開始します。
新しいワークスペースを作成するには、workspace コマンドに -a フラグ("add" の略)を付け、その後に新しいワークスペースの名前を指定します。ここでは project_alpha という名前のワークスペースを作成してみましょう。
msfconsole プロンプト内で、以下のコマンドを実行します。
workspace -a project_alpha
Metasploit はワークスペースが追加されたことを確認し、自動的に新しいワークスペースに切り替えます。
[*] Added workspace: project_alpha
[*] Workspace: project_alpha
これで、収集するすべてのデータ(ホスト情報、スキャン結果、認証情報など)は project_alpha ワークスペース内に保存され、default ワークスペースとは分離されます。
利用可能なすべてのワークスペースを一覧表示する
このステップでは、データベース内の利用可能なすべてのワークスペースを一覧表示します。これは、現在のすべてのプロジェクトを確認し、現在作業中のプロジェクトを特定するのに役立ちます。
すべてのワークスペースを一覧表示するには、引数なしで workspace コマンドを実行するだけです。
msfconsole プロンプト内で、以下のコマンドを実行します。
workspace
出力には、すべてのワークスペースのリストが表示されます。現在のワークスペースはアスタリスク (*) でマークされます。前のステップで作成した default ワークスペースと project_alpha ワークスペースの両方が表示されるはずです。
default
* project_alpha
このコマンドは、プロジェクトの概要を素早く把握し、現在のコンテキストを追跡するのに役立ちます。
異なるワークスペース間を切り替える
このステップでは、異なるワークスペース間を切り替える方法を学びます。複数のプロジェクトに取り組む場合、特定のエンゲージメントに関連付けられたデータにアクセスするために、アクティブなワークスペースを頻繁に変更する必要があります。
別のワークスペースに切り替えるには、workspace コマンドの後にアクティブにしたいワークスペースの名前を指定します。ここでは、default ワークスペースに戻ってみましょう。
msfconsole プロンプト内で、以下のコマンドを実行します。
workspace default
Metasploit はメッセージで切り替えを確認します。
[*] Workspace: default
workspace コマンドを再度実行することで、切り替えを確認できます。アスタリスク (*) が default の隣に表示されているはずです。
workspace
* default
project_alpha
これで、作業コンテキストを正常に切り替えました。Metasploit コンソールを終了し、通常のターミナルに戻るには、exit と入力します。
exit
まとめ
この実験を完了された皆さん、おめでとうございます!本実験では、プロフェッショナルなエンゲージメントにおいてフレームワークを効果的に使用するための重要な要素である、Metasploit データベースの管理に関する必須スキルを習得しました。
本実験では、以下の項目を扱いました。
sudo msfdb initを使用した Metasploit 用の PostgreSQL データベースの初期化。msfconsoleを使用した Metasploit コンソールの起動。db_statusコマンドを使用したデータベース接続の確認。workspace -a <name>を使用した新規で独立したプロジェクト環境の作成。workspaceコマンドを使用した利用可能なすべてのワークスペースの一覧表示。workspace <name>を使用した異なるワークスペース間の切り替え。
データベースとワークスペースを適切に使用することで、ペネトレーションテスト活動中の整理整頓と効率化に役立ちます。


