セキュリティ診断の学習環境
- Metasploitable2 -
この記事では、Metasploitable2の特徴を解説しつつ、VirtualBoxへのインストール手順や使い方を初心者にも分かりやすく解説しています。
Metasploitable2とは
Metasploitable2は、ペネトレーションテストやセキュリティのトレーニングを行うための脆弱な仮想マシン(VM)です。この仮想マシンは、やられアプリとして開発されており、セキュリティエンジニアやホワイトハッカーがリアルな脆弱性環境で効果的なテストやトレーニングを実施できるよう設計されています。主に、Kali Linuxや他のセキュリティ診断ツールと組み合わせて使用されることが多く、特に有名なMetasploit Frameworkの練習用として利用されます。
Metasploitable2はUbuntuをベースに構築されており、さまざまな脆弱性が意図的に組み込まれています。これにより、ユーザーは多種多様な攻撃シナリオを試すことができ、現実世界のセキュリティリスクに対する理解を深めることができます。
Metasploitable2の読み方
「メタスプロイタブル・ツー」と読みます。「メタスプロイト」とは、ペネトレーションテスト用のフレームワークである「Metasploit」を指し、それに「able」という表現が付いた名前です。この名前から、Metasploitを用いたテストに最適なプラットフォームであることが分かります。
Metasploitable2の主な特徴
豊富な脆弱性
初心者から上級者まで学べるよう、数多くの脆弱性が意図的に組み込まれています。例えば、Webアプリケーション、データベース、ネットワークサービスなどの多岐にわたる脆弱性を学習できます。
安心して学べる環境
たとえ学習目的や善意であっても、他人が所有するサーバーやシステムに対して無断で脆弱性診断を行う行為は、不正アクセス禁止法等の法律に抵触する恐れがあります。Metasploitable2のような学習環境を利用することで、安心・安全にセキュリティ技術を学ぶことができます。
軽量設計
Linuxベースで軽量なため、VirtualBoxやVMwareなど仮想化ソフトウェア上で簡単にセットアップが可能です。PCリソースを多く消費しないため、手軽に利用できます。
実践的なペネトレーションテスト環境
Metasploitable2は、Metasploit Frameworkなどのセキュリティ診断ツールと連携して使用することを前提としています。これにより、実際の攻撃シナリオをシミュレートし、エクスプロイトやポストエクスプロイトのテクニックを実践的に学ぶことができます。
Metasploitable2とMetasploitable3の違い
Metasploitable2には後継としてMetasploitable3があります。Metasploitable3はWindowsとLinuxの両方の環境で動作し、さらに多くの脆弱性が追加されています。Metasploitable2はシンプルな構成であるため、ペネトレーションテストの入門者やセキュリティトレーニングの初期段階での利用に適していますが、Metasploitable3ではより複雑な攻撃シナリオに対応した演習が可能です。
| 項目 | Metasploitable2 | Metasploitable3 |
|---|---|---|
| 基盤となるOS | Ubuntu Linux 8.04 | WindowsとUbuntuの2種類が選択できる |
| セットアップの難易度 | 簡単(イメージファイルをダウンロードし起動するだけ) | やや難しい(VagrantやPackerのセットアップが必要) |
| 脆弱性の数 | 基本的な脆弱性が多数 | より現代的で多様な脆弱性が追加 |
| 対象者 | 初心者やシンプルな環境で学びたい人向け | 中級者以上 |
Webアプリケーション診断には適さない
Metasploitable2は、ネットワークやOSレベルの脆弱性学習用に設計された仮想マシンのため、Webアプリケーション診断の学習には適しません。
Webアプリケーション診断の学習には、OWASP BWAがおすすめ。OWASP BWAは、複数の脆弱なWebアプリケーションをまとめたUbuntuベースの仮想マシンです。
| Metasploitable2 | OSやサービス(FTP、SSH、Samba、MySQLなど)の脆弱性 |
| OWASP BWA | SQLインジェクション、クロスサイトスクリプティング(XSS)、CSRF、セッション管理 など |

