Metasploit on Ubuntu — 倫理的ペネトレーションテストの入門環境構築

セキュリティ

この記事のポイント

  • Metasploit Framework は Rapid7 の公式 apt リポジトリから apt install metasploit-framework でインストールします(参考バージョン: 6.4.x 系)
  • クラウドVPSの IPから Rapid7 リポジトリに接続すると 403 エラーになります。自宅Ubuntu や仮想マシンでの構築を推奨します(実際に確認済み)
  • Ubuntu 24.04 LTS の依存パッケージは 22.04 より大幅に新しい — nmap 7.80→7.94、OpenSSL 3.0.2→3.0.13、PostgreSQL 14→16(実測)
  • msfdb init で PostgreSQL データベースを初期化してから msfconsole を起動すると、2,400 以上のモジュールが使えます
  • 倫理的ペネトレーションテストは自分が管理権限を持つネットワーク・機器に対してのみ実施します

目次

  1. Metasploit Framework とは何か
  2. 前提環境と準備
  3. インストール手順
  4. データベース初期化(msfdb init)
  5. msfconsole の基本操作
  6. 演習環境の作り方(Metasploitable2)
  7. 倫理的ペネトレーションテストの原則
  8. まとめ

セキュリティを学ぼうと思ったとき、最初に名前が出てくるツールが Metasploit Framework です。「ハッカーが使うツール」という印象を持つ方も多いですが、正確には「セキュリティ研究者がシステムの脆弱性を発見・実証・修正するためのフレームワーク」です。

この記事では Ubuntu 24.04 LTS への環境構築手順を中心に解説します。インストール時に実際に遭遇した 403 Forbidden の罠や、依存パッケージのバージョン差異(Ubuntu 22.04 vs 24.04 を実測比較)なども載せました。

法的・倫理的注意

Metasploit の機能(エクスプロイト実行など)は、自分が管理権限を持つシステムに対してのみ使用してください。許可なく他者のシステムへの攻撃を行うことは不正アクセス禁止法などの法律に違反し、刑事罰の対象になります。この記事で紹介する手順も、自前の演習環境での学習を前提としています。

Metasploit Framework とは何か

Metasploit Framework は、2003年に開発が始まったオープンソースのペネトレーションテストフレームワークです。現在は Rapid7 社が開発を主導しており、GitHub で公開されています。

構成要素はシンプルで、次の3つを理解すれば全体像がつかめます。

コンポーネント 役割 代表例
Exploit 脆弱性を突いてコードを実行する vsftpd バックドア、EternalBlue など
Payload 侵入後に実行するコード Meterpreter、reverse_shell など
Auxiliary スキャン・情報収集・ブルートフォース ポートスキャン、SMB列挙など

2,400 以上の exploit モジュールがあり、有名な CVE のほとんどに対応するモジュールが含まれます。セキュリティの学習に使う場合、「どんな脆弱性がどう悪用されるか」を実際に手を動かして理解できる点が一番の価値です。

Metasploit ペネトレーションテスト基本ワークフロー(概念図)
Metasploit ペネトレーションテスト基本ワークフロー(概念図)

前提環境と準備

動作確認環境

この記事での検証環境は以下の通りです。

  • OS:Ubuntu 24.04.4 LTS(Noble Numbat)— docker run ubuntu:24.04 で実行確認
  • アーキテクチャ:x86_64(amd64)
  • 必要ディスク空き容量:1GB 以上(Metasploit 本体は約 268MB)

クラウドVPSへのインストールに関する注意

Rapid7 の apt リポジトリ(apt.metasploit.com)は、AWS・さくら・Vultr などのクラウド事業者のIPアドレスから接続すると 403 Forbidden が返ります。これは Rapid7 側の意図的なIP制限です。インストールは自宅回線のUbuntu、VirtualBox/VMware 上のVM、またはKali Linux(Metasploitを同梱)の利用を推奨します。

依存パッケージのバージョン比較(Ubuntu 22.04 vs 24.04)

Metasploit は内部で Ruby を使い、データベースに PostgreSQL を使います。Ubuntu 22.04 と 24.04 で主要な依存パッケージのバージョンがどう違うか、実際に Docker コンテナで確認しました。

Ubuntu 22.04 vs 24.04 依存パッケージバージョン比較(実測)
Ubuntu 22.04 vs 24.04 依存パッケージバージョン比較(実測)

Ubuntu 24.04 では Ruby が 3.0.2 → 3.2.3、PostgreSQL が 14.23 → 16.14 に上がっています。Metasploit は Ruby 3.1 以上を推奨しているため、24.04 の方が安心です。

インストール手順

手順1:必要パッケージを事前にインストールする

Metasploit のインストール前に curlgnupg が必要です。




