0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Computer SocietyAdvent Calendar 2024

Day 13

脆弱性実験環境を構築してみる【前編】

Last updated at Posted at 2024-12-19

Computer Society では、サークル員が執筆した Advent Calendar を公開しています。他の記事も充実した内容になっていますので、ぜひ読んでみてください!

前の記事

この記事

次の記事

はじめに

こんにちは。ストーンチョコです。
最近、情報セキュリティに対するモチベが高まってきており、「マイ脆弱性実験環境を構築したい!」という気持ちに駆られていました。
実験環境として、 VirtualBox でもよいのですが、クラスタで運用できるという拡張性やブラウザベースで管理することができるというメリットを備えた Proxmox を利用したいと考えていました。
そのため、Proxmox 用のサーバーを買おうかなと迷っていたのですが、大きいサーバーを置くスペースはないし、実家住みということでファンがうるさいと叱られそうだな、、と悩んでいました。そこで、先輩に相談したところ、「ミニPCでも Proxmox 立てられるぞ!」という温かいアドバイスをいただいたので、早速ミニPCを買って実験環境を実際に作ってみました。
同じく Proxmox 上で実験環境を構築してみたいという方に、少しでもお役に立てれば幸いです。また、実験環境の構築イメージが湧かない方や、現時点で構築予定のない方にも、雰囲気を掴んでいただけるよう、画像を多く取り入れて分かりやすくまとめています。
こういう構築はまだ不慣れな部分が多いので、デタラメなことを書いてしまっていたらコメントを頂けるとありがたいです!

この記事は前編と後編で分かれています。

目次

1.Proxmox をミニPCに入れる【前編】
2.Proxmox で Kali の仮想マシンを立てる【前編】
3.Proxmox で Metasploitable 2 の仮想マシンを立てる【前編】
4.攻撃実践【後編】
5.cloudflared を用いて外部接続できるようにする【後編】

前提

ミニ PC について

ミニ PC のスペックは以下の通りです。価格は4万円超えない程度で購入できました。

・OS: Windows 11 が予め入っている状態。
・CPU: AMD Ryzen 7
・メモリ: 16GB DDR4
・ストレージ: 512GB NVMe SSD

構築図

次の図のような感じで構築する流れです。

proxmox構成図.drawio.png

Kali は外部ネットワークにつなぐことができるようにし、Metasploitable 2 は Kali からしか繋げられないようにしています。

前提知識

・Proxmox Virtual Environment (Proxmox VE):オープンソースのサーバ仮想化プラットフォーム。KVM(カーネルベースの仮想マシン) と LXC(Linuxコンテナ) をサポートしており、仮想マシンやコンテナを簡単に管理することができる。

・Kali:セキュリティテストやペネトレーションテスト用に特化した Linux ディストリビューション。

・Metasploitable 2:脆弱性の学習やテストのために使用される意図的に脆弱性を含む仮想マシン。Metasploitable の改良版。

前置きは以上です。それでは構築フェーズに入っていきましょう!

1.Proxmox をミニPCに入れる

まずは、Proxmox 環境を整えていきます。
はじめに、他の PC で 公式ダウンロードページ から iso イメージをダウンロードします。私の場合は、Windows 11 を利用しているので、Rufus という Windows 向けの軽量で使いやすいブート可能USBドライブ作成ツールを用いて、USBブートメディアを作成しました。

↓ Rufus でダウンロードした ISO イメージを選択する。
スクリーンショット 2024-12-19 002932.png

準備が整った USB をミニ PC にさして電源をつけると次のような画面がでてきます。

スクリーンショット 2024-12-19 003243.png

私は Graphical で設定を進めました。出身国、パスワード、ネットワークなどの設定を行っていけばインストール準備完了となります。ネットワーク設定の際、

・WSL における route コマンドでゲートウェイの IP アドレスを確認する。
・ルーターに接続して ARP テーブルを覗いたり、ping で確認したりして、重複のない IP アドレスを割り当てる。

