iOS_の画像__1_

VulnHubのVMイメージコンテナ化#1

Twitterで、 VulnHubについて片っ端からコンテナ化してみたいとつぶやいてみたら思いのほか反応があったのと、ちょっといくつか仕事(ちゃんと働いてます!)やらなんやら面倒な件がとりあえず落ち着きそうなので、次の私生活ミッションに突入前の一服でやってみます。

環境は相変わらずmacでやってますが、windowsでももちろんできます。VirtualBoxとDockerは使える状態にしておいてください。・・・あ、Windowsだと同時に使えなかったので、もしやるなら切り替えてでしょうか。めんどくさいな・・・。実は途中までwindowsでやってます。でもめんどくさくなってMacに変えちゃいました。途中から急にSSのテイスト変わるのは気にしないでください。

今回やってみるのはこちらのイメージ。

スクリーンショット 2020-03-03 0.43.51

なぜこれにしたかは特にないです。片っ端から、ということで、なんでも良かったの。ダウンロードしてVirtualBoxで起動させます。vmdkファイルなので、VMWare Playerのほうがやりやすいかもですが。入れてなかったので面倒だっただけです。面倒って言ってばっかり。VirtualBoxの場合は仮想マシンの新規作成でタイプ選んだりしなくちゃいけないですけど、わからなければそれっぽいの選んでおいて後で起動しなかったら変えて行けばOKだと思います。起動すればいいんだよ起動すれば!

画像2

仮想マシンイメージは、ダウンロードしてきたものを展開しておいて選択します。「すでにある仮想ハードディスクファイルを使用する」から選べるようになっているので、vmdkファイルを指定して仮想マシンを作成します。

画像3

画像4

仮想マシンができたら起動しますが、ネットワークはホストオンリーアダプターを設定しておくとかして、通信できるようにしておきます。コンテナイメージを作る際、tarで固めたファイルをホスト側に持ってきたいので、何らかの方法で通信できるようにしておきたいです。また、そもそも最初はログインするパスワードすらわかりませんので、どうにかこうにかして仮想マシンをrootでごにょごにょできるようにしておかないと、ただ城を眺める歩兵状態です・・・。

画像5

というわけで起動しました。ここからログインしていろいろやっていきたいわけです。もちろんSSHでログインとかでもなんでもよいので、とにかくそのステージに立ちたい!という想いのもと、攻略していきます。このへんのノウハウはネット上で先人達が頑張ってくれているので・・・あれをああしてこうやって・・・という3分クッキング的な端折り方でログインできたとします!できあがったのがこちら!

スクリーンショット 2020-03-03 0.32.21

はい。コンテナ作成用のtarを作成できました。この辺の手順はこちらと一緒なのでご確認ください。

出来上がったファイルは、scpでホスト側に持ってきても良いですし、/var/www/htmlとかに置けば、ブラウザからダウンロードしてきてもいけます。とにかく持ってくればよいのです。その後、dockerイメージを作成してみます。

スクリーンショット 2020-03-03 0.36.51

785MB。まあまあですね。実は#1のイメージも作ってみましたがこちらは578MB。みんな軽量でえらいです。それに比べてMetasploitable3ったら肥えちゃってまあ・・・。

あとはもうdocker側だけの問題になってきますので、コンテナ起動→コンテナ内で必要なサービス起動という流れです。どんなのが使えるかは、話私はいつも/etc/init.d以下のものを探ってますが、他に良い方法があるかもしれません。少なくとも、VM側で動いてるサービスを事前に見ておいて同じものを立ち上げてみるというのが大前提になるかと思います。