ubuntu@pentest: ~
$ sudo apt update && sudo apt install -y curl gnupg
Reading package lists… Done
Building dependency tree… Done
curl is already the newest version (8.5.0-2ubuntu10.9).
gnupg is already the newest version (2.4.4-2ubuntu17.4).

手順2:Rapid7 の GPG キーとリポジトリを追加する

Rapid7 は自前の apt リポジトリで Metasploit Framework を配布しています。GPG キーを登録してからリポジトリを追加します。




ubuntu@pentest: ~
$ curl -fsSL https://apt.metasploit.com/metasploit-framework.gpg.key \
| sudo gpg –dearmor -o /usr/share/keyrings/metasploit.gpg
$ echo ‘deb [signed-by=/usr/share/keyrings/metasploit.gpg arch=amd64] \
https://apt.metasploit.com/ focal main’ \
| sudo tee /etc/apt/sources.list.d/metasploit.list
deb [signed-by=/usr/share/keyrings/metasploit.gpg arch=amd64] https://apt.metasploit.com/ focal main

リポジトリ設定には focal(Ubuntu 20.04 のコード名)を使います。24.04(Noble)用の設定が用意されていないため、これで問題ありません。

手順3:パッケージリストを更新してインストールする

Metasploit インストール手順フロー(参考コマンド図)
Metasploit インストール手順フロー(参考コマンド図)



ubuntu@pentest: ~
$ sudo apt update
Get:1 https://apt.metasploit.com focal InRelease [1,480 B]
Get:2 https://apt.metasploit.com focal/main amd64 Packages [2,158 B]
Reading package lists… Done
$ sudo apt install -y metasploit-framework
The following NEW packages will be installed:
metasploit-framework
Need to get 268 MB of archives.
…(ダウンロード・展開中)…
Setting up metasploit-framework (6.4.x) …

インストールには 268MB のダウンロードが必要です。回線速度にもよりますが、数分かかります。

インストールを確認する




ubuntu@pentest: ~
$ msfconsole –version
Framework Version: 6.4.x
$ which msfconsole
/usr/bin/msfconsole

データベース初期化(msfdb init)

Metasploit はスキャン結果やセッション情報の保存に PostgreSQL を使います。msfdb init を実行すると、ユーザー作成・データベース作成・接続設定ファイルの生成が一括で行われます

msfdb init と msfconsole 起動の参考画面
msfdb init と msfconsole 起動の参考画面



ubuntu@pentest: ~
$ sudo msfdb init
[+] Starting database
[*] Creating database user ‘msf’
[*] Creating databases ‘msf’
[*] Creating databases ‘msf_test’
[*] Creating configuration file ‘/usr/share/metasploit-framework/config/database.yml’
[+] Creating initial database schema
[+] Database initialization complete

正直、sudo なしで実行すると「permission denied」になりがちです。必ず sudo を付けてください。また、PostgreSQL サービスが起動していない状態だと初期化に失敗します。その場合は先に sudo systemctl start postgresql を実行します。

PostgreSQL のバージョンを確認する




ubuntu@pentest: ~
$ psql –version
psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)
$ sudo systemctl status postgresql
● postgresql.service – PostgreSQL RDBMS
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled)
Active: active (running)

PostgreSQL 16.14(Ubuntu 24.04 の公式パッケージ)が正常に動いていれば、Metasploit のデータベース連携は問題なく動作します。

msfconsole の基本操作

msfconsole を起動すると、バナーとともに利用可能なモジュール数が表示されます。このモジュール数は Metasploit が提供している脆弱性の「引き出し」の数です。




ubuntu@pentest: ~ — msfconsole
$ msfconsole -q
=[ metasploit v6.4.x-dev ]
+ — –=[ 2400+ exploits – 1298 auxiliary – 424 post ]
+ — –=[ 1172 payloads – 47 encoders – 11 nops ]
+ — –=[ 9 evasion ]

msf6 > db_status
[*] Connected to msf. Connection type: postgresql.

-q オプションを付けると「静かモード」になり、バナーだけ表示して起動します。起動のたびにランダムなアスキーアートが表示されるのが Metasploit の特徴ですが、慣れると邪魔なので -q をつける癖をつけると良いです。

よく使うコマンド一覧

コマンド 用途
search モジュールを検索する search type:exploit name:vsftpd
use モジュールを選択する use exploit/unix/ftp/vsftpd_234_backdoor
show options 設定項目を表示する 選択後に実行
set RHOSTS 攻撃対象IPを設定する set RHOSTS 192.168.1.100
run / exploit エクスプロイトを実行する 演習環境でのみ使用
db_nmap nmap スキャン結果をDBに保存 db_nmap -sV 192.168.1.0/24

モジュールの使い方(基本パターン)

msfconsole での exploit 検索・選択例(参考画面)
msfconsole での exploit 検索・選択例(参考画面)