などを意識しました。また、言語は英語に設定し、ネットワーク設定において有線の eno1 を選択しました。

インストールが完了した後は一旦電源を切って、USB を抜き、もう一度電源を入れると別の画面が出てきます。

スクリーンショット 2024-12-19 004240.png

この一番上を選択すると、別の PC で表示された URL で Proxmox のマネジメントコンソールに入るように言われるので、URL でアクセスします。ここで、アクセスできない場合、次のようなことを試してみるといいかもです。

・一旦 Proxmox に root でログイン(パスワードは自分で作成したもの)し、/etc/network/interfaces から、自分の設定したネットワーク設定に誤りがないか確認する。
・ルーターの管理画面に移り、ARP テーブルに自分が設定した Proxmox の IP アドレスがないか確認する。
・LAN ケーブルを指す場所が間違えていないか、ethtool などを用いて確認する。

アクセスすると、次のような画面が出てくるかもしれませんが、「詳細情報を表示しない」→「〇〇にアクセスする」を押せば大丈夫です。

スクリーンショット 2024-12-18 150119.png

記事を書く際においては、グローバル IP を漏らさないように注意しましょう。

アクセスすると以下のような画面が出てくるので root でログインします。

スクリーンショット 2024-12-18 150141.png

ログインすると次のようなものが出てきます。

スクリーンショット 2024-12-19 131309.png

初期設定ではエンタプライズ契約向けのリポジトリが設定されているので、無償版リポジトリを設定する必要があります。

[Responsitories] から [Add] をクリックし、[No-Subscription] のリポジトリを追加しましょう。

スクリーンショット 2024-12-19 010053.png

その後、元々あった2つの enterprise のリポジトリを無効化しましょう。

スクリーンショット 2024-12-19 010104.png

これでリポジトリの設定に関しては終了です。

また、[Datacenter] -> [Two Factor] から2段階認証を設定できるので、こちらも気になる方は設定しておくとよいでしょう。

スクリーンショット 2024-12-19 132110.png

以上で Proxmox の設定は完了です!

2.Proxmox で Kali の仮想マシンを立てる

それでは次に、Kali の仮想マシンを立てていきましょう。

まず Kali の 公式ダウンロードページ に飛びます。Proxmox をダウンロードしたときとは異なり、別の PC 上にiso イメージをダウンロードする必要はなく、なんとダウンロード用のリンクを用いて Proxmox に直接ダウンロードすることができます。(便利!)

↓ 公式ダウンロードページ
スクリーンショット 2024-12-18 172630.png

上の写真の [Installer] を左クリックせずに右クリックしてリンクをコピーしましょう。

そうしたら、[local] のストレージを選択し、[ISO Images] から [Download from URL] を押して、コピーした URL を張り付けてダウンロードしましょう。

スクリーンショット 2024-12-19 133911.png

スクリーンショット 2024-12-18 172802.png

ダウンロード出来たら、新たに Kali の仮想マシンの設定を行っていきます。
ホーム画面右上の [Create VM] をクリックしましょう。

まずは General の設定ですが、Node, VM ID はそのままで、Name を分かりやすいものに設定します。

スクリーンショット 2024-12-19 134845.png

次に OS の設定ですが、[ISO image] に先ほどの ISO イメージを指定します。それ以外はそのままで大丈夫です。

スクリーンショット 2024-12-18 173500.png

System の設定もそのままで大丈夫です。

スクリーンショット 2024-12-18 173555.png

Disk の設定ですが、Disk size でディスク容量を設定しましょう。メインの仮想マシンとなるので、私は少し多めの 128 GB にしました。

スクリーンショット 2024-12-19 135336.png

CPU の設定で、ソケット数とコア数の設定をしましょう。Ryzen 7 なので、コア数は全体的に8個ありますが、Proxmox には2コアを残しつつ、攻撃対象の仮想マシンは1~2コアを割り当てて基本的に1台、多くても2台立てようと考えていたので、CTF のときでも使いたいなという理由もあることから少し欲張りめの4コアに設定しました。

