脆弱性診断のためOWASP ZAPをインストールする

インターステラの阿形です。
最近MacBookにOWASP ZAPをインストールする機会があったので、インストール手順と初期設定について書いてみたいと思います。
ちなみにこちらで書いているものは、ほぼOWASP ZAPのGetting Started Guideに書いてある内容です。
なにか不明点があったら、Getting Started Guideを参照すると良いと思います。
OWASP ZAPとは?
ご存じの方は次の項まで飛ばしてください。
ZAPの説明の前に、まずOWASPとはなんぞやというところから。
OWASPはThe Open Web Application Security Projectの頭文字で、ざっくり言えば、ウェブアプリケーションのセキュリティ問題を解決するための国際的なコミュニティの名称です。
詳しくは公式ページの説明を読んでいただくのが良いと思います。
ZAPはこのOWASPから提供されているツールの名前です。
正式にはOWASP Zed Attack Proxyと呼ぶようです。
このツールでできることですが、ウェブアプリケーションの脆弱性診断を行ったり、HTTPリクエストを途中で止めて、解析したり改ざんしたりできます。
悪意を持って使えば、攻撃のためのツールとなり得るので、取り扱いには注意が必要です。
詳しい機能については以下のページにリストがあります。
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project#tab=Functionality
ZAPはApache Licenseに基づき、フリーかつオープンソースソフトウェアとなっていますので、誰でも自由に使用することができます。
インストール前の確認
Windows、Linuxの方は別途Javaのインストールが必要です。
Dockerも用意されていますので、面倒な場合はそちらを利用されるのも良いかもしれません。
インストール
まず、OWASP Zed Attack Proxy Projectのページにアクセスします。
Downloadのボタンを押すと、GitHubのダウンロードページに移動しますので、そちらでお使いの環境に合ったインストーラーをダウンロードします。
今回はMacBookにインストールするので、macOS用のインストーラーをダウンロードしました。
ダウンロードしたファイルを展開し、インストーラーを起動します。

インストーラーを起動すると、このような画面が表示されます。
ごく一般的なインストーラーですね。

次へをクリックするとライセンス承認の画面になります。
ここは承認をクリックして次に進みます。

インストール形式を選択します。
特に理由がない限り、標準インストールを選択して進みます。
インストール内容が表示されますので、確認したらインストールをクリックします。

インストールが開始されるので、しばらく待ちます。
そんなに時間はかからないので、そのまま待ちましょう。

インストール終了!

ZAP起動

でも、これをクリックしても残念ながらZAPは起動しません。
これなんのためにこうなっているのかイマイチよくわからなかったんですが、ZAP自体はアプリケーションフォルダにあるアイコンから普通に起動できます。(結果的にこのzap.shというシェルスクリプトが実行されています)
なので、普通にアプリケーションフォルダのアイコンをダブルクリックして起動するか、そのアイコン自体をDockにドラッグ・アンド・ドロップして追加してしまいましょう。
起動すると最初にこんなダイアログが表示されます。

通常は一番上のものを選んでおけばよいかと思います。
開始をクリックするとZAPの画面が表示されます。

Proxyの設定
今回はmacOSなので、macOSの場合設定を参考までに書いておきます。
macOSのSafari、Chromeの場合

SSL(HTTPS)の設定
SSLそのままでは、リクエストの内容を見ることはできないため、ZAPでは偽の証明書を自動生成してブラウザに返し、ZAPで暗号をとけるようにしており、実サーバーとの本物の証明書によるSSLのやり取りはZAP自身で行っています。
ZAPからからブラウザに返している偽の証明書は、都度ZAPが自動的に生成しているので、このままですとブラウザ上で不正な証明書としてエラーとなってしまいます。
このため、証明書が正しいものとして取り扱わせるため、ZAPのRoot CAを登録し、信頼している必要があります。
通常、ブラウザにはZAPのRoot CA証明書は当然ながら登録されていませんので、これの登録作業が必要となります。
Root CA証明書のエクスポート
まずZAPで自動生成されているRoot CA証明書を証明書ファイルにエクスポートします。
ZAPを起動したら、メニューの「ツール」から「オプション…」を選択します。

オプションウィンドウが開いたら、左側のリストから「ダイナミックSSL証明書」を選択します。

右側に表示されているのがZAPのRoot CA証明書です。
下部の「保存」ボタンを押して、証明書ファイルとして保存します。

Root CA証明書のインポート

ZAPの証明書を選択し、右クリックメニューで「情報を見る」を選択します。

証明書の情報画面が表示されたら、「この証明書を使用するとき」のプルダウンメニューから、「常に信頼」を選択します。

変更したらウィンドウを閉じると設定は完了です。
ここまでできたら、試しにブラウザでHTTPSのサイトにアクセスしてみます。
問題なくサイトが表示されれば設定は正しくされています。
なお、うまく表示された場合でも、ZAPの画面左側のサイトや、下部のリクエストのリストが増えていかない場合はプロキシの設定がうまく行っていない可能性があります。
その場合はプロキシの設定を見直してください。
おわりに
これでZAPの設定は完了です。
ちょっと証明書周りの設定はめんどうですが、あとはそれほど難しくないと思います。
あとはいろいろいじり倒して、HTTPリクエストを覗いてみたり、脆弱性テストをやってみたりと試してみてください。