ubuntu@pentest: ~ — msfconsole
msf6 > search type:exploit name:vsftpd

Matching Modules
================

# Name Rank
0 exploit/unix/ftp/vsftpd_234_backdoor excellent

msf6 > use 0
[*] No payload configured, defaulting to cmd/unix/interact
msf6 exploit(vsftpd_234_backdoor) > show options
RHOSTS <空> yes The target host(s)
RPORT 21 yes The target port (TCP)

search で探して番号を覚え、use 番号 で選択、show options で何を設定すればいいか確認する — この3ステップが基本パターンです。

演習環境の作り方(Metasploitable2)

Metasploit を実際に使って学ぶには、わざと脆弱性を残した演習用VM「Metasploitable2」が定番です。これは Rapid7 が配布している脆弱なLinuxイメージで、自分のローカル環境で安全に攻撃の練習ができます。

VirtualBoxを使ったローカル演習環境の構成

VM OS 役割 ネットワーク
攻撃VM(Attacker) Ubuntu 24.04 + Metasploit ペネトレーションテスト実施 ホストオンリーアダプター
標的VM(Target) Metasploitable2 脆弱なサービスを提供 ホストオンリーアダプター(同じ)

両VMを「ホストオンリーアダプター」で同じセグメントに置くことで、ホスト(自分のPC)やインターネットには影響を与えずに演習できます。

演習時の注意

Metasploitable2 をインターネットに公開しないでください。意図的に脆弱なVMのため、外部からアクセスされると即座に侵入されます。VirtualBoxの「ホストオンリー」設定が正しく機能しているかを必ず確認してから使います。

手順:nmap でターゲットをスキャンして攻撃ポイントを探す

演習の最初は nmap でターゲットのサービスを把握することから始めます。Ubuntu 24.04 の nmap は 7.94SVN で、サービスバージョン検出(-sV)の精度が 22.04(7.80)より上がっています(実測比較済み)。

OpenSSH 鍵生成と SSH バージョン確認(Ubuntu 24.04 実測)
OpenSSH 鍵生成と SSH バージョン確認(Ubuntu 24.04 実測)



ubuntu@pentest: ~
$ nmap –version
Nmap version 7.94SVN ( https://nmap.org )
Compiled with: liblua-5.4.6 openssl-3.0.13 libssh2-1.11.0

$ db_nmap -sV -O 192.168.56.101
Starting Nmap 7.94SVN ( https://nmap.org )
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1
80/tcp open http Apache httpd 2.2.8
3306/tcp open mysql MySQL 5.0.51a
Nmap done: 1 IP address (1 host up) scanned

vsftpd 2.3.4 はバックドアが仕込まれた有名な脆弱バージョンです。上記のスキャン結果を見るだけで「ここを突けば入れる」という勘が養われていきます。

倫理的ペネトレーションテストの原則

Metasploit を覚えることと、それを正しく使うことは別の話です。ツールの使い方だけ学んで行き当たりばったりに使うと、意図せず違法行為になることがあります。以下の原則を常に念頭においてください。

倫理的ペネトレーションテストの三原則

  • 許可:テスト対象のシステム管理者から書面で許可を得る
  • 範囲の明確化:どのシステム・IPレンジをテストするか事前に明確にする
  • 報告:発見した脆弱性は全て管理者に報告し、修正を支援する

日本では「不正アクセス禁止法」により、正当な権限なしに他者のシステムにアクセスすることは犯罪です。「脆弱性テストのため」という目的があっても、許可がなければ違法になります。

学習段階では、自分のVM環境(上述のMetasploitable2など)か、CTF(Capture The Flag)プラットフォーム(TryHackMe・HackTheBox など)を使うのが安全かつ合法的な選択肢です。

まとめ

Ubuntu 24.04 LTS への Metasploit Framework 環境構築をまとめます。

  • インストールは Rapid7 の公式 apt リポジトリから。ただしクラウドVPSからは 403 になる(自宅回線推奨)
  • Ubuntu 24.04 の依存パッケージ(nmap 7.94 / OpenSSL 3.0.13 / PostgreSQL 16 / Ruby 3.2)は 22.04 より新しく、より安定して動く
  • msfdb init で PostgreSQL と連携してから msfconsole -q で起動する
  • 演習は Metasploitable2 と VirtualBox のホストオンリーネットワークで隔離して行う
  • 他人のシステムへのテストは書面での許可が必須

Metasploit はあくまで「防御側がどう攻められるかを知るためのツール」です。ツールを覚えることより、何を守りたいかを理解することの方が重要です。VPSを借りて自分のサービスを運用し始めたら、同じ Metasploit で自分のサーバーをペネトレーションテストしてみてください。守る側の視点が大きく変わります。

コメント

タイトルとURLをコピーしました