スクリーンショット 2024-12-18 175300.png

メモリも同じような理由で少し多めの 8 GB にしました。

スクリーンショット 2024-12-18 175455.png

Network の設定はそのままでも大丈夫です。デフォルトで NAT になっているようです。

スクリーンショット 2024-12-18 175527.png

以上で設定は完了です。以下のように kali の仮想マシンが立ちました。

スクリーンショット 2024-12-18 175630.png

[Start] で仮想マシンを起動させ、[Console] から Kali の画面に飛びましょう。

Kali の設定をしていきます。設定に関しては省略します。

スクリーンショット 2024-12-18 181204.png

設定を済ませ、いろいろとインストールが終わると以下のようなホーム画面が表示されます!

スクリーンショット 2024-12-18 183122.png

そのままだと比率が少しおかしいので、[Settings] -> [Display] で 1920 × 1080 に変えることをお勧めします。

スクリーンショット 2024-12-18 183243.png

スクリーンショット 2024-12-18 183448.png

これで Kali の準備は完了です!

3.Proxmox で Metasploitable 2 の仮想マシンを立てる

同様に Metasploitable 2 も入れていきます。

Metasploitable となっていますが、Metasploitable 2 は Metasploitable の改良版なので、2 を省くこともあるようです(多分)。

厄介なことに、Metasploitable 2 は iso イメージでダウンロードすることができません。ダウンロードすると、zip ファイルが入っており、それを解凍すると vmdk ファイルが入っています。

スクリーンショット 2024-12-19 143210.png

この vmdk という形式は、仮想マシン(VM)の仮想ディスクイメージを保存するためのファイル形式の1つで、VMwareが開発した形式であり、VMware や VirtualBox でよく用いられています。この形式のまま Proxmox にインポートすることもできるのですが、Proxmox ではその形式よりも qcow2 形式としてインポートすることが推奨されています。主な理由としては、VMware や VirtualBox と異なり、Proxmox VE は KVM をベースにしており、qcow2 形式は KVM に最適化されているからです。

というわけで、まずこの vmdk 形式を qcow2 形式に変換していきましょう。
この変換には qemu-utils パッケージを必要とします。Proxmox にデフォルトでそのパッケージが含まれているので、vmdk ファイルを転送してから ssh で入って変換するのもよいですが、元々 qemu-utils がノート PC に入っていたので、変換してから転送を行いました。

qemu-utils パッケージが入っていない場合は、パッケージをインストールしましょう。以下の例は APT の場合です。

$ sudo apt update
$ sudo apt install qemu-utils

その後、qemu-img を用いて、先ほどダウンロードした vmdk 形式のファイルを qcow2 形式に変換し、proxmox 環境に転送しましょう。

$ qemu-img convert -f vmdk Metasploitable.vmdk -O qcow2 metasploitable.qcow2
$ scp metasploitable.qcow2 root@<Proxmox の IP アドレス>:/var/lib/vz/template

/var/lib/vz/template は Proxmox VE 環境におけるテンプレートファイルや ISO イメージを格納するためのデフォルトのディレクトリです。

また、proxmox に ssh 接続し、得られた qcow2 のディスクイメージを Metasploitable 2 の仮想マシン(ID を 101 に設定している)のストレージに登録しましょう。一旦、ストレージは local-lvm にしておき、後ほどこのストレージと仮想マシンを紐づけることにします。

qm importdisk 101 /var/lib/vz/template/metasploitable.qcow2 local-lvm

Proxmox に qcow2 ファイルを転送することができたので、Metasploitable 2 の仮想マシンの設定を行っていきます。qcow2 ファイルに OS やディスクの情報が既に含まれているので、今回の設定では OS やディスクの設定は特に行う必要がありません。

また、Metaspoitable 2 は外部ネットワークとつなげず、Kali との内部ネットワークで完結させてしまいたいので(セキュリティ面の問題で)、仮想マシンの設定を行う前に新たにブリッジを作成する必要があります。