root@a6a8a2c11ea2:/etc/init.d# ls -la
total 296
drwxr-xr-x 2 root root  4096 Apr 15  2011 .
drwxr-xr-x 1 root root  4096 Mar  2 10:39 ..
-rw-r--r-- 1 root root  1335 Jan 23  2009 README
-rwxr-xr-x 1 root root  5736 Jun 18  2009 apache2
-rwxr-xr-x 1 root root  2653 May  6  2009 apparmor
-rwxr-xr-x 1 root root   969 Feb 20  2007 atd
-rwxr-xr-x 1 root root  3597 Jan 23  2009 bootclean
-rwxr-xr-x 1 root root  2121 Jan 23  2009 bootlogd
-rwxr-xr-x 1 root root  1768 Jan 23  2009 bootmisc.sh
-rwxr-xr-x 1 root root  3454 Jan 23  2009 checkfs.sh
-rwxr-xr-x 1 root root 10602 Jan 23  2009 checkroot.sh
-rwxr-xr-x 1 root root  6355 May 30  2007 console-screen.sh
-rwxr-xr-x 1 root root  1634 Nov 27  2008 console-setup
-rwxr-xr-x 1 root root  1761 May 12  2009 cron
-rwxr-xr-x 1 root root  1223 Jun 22  2007 dns-clean
-rwxr-xr-x 1 root root  7195 Sep 12  2008 glibc.sh
-rwxr-xr-x 1 root root  1228 Jan 23  2009 halt
-rwxr-xr-x 1 root root   909 Jan 23  2009 hostname.sh
-rwxr-xr-x 1 root root  4521 Sep 26  2008 hwclock.sh
-rwxr-xr-x 1 root root  4528 Sep 26  2008 hwclockfirst.sh
-rwxr-xr-x 1 root root  1376 Nov 27  2008 keyboard-setup
-rwxr-xr-x 1 root root   944 Jan 23  2009 killprocs
-rwxr-xr-x 1 root root  1729 Nov 23  2007 klogd
-rwxr-xr-x 1 root root   748 Jan 23  2006 loopback
-rwxr-xr-x 1 root root  1399 Oct  6  2008 module-init-tools
-rwxr-xr-x 1 root root   596 Jan 23  2009 mountall-bootclean.sh
-rwxr-xr-x 1 root root  2430 Jan 23  2009 mountall.sh
-rwxr-xr-x 1 root root  1465 Jan 23  2009 mountdevsubfs.sh
-rwxr-xr-x 1 root root  1544 Jan 23  2009 mountkernfs.sh
-rwxr-xr-x 1 root root   594 Jan 23  2009 mountnfs-bootclean.sh
-rwxr-xr-x 1 root root  1244 Jan 23  2009 mountoverflowtmp
-rwxr-xr-x 1 root root  3123 Jan 23  2009 mtab.sh
-rwxr-xr-x 1 root root  5755 Nov 14  2008 mysql
-rwxr-xr-x 1 root root  2515 Nov 14  2008 mysql-ndb
-rwxr-xr-x 1 root root  1905 Nov 14  2008 mysql-ndb-mgm
-rwxr-xr-x 1 root root  1771 Apr 17  2011 networking
-rwxr-xr-x 1 root root  2377 Oct 23  2007 pcmciautils
-rwxr-xr-x 1 root root   375 Oct  4  2007 pppd-dns
-rwxr-xr-x 1 root root  1261 Jul 10  2008 procps
-rwxr-xr-x 1 root root  7891 Jan 23  2009 rc
-rwxr-xr-x 1 root root   522 Jan 23  2009 rc.local
-rwxr-xr-x 1 root root   117 Jan 23  2009 rcS
-rwxr-xr-x 1 root root   692 Jan 23  2009 reboot
-rwxr-xr-x 1 root root  1000 Jan 23  2009 rmnologin
-rwxr-xr-x 1 root root  4945 Apr 10  2008 rsync
-rwxr-xr-x 1 root root  1199 Jan 23  2009 sendsigs
-rwxr-xr-x 1 root root   585 Jan 23  2009 single
-rwxr-xr-x 1 root root  4215 Jan 23  2009 skeleton
-rwxr-xr-x 1 root root  3839 May 14  2008 ssh
-rwxr-xr-x 1 root root   510 Jan 23  2009 stop-bootlogd
-rwxr-xr-x 1 root root   647 Jan 23  2009 stop-bootlogd-single
-rwxr-xr-x 1 root root  3343 Nov 23  2007 sysklogd
-rwxr-xr-x 1 root root  2488 Apr 14  2009 udev
-rwxr-xr-x 1 root root   706 Apr 14  2009 udev-finish
-rwxr-xr-x 1 root root  7239 Jan 20  2009 ufw
-rwxr-xr-x 1 root root  4030 Jan 23  2009 umountfs
-rwxr-xr-x 1 root root  1833 Jan 23  2009 umountnfs.sh
-rwxr-xr-x 1 root root  1863 Jan 23  2009 umountroot
-rwxr-xr-x 1 root root  1815 Jan 23  2009 urandom
-rwxr-xr-x 1 root root  2445 Jan 23  2009 waitnfs.sh
-rwxr-xr-x 1 root root  1626 Mar 12  2008 wpa-ifupdown
-rwxr-xr-x 1 root root  1843 May 13  2008 x11-common

今回の場合はこんだけありました。./apache2 start とかやってあげると、無事webサービスが立ち上がってるのが確認できました。あ!dockerのネットワークの作り方にもよりますが、標準であればコンテナ立ち上げ時にポートを指定してホストからコンテナの80番とか必要なポートにアクセスできるようにしておいてください。

スクリーンショット 2020-03-03 0.41.29

はい。こんな感じで使えるようになっています。

こんなようなことをひたすらやってます。コンテナ化のメリットとしては、必要なホスト側のリソースの少なさが最も大きいと思ってます。いろんなイメージ使って遊びたくても、容量無くて泣く泣く前のを消す・・・とか結構ある。あと起動の速さとか動作の軽さとかももちろんだし、すぐやり直せたりするとか、いっぱい立ち上げても大丈夫とか、ハッキングラボ的遊び方をするにはとても向いてると思ってます。イメージもVMよりはかなり軽くできるし。DockerHUBにも既にいろいろなイメージがあるので、使ってみるとさらに簡単に環境構築できると思います。・・・kioptrixは検索してみましたが無かったです。

私は、各イメージがどう作られているのかを見たいという欲求もあるので自分で作って勉強させてもらってますが、通常の動作であれば、もしイメージが存在するならそちらが手っ取り早いです。
逆に、じっくりちょっとずつ演習を進めたい時などにはコンテナは向かないかな?状態を保存しておいてまた続きを・・・とかだと、VMでしっかり保存しておいたほうが良いかもしれません。私としては、90分とか180分とかで使える使い捨て環境が理想で、10分以内に環境がリセットできて別の人がすぐ使えるとかいうのと、kubernetestとかで演習環境を一括管理できるのが魅力です。

では、これからkioptrix#3を本格的に攻めてみようと思います!


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