iOS_の画像

Metasploitable3のVMとコンテナ比較 その2

前回、MacOS上で手軽にMetasploitable3やKali Linuxなどの環境を作ってみることを試してみましたが、ちゃんと同等の環境を構築するためにもうすこし踏み込んだ検証を行ったので、そのメモとして残しておきます。

環境

ハード
・(物理マシン)MacBook Pro 13inch 2017
・(CPU)2.3GHz INtel Core i5
・(メモリ)16GB 2133MHz LPDDR3
・(ストレージ)Trancend TS240GESD240C USB3.1 Gen2

ソフト
・(OS)Ubuntu18.04LTS
・(仮想化ソフト)VirtualBox 6.0.14
・(コンテナエンジン)Docker CE 18.09.2

使用イメージ
・Kali Linux 2019.2

・Metasploitable3 ub1404

・Kalilinux/kali-linux-docker

・r/metasploitable3(自作したコンテナイメージ)

・mikesplain/openvas

・owasp/zap2docker-stable

つらつらといろいろ並べてしまいましたが、要はVMおよびコンテナのMetasploitable3とKali Linux環境を、MacBookに接続したポータブルSSD上にインストールしたUbuntu上で動かしています、ということです。各種バージョンとかは最新で良いと思いますが、私はもともと使っていた環境に追加してたりなので、若干古いのも混ざってます。
USB3.1 Gen2はとても速いので、内臓ストレージにインストールされたOSとまったく遜色なく使えるのと、UEFI環境であれば別のWinマシンとかに接続しても起動できたりするので、非常に便利です。パーティションを2つに分けて、片方はexFATで使えるようにしてます。OSまるごとイメージバックアップを取っておくと、いろいろ検証したあとにもとに戻したり、別環境にデータ持って行ったりするのも非常に楽な上に、インターネット接続も勝手にさせずに内部で完結させるのもやり方によっては可能なので、研究用・勉強用にとても重宝しています。
ただし結構だらけた姿勢でやっててUSB抜けちゃったのが2回ほど・・・。停まります。カチ―ンとフリーズ。お気をつけて・・。このポータブル環境の作成ノウハウもメモ残せるとよさそうですね。

検証

まずはVirtualBoxに、Metasploitable3とKali Linuxマシンを作成します。Metasploitable3の構築はvagrantやpackerのインストールが必要ですが、他の環境で作ったマシンがあればそれを持ってきても良いと思います。というのを作ってから気づいた。

画像1

Metasploitable2マシンもあるのは以前使った名残です。今回は3とKaliを使っています。尚、KaliにはOpenVASとOWASP ZAPを追加インストールしてあります。

続いて、コンテナ環境の構築です。全部で4つのコンテナを作りました。前回の記事と同じですが、下記の内容になっています。

・Metasploitable3コンテナ
$ docker run -it --rm -d -p 10080:80 --name metasploitable3container r/metasploitable3 /bin/bash

・Kali Linuxコンテナ
$ docker run -it --rm -d  --name kalilinux kalilinux/kali-linux-docker /bin/bash
・コンテナへのフルパッケージのインストール・・・コンテナへログイン後
# apt install kali-linux-full