インストール環境
この記事では、Windows10に構築している仮想環境にMetasploitable2をインストールします。
・インストール環境
| OS | Windows10 Pro 22H2(64bit) |
|---|---|
| CPU | Intel Core i7 |
| メモリ | 32GB |
| 仮想化ソフト | Oracle VirtualBox 7.1.12 |
Metasploitable2のダウンロード
Metasploitable2は、オープンソースのダウンロードサイト「SourceForge.net」にて配布されています。

- Filesタブが選択されていることを確認。
- metasploitable-linux-2.0.0.zipをクリックし、Zipファイル(825MB)をダウンロード。
- ダウンロードしたZipファイルを解凍。(Metasploitable.vmdkが含まれています。)
Metasploitable2をVirtualBoxにセットアップ
Metasploitable2をVirtualBoxにインストール
まず、Metasploitable2の仮想マシンをVirtualBoxに作成します。
新規アイコンをクリック

「名前とオペレーティングシステム」を設定

設定例
| 名前 | Metasploitable2 |
|---|---|
| フォルダー | ご自身の環境に応じて設定 |
| タイプ | Linux |
| Subtype | Ubuntu |
| バージョン | Ubuntu(64-bit) |
「自動インストール」は変更なし

「ハードウェア」は変更なし

「ハードディスク」を設定
すでにある仮想ハードディスクファイルを使用するを選択し、フォルダアイコンをクリックします。

仮想マシンのハードディスクイメージを選択
追加アイコンをクリックし、事前に解凍しておいたMetasploitable.vmdkファイルを選択します。


完了ボタンをクリック
追加したMetasploitable.vmdkが選択されていることを確認し、完了ボタンを押下します。

Metasploitable2が追加されたことを確認

VirtualBoxのネットワーク設定
Metasploitable2には多数の脆弱性が意図的に含まれているので、外部ネットワークから隔離し、VirtualBox内のプライベートネットワーク環境で稼働させます。
VirtualBoxのネットワークアダプターを確認
VirtualBoxのメニューより、ファイル-ツール-ネットワークマネージャーを選択し、ホストオンリーネットワークを確認します。

Metasploitable2を設置するネットワークをまだ構築していない場合は、作成アイコンを押して、新しいネットワークアダプターを作成してください。

Metasploitable2のネットワークアダプターを設定
対象の仮想マシンMetasploitable2を選択した状態で、設定アイコンを押下して、設定画面を開きます。

Expert-ネットワークを選択し、アダプター1の割り当てを「NAT」から「ホストオンリーアダプター」に変更します。

OKボタンを押下
設定が完了したら、OKボタンをクリックし、VirtualBoxのネットワーク設定を完了します。

以下の手順に従い、設定内容を確認
Metasploitable2-詳細を選択します。

ネットワークの詳細を表示します。

アダプター1にホストオンリーアダプターが設定されていることを確認します。

Metasploitable2を起動・ログイン
Metasploitable2を起動
対象の仮想マシンMetasploitable2を選択した状態で、起動アイコンをクリックし、Metasploitable2を起動します。

新規ウィンドウが自動的に立ち上がりますので、Metasploitable2の起動完了を待ちます。


Metasploitable2にログイン
デフォルトのログインID/パスワードは、msfadmin/msfadminです。

