思った以上にハマったのでメモしておきます。備忘録レベルです。
はじまりは、Webセキュリティを攻撃者の立場から勉強しようと思い、脆弱性の残されたWebアプリケーション(Webサーバ)をローカルでたてて実験しようと考えたことからでした。調べてみると、OWASP Broken Web Applicationsという、脆弱性の残されたWebサーバとWebアプリがVM仮想イメージで配布されていることを知りました。Windows8.1のホストOSから、VMWarePlayer6.0を使ってゲストOSとして呼び出す手順が妥当と判断しました。また、脆弱性診断のためローカルプロキシツールであるBurbSuite(FreeEdition)を使用することとしました。
各種ダウンロード/インストール
VMwareWorkstation10はインストーラに内包されるネットワーク設定ツールを抽出するために必要のため、インストールする必要はありません。今回はなくてもいいですが、VMwareのネットワークをツールを使ってわかりやすく学びたければ、少し重いですがダウンロードしておきましょう。
- VMwarePlayer6.0
- 普通にインストールしてください。
- VMwareWorkstation10 評価版
- 別項で説明。
- Java Runtime Environment
- 私のPCにはJavaがインストールされていませんでした……。インストール後はPATHを通しておいてください。
- BurbSuite FreeEdition
- jarをどこかに配置してください。
- OWASP Broken Web Applications
- どこかに配置します。(C:\vm)
VMwareWorkstation10の使い方(なくてもいい)
PlayerシリーズにはVMwareのネットワーク設定ツールが含まれていないため、必要の場合は、Workstaionのインストーラに含まれるツールを抽出してやります。コマンドラインで同じフォルダに移動して、下記コマンドを実行します。
./VMware-workstation-full-10.0.1-1379776.exe -e work
後は、workフォルダにあるcore.cabを解凍して、下記ファイルを「C:\Program Files (x86)\VMware\VMware Player」に移動します。もうWorkstationは用済みのため削除していただいて構いません。
- vmnetcfg.exe
- _vmnetcfglib.dll→vmnetcfglib.dllにリネーム
VMwareのネットワークを設定
「コントロールパネル>ネットワークの状態とタスクの表示>アダプターの設定の変更」で下記画面を開くと、VMnet1とVMnet8ができています。
VMwareではVMを起動するときにネットワークアダプタの設定をBridge/HostOnly/NATから選択できます。それぞれの違いは下記のとおりです。今回はNATを選びますがHostOnlyでも良いです。セキュリティ脆弱のあるアプリをあげるので、念のためBridgeはやらないほうが無難です。
ネットワークの接続形態を理解するために、ここの図が非常にわかりやすかったです。
設定 | 使用する仮想アダプタ | 用途 |
---|---|---|
Bridge | VMnet0 | ゲストOSをホストOSのつながるルータへ接続したい場合。(今回は非推奨。) |
HostOnly | VMnet1 | ゲストOSとホストOSをHUB(L2SW)で接続したい場合。 |
NAT | VMnet8 | ゲストOSとホストOSとNATルータ(L3SW)で接続したい場合。 |
NAT接続にした前提で話を進めます。ゲストOSからインターネットに接続するためには設定が必要となります。(まあ、やらなくてもいいですが。)設定のイメージについてはここの図が非常にわかりやすかったです。ちなみに、VMnet8をvmnetcfg.exeで見てみると下記の通り。DHCPサーバ機能も兼ねているので、DHCPの設定を見てみると.128からIPアドレスが配布されるように初期設定されていました。
Windows8.1側では、インターネット接続をしているアダプタの設定画面を開いて、インターネット接続をVMnet8と共有します。(こういう設定をICSと呼ぶらしいです。)
あとは、VMnet8アダプタのIPアドレス設定を確認します。(ゲストOSのeth0にVMnet8(DHCP)から配布されるIPアドレス/ネットマスクに従ったIPアドレスが設定されていれば問題ありません。)このあたりのイメージは先程も紹介したこちらの記事にある画像がわかりやすいですのでぜひ参照してください。ちなみに、DHCPでIPアドレスは.128から配布される設定となっているので.1固定にしておけばゲストOSとIPアドレスが被りません。
後は、VMwarePlayerでOWASP仮想イメージを実行するだけです。root/owaspbwaでログインできると思います。Windows8.1側とLinux側で相互にpingが通り、Linuxからgoogle.com(インターネット)にpingが通り、ホストOSのブラウザから「http://192.168.137.129/」(IPアドレスはifconfigで確認)につながれば設定完了です。長い道のりでした。
BurbSuiteの設定
BurbSuiteの配置されたフォルダにコマンドラインで移動して、下記コマンドを実行します。パス等の関係なのか、バッチファイルではうまく行きませんでした。動かない場合は、きちんとコマンドラインでフォルダに移動してから実行してみてください。
java -jar burpsuite_free_v1.5.jar
Proxy>OptionsよりIP:Portを確認します。ループバックアドレスである「127.0.0.1:8080」で待ち受けていることを確認できました。(わざわざ確認するまでもないですが。)つまり、試験するブラウザにプロキシを設定します。
ブラウザへのプロキシ設定
試験対象のページ以外へのアクセスはループさせたくありません。そういう、プロキシ適用有無のルールを記述する方法があります。下記ファイルをどこかに配置してください。
function FindProxyForURL(url, host) { if(isInNet(host, "192.168.137.0", "255.255.255.0")){ return "PROXY 127.0.0.1:8080"; } else return "DIRECT"; }
Firefoxの場合は下記のように設定します。バックスラッシュとスラッシュ問題もあるようなのでいろいろ試してみてください。
最終確認
試験ページ(http://192.168.137.129/)にアクセスした時はBurbSuiteがリクエストを捉えてくれて、それ以外のページにアクセスした時は素通りしてくれるようになることを確認して全ての工程が完了です。自分、お疲れ様でした。
おまけ
できない! つながらない! というときはWindows側アダプタの停止→開始や、Linux側アダプタのdown→upを試してください。
ifconfig eth0 down ifconfig eth0 up
参考URL
非常に多くのサイトを参考にしました。感謝。