はじめに
Metasploit Framework は、セキュリティ専門家がペネトレーションテストや脆弱性検証に使用する強力なツールです。そのアーキテクチャの核心となるコンポーネントの一つが、バックエンドデータベース(通常は PostgreSQL)です。
Metasploit は単なるエクスプロイトの集合体ではなく、ワークフロープラットフォームであるという点を強調しておく必要があります。データベース、モジュール、セッション、そしてワークスペースはすべて、複雑化するプロジェクトを管理するために存在しています。
Metasploit にデータベースを統合することで、評価中に収集したデータ(発見されたホスト、開いているポート、実行中のサービス、抽出された認証情報など)を効率的に保存、検索、管理できるようになります。ワークスペースを活用すれば、プロジェクトやターゲットネットワークごとにデータを論理的に分離でき、ペネトレーションテストのワークフローをクリーンかつ整理された状態に保つことが可能です。
このような構造がなければ、大規模な評価では情報の整理がすぐに困難になります。データベースは、場当たり的なコマンド操作を、後から参照や関連付けが可能な「永続的な知識」へと変えてくれます。
この実験では、PostgreSQL データベースの初期化、Metasploit の主要インターフェース(msfconsole)の操作、プロジェクトワークスペースの管理、そして組み込みのスキャンツールを使用したデータベースへのデータ投入方法を学びます。
PostgreSQL データベースの初期化
このステップでは、Metasploit 用の PostgreSQL データベースを初期化します。データベースは Metasploit Framework アーキテクチャの重要なコンポーネントです。設定、ワークスペース、発見されたホスト、サービス、認証情報などを保存し、ペネトレーションテスト中の効率的なデータ管理を可能にします。
まず、PostgreSQL サービスが実行されていることを確認します。以下のコマンドを使用してサービスを開始してください。
sudo systemctl start postgresql
次に、Metasploit データベースを初期化します。このコマンドは新しいデータベースを作成し、Metasploit 専用のデータベースユーザーを設定し、ホームディレクトリに必要な設定ファイルを生成します。
msfdb init
データベースが正常に作成および設定されたことを示す出力が表示されるはずです。設定は ~/.msf4/database.yml という隠しディレクトリに保存されます。
msfconsole の起動と DB ステータスの確認
このステップでは、Metasploit Framework コンソール(msfconsole)を起動し、PostgreSQL データベースに正常に接続されていることを確認します。
msfconsoleは、フレームワークの司令塔と考えるのが最適です。データベースが接続されると、コンソールで行った操作は、そのプロジェクトの共有内部モデルを充実させるために活用されます。
msfconsoleは、Metasploit Framework を操作するための主要なコマンドラインインターフェースです。すべてのモジュール、ペイロード、データベース機能にアクセスするための集中コンソールを提供します。
ターミナルで以下のコマンドを実行し、クワイエットモード(大きな ASCII アートの起動バナーをスキップするモード)でコンソールを起動します。
msfconsole -q
コンソールが読み込まれると、プロンプトが msf6 > に変わり、Metasploit 環境内に入ったことがわかります。
コンソール内で以下のコマンドを入力し、データベースの接続状態を確認します。
db_status
以下のような出力が表示され、接続が確認できるはずです。
[*] Connected to msf. Connection type: postgresql.
msfconsoleは次のステップのために開いたままにしておいてください。
ワークスペースの作成と管理
このステップでは、ワークスペースの作成と管理方法を学びます。ワークスペースを使用すると、ペネトレーションテストのデータを論理的に分離できます。例えば、クライアントごとやターゲットネットワークごとに異なるワークスペースを作成することで、ホストや認証情報が混在するのを防ぐことができます。
msfconsoleのプロンプト(msf6 >)の中にいることを確認してください。もし終了してしまった場合は、msfconsole -qと入力して再起動してください。
現在のワークスペースを表示するには、以下を入力します。
workspace
アスタリスク(*)が付いた default ワークスペースが表示されます。これが現在アクティブなワークスペースです。
次に、-a(追加)フラグを使用して project_alpha という名前の新しいワークスペースを作成します。
workspace -a project_alpha
コンソールは自動的に新しく作成されたワークスペースに切り替わります。workspaceコマンドを再度実行して確認できます。
workspace
出力に * project_alpha と表示され、新しいワークスペースがアクティブになり、データを保存する準備が整ったことが確認できます。
ワークスペースへの Nmap スキャン結果のインポート
このステップでは、Metasploit 内から直接 Nmap スキャンを実行し、ワークスペースのデータベースにデータを投入します。
Metasploit には db_nmap コマンドが用意されています。これは標準の Nmap ツールを実行しつつ、スキャン結果(ホスト、ポート、サービス)をアクティブなワークスペースのデータベースに自動的にインポートするものです。
msfconsole内(project_alphaワークスペースにいることを確認してください)で、ローカルマシン(127.0.0.1)に対してクイックスキャンを実行します。この実験環境では PostgreSQL が実行されていることがわかっているため、デフォルトポートである 5432 をスキャンします。
db_nmap -sV -p 5432 127.0.0.1
スキャンが完了するまでしばらく待ちます。完了したら、データベースに自動保存された発見済みのホストを確認できます。
hosts
スキャン中に発見された特定のサービスや開いているポートを確認するには、services コマンドを使用します。
services
ホスト IP、ポート、プロトコル、状態、サービス名を表示する構造化されたテーブルが表示されます。ポート 5432 をスキャンしたため、HTTP や SSH ではなく、PostgreSQL 関連のサービスエントリが表示されるはずです。
これで、データベースの初期化、ワークスペースの管理、スキャンデータのインポートが完了しました。Metasploit コンソールを終了して通常の Linux ターミナルに戻るには、以下を入力します。
exit
まとめ
おめでとうございます!「アーキテクチャとデータベースのセットアップ」の実験を無事に完了しました。
Metasploit Framework 用の PostgreSQL データベースを初期化し、msfconsoleを起動してデータベース接続を確認する方法を学びました。さらに、プロジェクトデータを分離するためのワークスペースの作成と管理を習得し、db_nmapを使用してターゲットをシームレスにスキャンし、結果を直接データベースにインポートする方法を実践しました。これらの基礎スキルは、整理された効率的なペネトレーションテストのワークフローを維持するために不可欠です。