[Network] -> [Create] -> [Linux Bridge] から新たにブリッジを作成しましょう。

スクリーンショット 2024-12-18 194059.png

基本的に IP アドレスは、プライベート IP であるかつ、外部ネットワークのものと被らなければ問題ありません。

スクリーンショット 2024-12-18 204401.png

これでブリッジが作成できたので、 Kali で設定したときと同じような流れで仮想マシンの設定をしていきます。

以下の折りたたみを展開するとその設定の流れを見ることができます。

仮想マシンの設定方法

スクリーンショット 2024-12-18 185127.png

スクリーンショット 2024-12-18 185142.png

スクリーンショット 2024-12-18 185236.png

スクリーンショット 2024-12-18 185506.png

スクリーンショット 2024-12-18 185525.png

スクリーンショット 2024-12-18 185549.png

スクリーンショット 2024-12-18 204648.png

設定を終えた後、[Hardware] -> [Add] -> [Hard Disk] でディスクの設定を行いましょう。ディスクイメージを登録しておいた local-lvm というストレージを指定し、Bus/Device は VirtIO Block に設定しましょう。VirtIO Block とは仮想マシン(ゲストOS)と仮想ストレージ(ディスク)間のデータ転送を効率に行うためのインターフェースのことです。

スクリーンショット 2024-12-19 160237.png

また、仮想マシンが起動時にどのデバイスからオペレーティングシステム(OS)を読み込むかを決定するためのブート順序を次のように設定しましょう。

スクリーンショット 2024-12-18 213111.png

これで仮想マシンを起動する準備ができました。起動してログインした後の画面は以下のようになります。
デフォルトのユーザーとパスワードは msfadmin です。

スクリーンショット 2024-12-18 213404.png

これで Metasploitable 2 の仮想マシンの準備もできました!
しかし、ネットワークの設定が不十分なので、Kali と Metasploitable 2 の両方でネットワーク設定を行っていきます。

↓ ネットワークの設定をこのように行っていきたい
proxmox構成図.drawio (2).png

まず、 Metasploitable 2 のネットワーク設定についてですが、IP アドレスはデフォルトで DHCP により自動割り当てされるという設定になっているため、/etc/network/interfaces にて静的に設定する必要があります。

↓ 元々の設定
スクリーンショット 2024-12-18 214834.png

↓ 設定後(gateway は省略可能)
スクリーンショット 2024-12-18 214921.png

設定した後、以下のコマンドで設定を反映させましょう。Metasploitable 2 は Systemd でなく SysVinit を利用している関係上、systemctl コマンドを用いることはできないので注意してください。

$ sudo /etc/init.d/networking restart

また、Kali の方では次のように設定します。

↓ 設定後
スクリーンショット 2024-12-18 220618.png

忘れずに、設定を反映させましょう。

$ sudo systemctl restart networking

最後に ping で疎通できているかを確認します。

↓ Metaspoitable 2 から Kali へ
スクリーンショット 2024-12-19 164227.png

↓ Kali からルーターへ & Kali から Metaspoitable 2 へ
スクリーンショット 2024-12-19 164131.png

↓ 別の PC から Kali へ & 別の PC から Metasploitable 2 へ
スクリーンショット 2024-12-19 164459.png

この結果から以下のことがわかります。
・Metasploitable 2 は Kali と疎通可能
・Kali は外部ネットワークと Metasploitable 2 と疎通可能。
・192.168.40.0/24 に属するデバイスからの Metasploitable 2 への通信は遮断されており、結果として Metasploitable 2 は外部ネットワークからのアクセスを防ぐ形になっている。

無事に期待通りにネットワークの設定ができていますね!

まとめ

Proxmox 環境を整えてからその上で Kali と Metasploitable 2 の仮想マシンを立てていきました。後編では実際に Kali を用いて Metasploitable 2 内の脆弱性に対して実際に攻撃しかけていきたいと思います。

最後までお読みいただき、ありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?