・OpenVASコンテナ(https://localhost:443 Username:admin Password:admin)
$ docker run -d -p 443:443 --name openvas mikesplain/openvas

・ZAPコンテナ(http://localhost:8080/zap/)
$ docker run -d -u zap -p 8080:8080 -p 8090:8090 -i owasp/zap2docker-stable zap-webswing.sh

全部起動するとこんな感じです。細かいですが。

画像2

ネットワーク環境は、ちょっといろいろ触っていて、DockerのブリッジをVirtualBoxのホストオンリーネットワークと通信できるようにしているので、VMとコンテナ間の通信もできちゃったりしてます。この辺はMacだとちょっといろいろ難しかったですが、Ubuntu環境なら比較的簡単にできるので、シームレスなネットワークを構築したいならお勧めです。ちなみにですが、Metasploitable3は通常pingが制限されてるようで、Kali LInuxとかホストからの呼びかけにはうんともすんとも言ってくれません。まあ特に必要無かったので設定はそのままです。以下はVMのMetasploitable3のネットワークの一部です。参考まで。

画像3

私はエンジニア経験がネットワークから入ったので、比較的このへんのことはさらっと書いてしまってますが、ハッキングラボ関連の呟きとか見てると、結構ネットワークで躓く人も多いのかなと思ってます。自身の環境・状況にうまく落とし込めてたらいいのですが、理解しないままやって意図せず外部に脆弱性検査しちゃったとか無いように気を付けましょう・・・。こういったセキュリティの演習環境では特に、今どこにいて、どこに対して何をやろうとしているのかをしっかり把握・理解しながら実行するのが重要だと思ってます。と、生意気に言ってみますごめんなさい。

まず、OpenVASでVMとコンテナそれぞれで脆弱性の検出を行います。行けるかなと思って同時にやってみたところ、唸りは上げてましたが問題無く終了しました。あとどっちも思ったより早い。Metasploitable2をやってた時より早く感じるんだけどなんでだろう?早いと逆に不安を覚えたりします。

検出結果(コンテナ)がこちら。VMのスクショ見当たらない・・・・撮ったと思ったのに・・・。

画像4

498項目が出てきました。同じCVE項目もあるので、CVEの数だともっと減ると思いますが、なかなかの数。Metasploitable2の時は300弱だったと思うので、かなり増えています。そして、VMのほうは500でした。おしいいいいいちょっとだけ!これ多分どこか設定とか直してあげると完全一致すぐ行けそうです。XMLとかCSVでデータを抜いてあるので、後ほど比較してみます。

続いてOWASP ZAPでの脆弱性検査ですが、こちらのKaliのスクショが見当たらない・・・ので、ちょっとUbuntu上にあるやつでも試してその画像を使います。

まずコンテナでの検出。

画像5

続いてVMでの検出。

画像6

少し見づらいとは思いますが・・・思いのほか・・いや、かなりの数が一致してる。これ、Metasplotable2でやったときよりも一致率は高そう。細かく見直して行けるレベルです!!ほぼ一緒!

かなり再現性が高いことは確認できました。Vulsとかその他脆弱性スキャナでも試してみたいところですが、まずはOpenVASで検出できた脆弱性を精査して、Metasploitモジュールなど使った攻撃テストを行ってみようと思います。

OpenVASで検出できたCVEを重複排除してみると、全部で375項目になりました。その中で、Metasploitのモジュールやその他のexploitモジュールがあり気軽に(?)攻撃テストができるのをいくつかピックアップしてみました。例えば以下のようなものがあります。

exploit-dbのはなんか絵が怖い・・・。ともあれ、こんな感じでPoCに使えるモジュールがいろいろ引っかかってきます。Proof of ConceptのほうのPoCですね。

宣伝もちゃっかり入れつつ、簡単なものから使って行ってみます。Kali LinuxでMetasploitを立ち上げて、使いたいモジュールを指定します。

画像9

Metasploitのスプラッシュは毎回違ってちょっと楽しいですよね。今回のはYA〇AWAみたいな・・・。

画像8

unrealircdのバックドアはもう、ホストを指定してあげるだけで簡単にリモートシェルが動いちゃうようなもので、VMでもコンテナでも問題無く動作しました。怖いですねこれ。もうこのバージョン使ってるだけで負けって感じがします。バージョンアップ大事。パッチあて大事。そう思ってもらったりするのもこういう演習の目的だったり。

こんな感じで、ひたすら攻撃テストを繰り返して行って、同じことができますよね!という確認です。脆弱性の検出方法や攻撃方法などまだ拡張の余地はありますが、たいていのことはできてしまうのではないでしょうか。逆に、できないことって何?って言ったときに、コンテナなのでハードウェアリソース絡みの攻撃の再現は、いろいろな手段でできなくは無いですがVMと同じではないとか言うことも多いと思います。

だいぶ順調に目的は達せられてきてますので、あとは自分の飽きとの戦いだ・・・・!

この記事が気に入ったらサポートをしてみませんか?