This page looks best with JavaScript enabled

Metasploitable3の環境構築

 ·  ☕ 4 min read

Metasploitable3 とは

Metasploitable3はわざと脆弱性をもたせたマシンです。このマシンに対してToolの検証やexploitを行います。

普段ペンテストの勉強などをしている際に、有用なツールを見つけたとしてもぶっつけ本番で行うわけには行きません。
テストをする場所を作り、そこで使い方の勉強をしていったほうがいいです。

https://github.com/rapid7/metasploitable3

環境構築

構築環境&バージョン

それでは、metasploitable3の環境を構築していきます。
自分の環境とそれらのバージョンは以下の通りです。

  • Host OS: Manjaro Linux x86_64
  • VirtualBox: 6.1.14
  • Vagrant: 2.2.10
  • Packer: 1.6.2

基本的にはgithubに書いてあることをなぞっていくので、よく読んでおくことを勧めます。

インストール

Packer Install

Packerのインストールです。
自分はManjaro Linuxを使っているのでpacmanで一発で入ります。

1
sudo pacman -S packer

Vagrant Install

ありがたいことにvagrantもありました。
こちらもインストールしていきます。

1
sudo pacman -S vagrant

Vagrant Reload Plugin Install

vagrantのプラグインであるVagrant Reload Pluginをインストールしていきます。

1
vagrant plugin install vagrant-reload

ここまでは下準備です。
それではMetasploitableの環境を構築していきます。

Metasploit3 Install

今回はrapid7で提供されているビルド済みのイメージを使います。

自身でビルドする場合もgithubページに書いてあるのでそちらをなぞって構築してもいいでしょう。

1
2
3
mkdir metasploitable3-workspace
cd metasploitable3-workspace
curl -O https://raw.githubusercontent.com/rapid7/metasploitable3/master/Vagrantfile && vagrant up

ただ、2020年9月現在では、Windowsの環境構築の際にエラーが吐かれてしまい、止まってしまいました。

How to Fix

止まってしまったときのエラー分が以下になります。

1
2
3
4
5
6
7
There was an error loading a Vagrantfile. The file being loaded
and the error message are shown below. This is usually caused by
an invalid or undefined variable.

Path: /home/username/.vagrant.d/boxes/rapid7-VAGRANTSLASH-metasploitable3-win2k8/0.1.0-weekly/virtualbox/Vagrantfile
Line number: 0
Message: undefined local variable or method `win2k8'

win2k8がないみたいなことを言われていますね。

調べてみると解決法が見つかりました。

ここからは推測になりますが、rapid7にて提供されているVagrantfileが若干古いor名前が違うみたいで、最初にダウンロードしたVagrantfileとの整合性があっていないように感じます。

そこをちょちょちょいと修正してあげるとうまく行きます。

https://github.com/rapid7/metasploitable3

Vagrantfileの編集を行います。

1
nvim ~/.vagrant.d/boxes/rapid7-VAGRANTSLASH-metasploitable3-win2k8/0.1.0-weekly/virtualbox/Vagrantfile

編集後のファイルの中身が以下になります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# The contents below were provided by the Packer Vagrant post-processor

Vagrant.configure("2") do |config|
  config.vm.base_mac = "080027D0BF18"
end


# The contents below (if any) are custom contents provided by the
# Packer template during image build.
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.2"

Vagrant.configure("2") do |config|
  config.vm.synced_folder '.', '/vagrant', disabled: true
  config.vm.define "win2k8" do |win2k8|
    win2k8.vm.box = "rapid7/metasploitable3-win2k8"
    win2k8.vm.hostname = "metasploitable3-win2k8"
    config.vm.communicator = "winrm"

    # Admin user name and password
    config.winrm.username = "vagrant"
    config.winrm.password = "vagrant"

    config.vm.guest = :windows
    config.windows.halt_timeout = 15

    config.vm.network :forwarded_port, guest: 3389, host: 3389, id: "rdp", auto_correct: true
    config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh", auto_correct: true

    config.vm.provider :virtualbox do |v, override|
        #v.gui = true
        v.customize ["modifyvm", :id, "--memory", 2048]
        v.customize ["modifyvm", :id, "--cpus", 2]
        v.customize ["setextradata", "global", "GUI/SuppressMessages", "all" ]
        v.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
    end

    config.vm.provider :vmware_fusion do |v, override|
        #v.gui = true
        v.vmx["memsize"] = "2048"
        v.vmx["numvcpus"] = "2"
        v.vmx["ethernet0.virtualDev"] = "vmxnet3"
        v.vmx["RemoteDisplay.vnc.enabled"] = "false"
        v.vmx["RemoteDisplay.vnc.port"] = "5900"
        v.vmx["scsi0.virtualDev"] = "lsilogic"
    end

    config.vm.provider :vmware_workstation do |v, override|
        #v.gui = true
        v.vmx["memsize"] = "2048"
        v.vmx["numvcpus"] = "2"
        v.vmx["ethernet0.virtualDev"] = "vmxnet3"
        v.vmx["RemoteDisplay.vnc.enabled"] = "false"
        v.vmx["RemoteDisplay.vnc.port"] = "5900"
        v.vmx["scsi0.virtualDev"] = "lsisas1068"
    end

    win2k8.vm.provider "libvirt" do |v|
      v.memory = "2048"
      v.cpus = "2"
      v.video_type = 'qxl'
      v.input :type => "tablet", :bus => "usb"
      v.channel :type => 'unix', :target_name => 'org.qemu.guest_agent.0', :target_type => 'virtio'
      v.channel :type => 'spicevmc', :target_name => 'com.redhat.spice.0', :target_type => 'virtio'
      v.graphics_type = "spice"

      # Enable Hyper-V enlightenments: https://blog.wikichoon.com/2014/07/enabling-hyper-v-enlightenments-with-kvm.html
      v.hyperv_feature :name => 'stimer',  :state => 'on'
      v.hyperv_feature :name => 'relaxed', :state => 'on'
      v.hyperv_feature :name => 'vapic',   :state => 'on'
      v.hyperv_feature :name => 'synic',   :state => 'on'
    end
  end
end

最後に立ち上げて終了です。

1
vagrant up

ネットワーク設定

自分の環境では、VirtualBoxで攻撃用のマシンを構築しています。

攻撃用のマシンの構築手順ですが、記事にしてあるのでこちらを参考にしてみてください。

https://blog.yuk1h1ra.me/posts/2020/09/install-parrot-security-os/

いま作ったMetasploitableとのネットワークの設定をしてあげます。
攻撃用のマシンの設定を開き、ネットワークからホストオンリーアダプタを選択します。
ネットワークはMetasploitable3と同じネットワークにしてあげて完了です。

おわりに

今回は脆弱性をあえてもたせた仮想マシンの紹介と構築方法についてまとめました。

このマシンを使って、ペンテストツールの検証や、自身の勉強に役立てていこうと思います。

Share on

yuk1h1ra
WRITTEN BY
yuk1h1ra
Security Engineer