見出し画像

Metasploitable3のVMとコンテナ比較

Metasploitable3のVM(仮想マシン)とコンテナの場合の動作比較をするため、環境構築したいと思います。単純な話、同じことができるのであればコンテナでいいでしょ、という理屈です。あくまで、攻撃シナリオが同様に遂行できるかという視点です。

今回、コンテナの準備に使ったコマンド類をまとめておきます。書いてて最後の方はごちゃごちゃしてしまったので・・・まず結論ありきで言うと、最終的にはこの環境イメージが出来上がってれば、立ち上げには1分かからないですし、リセット(立ち上げ直し)も同様にできました。やっぱり「使い捨て」「繰り返し」利用する環境としては非常に使いやすいと思います。

・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

Metasploitable3コンテナでMySQLを立ち上げるとこまでは以前の記事で書きましたが、同様のことを他のサービスに対して実行していきます。実行してないと、こんな事態になります。

root@f0be7622fc66:/# nmap -sV -Pn -T4 -p 1-65535 -oX metasploitable3container.xml 172.17.0.2
Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-14 23:51 UTC
Nmap scan report for 172.17.0.2
Host is up (0.000026s latency).
Not shown: 65533 closed ports
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.7
3306/tcp open  mysql   MySQL (unauthorized)
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: Host: 172.17.0.2

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.40 seconds

見事に、立ち上げたMySQLとApacheだけの検出になりました。正しい動きすぎて清々しい、間違えて一個ぐらい立ち上がってくれたらいいのに。どんなサービスが動かせるのかなというのは、Metasploitable側で/etc/init.dでも見てあげれば良いですかね。本当は、Dockerコンテナだけどもsystemd-なんちゃらとかのパッケージ入れて、/sbin/init指定で起動してあげるとかすると、システムコンテナ的になって一気に起動してくれる可能性はあるのでは・・・?とふと思いついた。けどまあコンテナそのものの検証はどこかでやりましょう。あ、ubuntu14だと起動はSysVinitかな?気になってしまった。いかんいかん・・・。

スクリーンショット 2020-02-15 9.15.26

これで、VM側で動いていたサービスを起動させていってみます。試しにProftpdを起動してみます。

Metasploit3コンテナ)
root@0a6771f65349:/etc/init.d# service proftpd start
Starting proftpd.

(Kali linuxコンテナ)
root@f0be7622fc66:/# nmap -sV -Pn -T4 -p 1-65535 -oX metasploitable3container.xml 172.17.0.2
Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-15 00:17 UTC
Nmap scan report for 172.17.0.2
Host is up (0.000025s latency).
Not shown: 65532 closed ports
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     ProFTPD 1.3.5
80/tcp   open  http    Apache httpd 2.4.7
3306/tcp open  mysql   MySQL (unauthorized)
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: Host: 172.17.0.2; OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.27 seconds

こいつ・・・動くぞ・・・!
この調子で、他のサービスも立ち上げていってみます。ちょっと苦労したのはWEBrickかな。

スクリーンショット 2020-02-15 11.31.24

ということで、だいぶVMに近づけることができたのではないでしょうか。むしろ、多く立ち上がってますが、前述の通り「同じ脆弱性が再現できて、攻撃シナリオが遂行できる」が重要なので、この状態で脆弱性検査とか、脆弱性を突く行動を実施してみようと思います。OpenVASを使おうと思うので、。Kaliへのインストールと、コンテナでも準備します。そろそろストレージが心配・・・BOOTCAMP領域潰すかな・・・。

(Kali linuxへのOpenVASのインストール)・・・Kali Linuxマシンのターミナル
$ apt install openvas
$ openvas-setup

(OpenVASコンテナの起動)・・・Macのターミナル
$ docker run -d -p 443:443 --name openvascontainer mikesplain/openvas

こんな感じでWebGUIが使えます。

スクリーンショット 2020-02-15 13.02.31

こちらはKali Linuxのほうです。USERとPASSはセットアップの最後に出てますのでコピペ。ちなみにコンテナの方は(指定して起動もできますが)USERもPASSもadminで入れます。

しかしOpenVASよ・・・貴様容量を食い過ぎだ・・・。

スクリーンショット 2020-02-15 13.10.01

圧倒的存在感でストレージを逼迫させにかかっています。ちょっと限界を迎えそうなので、VirtualBoxのファイルは外付けのストレージに移すことにしました。大きなストレージのMacは高くて買えない。貧乏学生です。

・・・
・・・・・・
・・・・・・・・・・・・・・・・失敗!!

なぜかVMのKali Linuxのほうは起動しなくなってしまった。まあ、インポートしなおせばいいんだけどもさ。Metasploitable3のほうは問題なく移設できました。そんなこんなしてる間に、コンテナのほうは脆弱性スキャンしておいてみています。

スクリーンショット 2020-02-15 14.32.22

いろいろ出てくる気持ちいい・・・。多分一発でVMと数が合うことはないですが、足りないもの精査していけばいずれ同じにできるでしょう。ちなみに、アクティビティモニタでプロセス比較してみたのがこちらですが、OpenVAS動かしてるときに撮ればよかったです。そもそも、見方あってるのでしょうか。どうやって比較したらいいかな・・・。使用率見るのってUbuntuのほうがなんか見やすいのありましたよね。

スクリーンショット 2020-02-15 15.09.11

今のうちに、ZAPもコンテナでできるようにしておきます。Kali Linuxにも入れておきたい。ただ、Macがヒイヒイがんばってるのでこのぐらいで勘弁しといてやる・・・・!

$ docker run -d -u zap -p 8080:8080 -p 8090:8090 -i owasp/zap2docker-stable zap-webswing.sh

これで、ブラウザからアクセスできるコンテナ版ZAPができあがりました。ちょっとこのあたりやってることが入り乱れていてすいません。ホストからlocalhost:8080にアクセスしてadmin,pwdでwebswingに入れば使えます。もしくはlocalhost:8080/zapでも行ける?ブラウザの中でウィンドウが動かせるというなんかちょっと不思議な感覚ですが、使えそうですZAP。

スクリーンショット 2020-02-15 15.57.46

早速スキャンしてみようと思ったのですが、なぜか文字入力できない。謎です。でもコピペはできたので、スキャン開始。今回はポリシーはデフォルトです。

スクリーンショット 2020-02-15 16.02.11

検出結果がこちら。日本語にもできるみたいですが、めんどくさいのでこのままで。フォントの問題とかなんかあるみたいです。

スクリーンショット 2020-02-16 1.07.11

環境の用意と検出ができれば、あとは検出できなかったものとかを見て設定を直してあげたりしていけば良いです。また、「脆弱性を突いてみる」の記事でやったようなことも淡々とやっていけたら良いと思います。なるべくイコールの環境を作るのが目標です。

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