キーボード設定を日本語キーボードに変更
Metasploitable2の初期状態では、英語キーボード設定になっています。日本語キーボードを使用する場合、キーボード配列を日本語配列に変更します。
Metasploitable2のベースOSを確認
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04
Release: 8.04
Codename: hardyMetasploitable2はUbuntu 8.04をベースにした非常に古い環境です。そのため、古典的で最も簡単な方法を用いてキーボード設定を行います。
キーボード配列を日本語キーボードに変更
$ sudo loadkeys jp
Loading /usr/share/keymaps/jp.map.bz2キーボード設定を永続化
上記のコマンドを実行すると、一時的に日本語キーボードが有効になりますが、Metasploitable2を再起動すると英語キーボードに戻ります。再起動後も日本語キーボードを維持したい場合は、起動スクリプトにキーボード設定を追加します。
$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
nohup /usr/bin/rmiregistry >/dev/null 2>&1 &
nohup /usr/bin/unrealircd &
rm -f /root/.vnc/*.pid
HOME=/root LOGNAME=root USER=root nohup /usr/bin/vncserver :0 >/root/vnc.log 2>&1 &
nohup /usr/sbin/druby_timeserver.rb &
/bin/loadkeys jp
exit 0viなどのエディタを使って、/etc/rc.localの最終行exit 0の直前に/bin/loadkeys jpを追記します。
Metasploitable2のネットワーク設定
現在のネットワーク設定を確認
デフォルトではDHCPが設定されています。
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcpDHCPから固定IPアドレスに変更
viなどのエディタを使って、/etc/network/interfacesを編集します。
例.192.168.10.101/24の場合
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.10.101
netmask 255.255.255.0ネットワークインターフェースを再起動
$ sudo /etc/init.d/networking restartIPアドレスが反映されたことを確認
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 08:00:27:0e:b7:7f brd ff:ff:ff:ff:ff:ff
inet 192.168.10.101/24 brd 192.168.10.255 scope global eth0
inet6 fe80::a00:27ff:fe0e:b77f/64 scope link
valid_lft forever preferred_lft foreverMetasploitable2の疎通確認
例.ホストOS(Windows 10)からの疎通確認
C:\>ping -n 3 192.168.10.101
192.168.10.101 に ping を送信しています 32 バイトのデータ:
192.168.10.101 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.10.101 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.10.101 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.10.101 の ping 統計:
パケット数: 送信 = 3、受信 = 3、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms例.他のゲストOS(Kali Linux)からの疎通確認
$ ping -c 3 192.168.10.101
PING 192.168.10.101 (192.168.10.101) 56(84) bytes of data.
64 bytes from 192.168.10.101: icmp_seq=1 ttl=64 time=0.761 ms
64 bytes from 192.168.10.101: icmp_seq=2 ttl=64 time=0.492 ms
64 bytes from 192.168.10.101: icmp_seq=3 ttl=64 time=0.537 ms
--- 192.168.10.101 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2047ms
rtt min/avg/max/mdev = 0.492/0.596/0.761/0.117 msMetasploitable2の使い方
一般的な使い方として、まずはポートスキャンを実施し、開いているポートや稼働中のサービスを特定します。これには、Nmapなどのスキャニングツールが役立ちます。このプロセスを通じて、対象システムの構造を把握し、脆弱性を特定・分析するための準備を行います。
例.Kali LinuxからMetasploitable2に対して、ポートスキャンを実行
$ nmap 192.168.10.101
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-30 14:55 JST
Nmap scan report for 192.168.10.101
Host is up (0.00029s latency).
Not shown: 977 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 08:00:27:0E:B7:7F (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds21番ポートや22番ポートなど、代表的なポートが開放されていることが確認できるので、それぞれのサービスが抱える脆弱性を洗い出し、想定される攻撃シナリオを検証します。
例えば、FTPサービスでは認証情報が脆弱である場合が想定されます。また、SSHサービスにおいては古い暗号化プロトコルが使用されているケースも考えられます。
こうしたケースを前提に、Metasploitのようなセキュリティ診断ツールを活用し、脆弱性の攻撃シナリオを体験することで、攻撃者の視点を学ぶことができます。このような実践的なアプローチは、より堅牢なセキュリティ対策を実施するための貴重な経験となります。
以下の記事では、Metasploitable2を用いてセキュリティ診断ツールの実践的な使い方を詳しく解説しています。あわせてご覧ください。
Metasploitable2を終了・再起動
Metasploitable2を終了する
$ sudo shutdown -h nowMetasploitable2を再起動する
$ sudo shutdown -r now