セキュリティテストの学習環境として人気の〝Metasploitable2〟。
この記事では、Metasploitable2の特徴を解説しつつ、VirtualBoxへのインストール手順や使い方を初心者にも分かりやすく解説します。
Metasploitable2とは
Metasploitable2は、ペネトレーションテストやセキュリティのトレーニングを行うための脆弱な仮想マシン(VM)です。この仮想マシンは、やられアプリとして開発されており、セキュリティエンジニアやホワイトハッカーがリアルな脆弱性環境で効果的なテストやトレーニングを実施できるよう設計されています。主に、Kali Linuxや他のセキュリティ診断ツールと組み合わせて使用されることが多く、特に有名なMetasploit Frameworkの練習用として利用されます。
Metasploitable2はUbuntuをベースに構築されており、さまざまな脆弱性が意図的に組み込まれています。これにより、ユーザーは多種多様な攻撃シナリオを試すことができ、現実世界のセキュリティリスクに対する理解を深めることができます。
Metasploitable2の読み方
「メタスプロイタブルツー」と読みます。「メタスプロイト」とは、ペネトレーションテスト用のフレームワークである「Metasploit」を指し、それに「able」という表現が付いた名前です。この名前から、Metasploitを用いたテストに最適なプラットフォームであることが分かります。
Metasploitable2の主な特徴
豊富な脆弱性
初心者から上級者まで学べるよう、数多くの脆弱性が意図的に組み込まれています。例えば、Webアプリケーション、データベース、ネットワークサービスなどの多岐にわたる脆弱性を学習できます。
軽量設計
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のセットアップが必要) |
脆弱性の数 | 基本的な脆弱性が多数 | より現代的で多様な脆弱性が追加 |
対象者 | 初心者やシンプルな環境で学びたい人向け | 中級者以上 |
インストール環境
この記事では、Windows10に構築している仮想環境にMetasploitable2をインストールします。
・インストール環境
OS | Windows10 Pro 22H2(64bit) |
---|---|
CPU | Intel Core i7 |
メモリ | 32GB |
仮想化ソフト | Oracle VirtualBox 7.1.4 |
Metasploitable2のダウンロード
Metasploitable2は、オープンソースのダウンロードサイト「SourceForge.net」にて配布されています。
metasploitable-linux-2.0.0.zipをクリックし、Zipファイルをダウンロードしてください。ダウンロードしたZipファイルを解凍すると、Metasploitable.vmdkが含まれています。
Metasploitable2をVirtualBoxにセットアップ
Metasploitable2をVirtualBoxにインストール
まず、Metasploitable2の仮想マシンをVirtualBoxに作成します。
新規アイコンをクリック

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

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

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

「ハードディスク」を設定
「すでにある仮想ハードディスクファイルを使用する」を選択し、フォルダアイコンをクリックして、事前に解凍しておいた「Metasploitable.vmdk」ファイルを追加します。


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

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

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

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

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

OKボタンを押下
設定が完了したら、OKボタンをクリックし、VirtualBoxのネットワーク設定を完了します。
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: hardy
Metasploitable2はUbuntu 8.04をベースにした非常に古い環境です。そのため、古典的で最も簡単な方法を用いてキーボード設定を行います。
キーボード配列を日本語キーボードに変更
$ sudo loadkeys jp
Loading /usr/share/keymaps/jp.map.bz2
キーボード設定を永続化
上記のコマンドを実行すると、一時的に日本語キーボードが有効になりますが、OSを再起動すると英語キーボードに戻ります。再起動後も日本語キーボードを維持したい場合は、起動スクリプトにキーボード設定を追加します。
$ sudo vi /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 0
/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 dhcp
DHCPから固定IPアドレスに変更
例.192.168.21.101/24の場合
$ sudo vi /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.21.101
netmask 255.255.255.0
gateway 192.168.21.1
ネットワークインターフェースを再起動
$ sudo /etc/init.d/networking restart
IPアドレスが反映されたことを確認
$ 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:f9:63:55 brd ff:ff:ff:ff:ff:ff
inet 192.168.21.101/24 brd 192.168.21.255 scope global eth0
inet6 fe80::a00:27ff:fef9:6355/64 scope link
valid_lft forever preferred_lft forever
Metasploitable2の疎通確認
例.ホストOS(Windows 10)からの疎通確認
C:\>ping -n 3 192.168.21.101
192.168.21.101 に ping を送信しています 32 バイトのデータ:
192.168.21.101 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.21.101 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.21.101 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.21.101 の ping 統計:
パケット数: 送信 = 3、受信 = 3、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms
例.他のゲストOS(Kali Linux)からの疎通確認
$ ping -c 3 192.168.21.101
PING 192.168.21.101 (192.168.21.101) 56(84) bytes of data.
64 bytes from 192.168.21.101: icmp_seq=1 ttl=255 time=0.779 ms
64 bytes from 192.168.21.101: icmp_seq=2 ttl=255 time=0.910 ms
64 bytes from 192.168.21.101: icmp_seq=3 ttl=255 time=1.95 ms
--- 192.168.21.101 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 0.779/1.211/1.946/0.521 ms
Metasploitable2の使い方
一般的な使い方として、まずはネットワークスキャンを実施し、開いているポートや稼働中のサービスを特定します。これには、Nmapなどのスキャニングツールが役立ちます。このプロセスを通じて、対象システムの構造を把握し、脆弱性を特定・分析するための準備を行います。
例.Metasploitable2にポートスキャンを実行
$ nmap 192.168.21.101
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-14 17:49 JST
Nmap scan report for 192.168.21.101
Host is up (0.016s latency).
Not shown: 977 filtered tcp ports (no-response)
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
Nmap done: 1 IP address (1 host up) scanned in 4.39 seconds
21番ポートや22番ポートなど、代表的なポートが開放されていることが確認できるので、それぞれのサービスが抱える脆弱性を洗い出し、想定される攻撃シナリオを検証します。
例えば、FTPサービスでは認証情報が脆弱である場合が想定されます。また、SSHサービスにおいては古い暗号化プロトコルが使用されているケースも考えられます。
こうしたケースを前提に、Metasploitのようなセキュリティ診断ツールを活用し、脆弱性の攻撃シナリオを体験することで、攻撃者の視点を学ぶことができます。このような実践的なアプローチは、より堅牢なセキュリティ対策を実施するための貴重な経験となります。
デフォラボで紹介する手法やツールは、ご自身が所有または管理する環境においてのみご利用ください。他者のサーバーやシステムに対して適用することは、法律に抵触する可能性があります。法令を遵守し、責任ある行動をお願いいたします。法律を守りながら、安心・安全にセキュリティを学び、知識とスキルを高めていきましょう。
Metasploitable2を終了・再起動
・Metasploitable2を終了する
$ sudo shutdown -h now
・Metasploitable2を再起動する
$ sudo shutdown -r now