OWASP ZAP 2.6 スタート・ガイド
[拙訳]OWASP ZAP 2.6 Getting Started Guide
2017/12/15 : Security
[原文]OWASP ZAP 2.6 Getting Started Guide
『脆弱性診断スタートガイド』を読んだんですが、実践を積むための記述に乏しくて、ネットで資料を探しているときにこの英文ドキュメントに出遭いました。
全10ページの短いスタート・ガイドで、始めの6ページは ZAP の概要とインストールやセットアップが書かれていて、同様の内容は『脆弱性診断スタートガイド』やネット上にもたくさんあるので、7ページ以降の実践部分を翻訳しました。
(2017/12/14:追記)
7ページ以降を抄訳して公開していましたが、一部で好評を得たのに気をよくして、全10ページを翻訳して公開します。
翻訳は、基本的に直訳でお世辞にもわかりやすいとは言えませんが、同好の士の参考になればと思って公開します。
※なお、この拙訳の権利は、OWASP ZAP 2.6 Getting Started Guide に準拠するものとします。
(p.01)
概略
このドキュメントは、セキュリティ・テストの経歴がなくても、セキュリティ・テストをするために OWASP の Zed Attack Proxy (ZAP) を使うための基礎の入門として、役立てることを目的としている。最後のページに至るまで、いくつかのセキュリティ・テストの概念や専門用語は含まれているが、このドキュメントは ZAP やセキュリティ・テストの総合的なガイドを目的にはしていない。
既にセキュリティやペネトレーション・テストに精通しているなら、ZAP の紹介から始めたいかもしれない。
ZAP に関する追加のリソースや情報は、役に立つリンクを見ること。
セキュリティ・テストの基本
ソフトウェアのセキュリティ・テストは、システムとそのデータのセキュリティ・リスクや脆弱性を発見するために、システムを評価したりテストしたりするプロセスである。不偏的な専門用語はないが、我々の目的のために、実際にそうした脆弱性をエクスプロイトしようとせずに、脆弱性の解析と発見として評価を定義する。我々はテストを脆弱性の発見とエクスプロイトの試みとして定義する。
セキュリティのテストは、テストされている脆弱性の種類と実行されたテストの種類に応じて、幾分自由裁量で発生することがよくある。よくあるのは:
- 脆弱性診断 - 安全上の問題でシステムがスキャンされたり分析されたりする。
- ペネトレーション・テスト - シミュレートされた悪意のある攻撃から、システムが解析や攻撃を被る。
- ランタイム・テスト - エンドユーザから、システムが解析やセキュリティ・テストを被る。
- コード・レビュー - 特に安全上の脆弱性を探すことで、システム・コードが詳細なレビューや解析を被る。
キュリティ・テストの一部として一般にリストに含まれているリスク評価は、このリストに含まれていないことに注意する。それは、リスク評価は実際にはテストではないが、異なるリスク(ソフトウェアのセキュリティ、職員のセキュリティ、ハードウェアのセキュリティ、等)とそれらのリスクの緩和手段の、把握された重大性の解析だからである。
もっとペネトレーション・テストについて
ペネトレーション・テスト(ペンテスト)は、テスターによって、システムに押し入ることを目的にした悪意のある外部の攻撃者や、データを盗もうとしたりある種のサービス拒否攻撃を実行したりするかのように実行される。
ペンテストは偽陽性(実際には存在しない脆弱性報告結果)が少ないので、より正確になる利点があるが、実行するのに時間がかかる可能性がある。
ペンテストはまた、防御機構、対応計画の検証、セキュリティ・ポリシー順守の確認をテストするのにも使われる。
自動化されたペンテストは、継続的な統合検証の重要な部分である。急激に変化する環境における既存の脆弱性の不具合と同様に新しい脆弱性を発見したり、開発が高度に協調的で分散されている可能性がある場合に役立つ。
(p.02)
ペンテストのプロセス
手動ペンテストと自動ペンテストは、サーバからネットワーク、デバイス、エンドポイントまでの全てをテストするのによく併用される。このドキュメントは、ウェブ・アプリケーションやウェブ・サイトのペンテストに焦点を当てる。
ペンテストは、通常これらの段階に従う:
- 探索 - テスタは、テストされるシステムについて学ぼうとする。これは、どんなソフトウェアが使われているか、どんなエンドポイントが存在するか、どんなパッチがインストールされているか、等を断定しようとすることを含む。隠されたコンテンツのサイト検索、既知の脆弱性、他の弱点の兆候も含む。
- 攻撃 - テスタは、既知か疑わしい脆弱性が存在することを証明するために、エクスプロイトしようとする。
- 報告 - テスタは、脆弱性、それをどのようにエクスプロイトしたかとその難しさ、エクスプロイトの重大性、を含むテスト結果の報告を返す。
ペンテストのゴール
ペンテストの究極のゴールは、対処できる脆弱性を探すことである。ペンテストは、システムが既知のクラスや特定の不具合に脆弱ではないことを確かめることもでき、既に解決済みとして報告された脆弱性の場合は、システムがもはやその不具合に脆弱ではないことを確かめることができる。
ZAP の紹介
Zed Attack Proxy (ZAP) は、無償でオープンソースのペネトレーション・テスト・ツールで、Open Web Application Security Project (OWASP) の umbrella の元でメンテナンスされている。ZAP は、特にウェブ・アプリケーションのテストのために設計されていて、柔軟で拡張可能である。
その核心において、ZAP は「傍受プロキシ」として知られるものである。ZAP は、ブラウザとウェブ・アプリケーションの間で送られたメッセージの傍受と調査、必要に応じて中身の変更、そしてそれらのパケットを送り先へ転送することができるように、テスタのブラウザとウェブ・アプリケーションのテストの間に立つ。本質的に、ZAP は「中間者」として使うことができるが、スタンド・アロンなアプリケーションとしてや、デーモン・プロセスとしても使うことができる。
既に他に使用中のネットワーク・プロキシがある場合、多くの統合環境と同じように、ZAP はそのプロキシに接続するように設定できる。
(p.03)
ZAPは、開発者からセキュリティ・テストが初めてのテスタやセキュリティ・テストの専門家まで、広範な熟練度に機能を提供する。ZAPはそれぞれの主要 OS と Docker のためのバージョンがあるので、ひとつの OS に束縛されることはない。追加機能は、ZAP クライアントの中からアクセスできる ZAP Marketplace のいろいろなアドオンから無償で利用可能である。
ZAP はオープンソースなので、ソース・コードは機能がどのように実装されているかを正確に見るために調べることができる。誰でも ZAP の開発に志願できて、バグの修正、機能の追加、プロジェクトに修正を取り込ませるためのプル・リクエストの作成、特別なシチュエーションに対応するためのアドオン追加を行う。
詳細は、
Zed Attack Proxy Project Page を参照する。
たいていのオープン・ソース・プロジェクトと同様に、プロジェクトの経費の助けになる寄付は大歓迎である。
https://www.owasp.org/index.php/ZAP にある ZAP の owasp.org ページに、寄付ボタンを見つけることができる。
ZAP のインストールと設定
ZAP には、Windows、Linux、Mac OS/X のためのインストーラがある。以下に一覧したダウンロード・サイトにある、Docker イメージも利用可能である。
ZAP のインストール
最初にすることは、ペンテストをしようとするシステムに ZAP をインストールすることである。
https://github.com/zaproxy/zaproxy/wiki/Downloads にある ZAP のダウンロード場所から適切なインストーラをダウンロードして、インストーラを実行する。
ZAP は、実行するために Java 7+ が必要であることに注意する。Mac OS/X のインストーラには適切なバージョンの Java が含まれているが、Windows、Linux、クロス・プラットフォームのバージョンには、個別に Java 7+ をインストールしなければならない。Docker 版は Java のインストールを必要としない。
インストールが終わったら、ZAP を起動してライセンス条項を読む。条項を受け入れるなら
Agree をクリックして、ZAP はインストールを終了して自動的に開始する。
セッションの持続
最初に ZAP を始める際、ZAP のセッションを持続したいかどうかを問われる。デフォルトでは、ZAP のセッションは常時 HSQLDB データベースに、デフォルトの名前と場所でディスクに記録される。セッションを持続しないなら、それらのファイルは ZAP を終了するときに消去される。
セッションを持続するように選択すると、セッション情報はローカルのデータベースに保存されるので後でアクセスすることができ、保存するファイルに専用の名前と場所を与えられるようになる。
(p.04)
ひとまず、
No, I do not want to persist this session at this moment in time を選んで、
Start をクリックする。
ZAP のセッションは、今回は持続しない。
ZAP の UI
ZAP の UI は、次の要素から構成されている:
- Menu Bar – 自動と手動ツールの多くへのアクセスを提供する。
- Toolbar – ほとんどの一般的に使われる機能に、容易にアクセスするボタンが含まれる。
- Tree Window – Sites ツリーと Scripts ツリーを表示する。
- Workspace Window – リクエスト、レスポンス、スクリプトを表示して、それらの編集を可能にする。
- Information Window – 自動と手動ツールの詳細を表示する。
- Footer – 見つかったアラートの要約と、メインの自動ツールの状態を表示する。
ZAP を使用中、Menu Bar の
Help をクリックするか F1 を押すと、ZAP User Guide から状況に応じたヘルプにアクセスできる。
UI についての詳しい情報は、ZAP オンライン・ドキュメントの
ZAP UI Overview を見ること。
ZAP はパワフルな API とコマンド・ライン機能をサポートしているが、どちらもこのガイドの範囲を超えている。
(p.05)
ZAP を通すようにブラウザにプロキシを設定する
ZAP でペンテストの実行を始める前に、プロキシとして ZAP を使うようにブラウザを設定しなければならない。デフォルトで、ZAP が使うのは:
Address: localhost
Port: 8080
ブラウザのプロキシを変更する方法を知らないなら、ZAP のオンライン・ドキュメントの
Configuring Proxies を見るか、ブラウザのヘルプを参照する。
ZAP のルート CA 証明書をインポートして信頼する
ZAP はブラウザとウェブ・アプリケーションの間でプロキシの役目を果たすようにセットアップされたので、SSL (HTTPS) の使用は、証明書の認証失敗と接続終了を引き起こす。これは、ZAP がオリジナルのウェブ・アプリケーション証明書を使って、ウェブ・アプリケーションに送られるトラフィックを暗号化したり復号化したりするからである。これは、ZAP がリクエストやレスポンスで、平文でアクセスできるように行われている。
この失敗が起きるのを防ぐために、ZAP は自動的にアクセスするそれぞれのホストに、ZAP 自身の認証局( CA )証明書に署名された、SSL 証明書を作成する。ブラウザにこれらの証明書を信頼させるために、ZAP のルート CA 証明書を最初にインポートして信頼する必要がある。いったん信頼されると、署名された他の ZAP の SSL 証明書も、同様に信頼される。
自分で生成したルート CA 証明書は一意に生成されるが、脆弱性を避けるために公開しないままにしておかなければならないことに、注意するのは重要である。
ZAP のルート CA 証明書をエクスポートするには:
- ZAP を開始して Tools → Options をクリックする。
- Options ウィンドウの左ペインで、Dynamic SSL Certificates をクリックする。
- 右ペインで、Save をクリックする。
- 証明書を保存する場所を選んで、Save をクリックする。必ず、ファイル拡張子 .cer を保持するようにする。
ZAP のルート CA 証明書を、Windows / Internet Explorer に信頼されたルート証明書としてインストールするには:
- 証明書ファイルを閲覧する。
- 証明書ファイルを右クリックして、Install Certificate をクリックする。
- Certificate Import Wizard で、証明書の範囲として Current User か Local Machine を選んで、Next をクリックする。
- Place all certificates in the following store. を選ぶ。
(p.06)
- Browse をクリックして、保存場所として Trusted Root Certificate Authorities か Trusted Root Certificates ( Windows のバージョンによる)を選んで、Next をクリックする。
- Finish をクリックする。
- 信頼されたルート証明書についてのセキュリティの警告を見直して、警告を受け入れるなら Yes をクリックする。
ZAP のルート CA 証明書がインストールされていることを確認するには:
- Control Panel を開いて、Internet Options をクリックする。
- Content タブの、Certificates セクションで、Certificates をクリックする。
- Trusted Root Certificates タブで、OWASP ZAP Root CA 証明書が一覧にあることを確認する。
Firefox を使ってテストしているなら、Firefox 自身の証明書の保存場所に、再度 ZAP のルート CA 証明書をインストールする必要がある。
ZAP のルート CA 証明書を Mozilla Firefox にインストールするには:
- Firefox を開始して、Preferences をクリックする。
- Advanced タブで、Encryption タブをクリックする。
- View Certificates をクリックする。
- Trusted root certificates タブで、Import をクリックして、先に保存した ZAP Root CA ファイルを選ぶ。
- Import ウィザードで、Trust this CA to identify web sites を選ぶ。
- OK をクリックする。
ZAP と SSL の証明書についてのこれ以上の情報は、
Option Dynamic SSL Certificates を見ること。
信頼されたルート証明書や上記の一覧にないブラウザやオペレーティング・システムについてのこれ以上の情報は、個別のブラウザやオペレーティング・システムのヘルプ・ファイルを見ること。
ウェブ・アプリケーションに接続してみる
プロキシとして ZAP を使うようにブラウザを設定したら、ブラウザを開いて、テストしようとしているウェブ・アプリケーションに接続してみる。
ウェブ・アプリケーションに辿り着けないなら、次をチェックする:
- ブラウザが ZAP に接続するために使っている、プロキシの設定を確認する。
- ZAP のプロキシの設定が、ブラウザが ZAP に接続しようとするために使っていることを確認する。
- テストしたいウェブ・アプリケーションが、実行中であることを確認する。
- ウェブ・アプリケーションに辿り着くために、ネットワークがプロキシを必要としているかどうかを確認する。もしそうであれば、プロキシを使うために、ZAP を設定する必要があるかも知れない。
外部へのプロキシを使うために、ZAP を設定するには:
- ZAP を開始して、Menu Bar で、Tools → Options をクリックする。
- 左ペインの Connection を選ぶ。
- Connection 設定の use proxy chain セクションで、Use an outgoing proxy server のチェックボックスをチェックする。
- ネットワーク・プロキシに、Address/Domain Name と Port を入力する。
- OK をクリックして設定を保存して、ウェブ・アプリケーションに接続できることを確認する。
ブラウザがウェブ・アプリケーションにうまく接続できたら、テストを実行する準備ができている。
(p.07)
ZAP でペネトレーション・テストを始める
ZAP を使い始めるもっとも簡単な方法は、Quick Start テストを実行することである。Quick Start は、ZAP のインストール時に自動的にインストールされる ZAP のアドオンである。
重要:ZAP を使って攻撃するのは、積極的な攻撃でテストする許可を得ているアプリケーションだけにするべきである。これは現実の攻撃のように振る舞うシミュレーションなので、実質的損害をサイトの機能やデータ等に与える可能性がある。ZAP を使うのが心配なら、( ZAP の機能は大幅に減るが)セーフ・モードに切り替えて被害を抑えることができる。
ZAP をセーフ・モードに切り替えるには、メイン・ツールバーのモード・ドロップダンの矢印をクリックして、ドロップダン・リストを広げて、
Safe Mode を選ぶ。
Quick Start テストを実行する
Quick Start テストを実行するには:
- ZAP を開始して、Workspace Window の Quick Start タブをクリックする。
- URL to attack のテキスト・ボックスで、攻撃したいウェブ・アプリケーションの完全な URL を入力する。
- Attack ボタンをクリックする。
ZAP はスパイダーでウェブ・アプリケーションのクロールを始めて、見つけたページのそれぞれを受動的にスキャンする。そして、ZAP はアクティブ・スキャナを使って発見されたページ、機能、パラメータの全てを攻撃する。
テスト結果を解釈する
ZAP がウェブ・アプリケーションをスパイダー検索する際、ウェブ・アプリケーションのページとそれらのページをレンダリングするのに使われたリソースのマップを組み立てる。そして、それぞれのページに送ったリクエストとレスポンスを記録して、リクエストやレスポンスに何か潜在的に悪いところがあるなら、アラートを作成する。
探索したページを見る
探索したページのツリー状のビューを調べるには、Tree Window の
Sites タブをクリックする。アクセスした個々の URL を見るために、ノードを広げることができる。
アラートとアラートの詳細を見る
Footer の左手側に、テスト中に見つかった Alerts の数が、リスクの種類に分類されて入っている。これらのリスクの種類は:
(p.08)
テスト中に生成されたアラートを見るには:
- Information Window の Alerts タブをクリックする。
- Information Window の右側の URL と検出された脆弱性を表示するために、そのウィンドウに表示されたそれぞれのアラートをクリックする。
- Workspace Windows で、ヘッダの中身とレスポンスのボディを見るために、Response タブをクリックする。アラートを生成したレスポンスの部分が、ハイライトされる。
ZAP でペンテストを拡張する
受動的スキャンと自動攻撃の機能は、ウェブ・アプリケーションの脆弱性評価を始めるには素晴らしい方法だが、いくつかの制限がある。これらの中には:
- ZAP の認証機能を設定していなければ、ZAP は要求された認証を処理できないので、ログイン・ページで保護されたページは受動的スキャン中に発見できない。
- ZAP のデフォルトのスパイダで見つけられないページは、受動的スキャン中にテストできない。ZAP は、受動的スキャンの他に、発見と範囲の追加のオプションを提供する。
- 受動的スキャンでの一連のエクスプロイトや自動攻撃で実行される攻撃のタイプの制御は、たくさんあるわけではない。ZAP は、受動的スキャンの他に、エクスプロイトや攻撃のための追加のオプションをたくさん提供する。
ZAP でスパイダの設定と実行をする
テストを拡張して改善するひとつの方法は、ウェブ・アプリケーションを調査するのに ZAP が使っているスパイダを変更することである。Quick Scan は従来の ZAP スパイダを使っていて、ウェブ・アプリケーションからのレスポンスの HTML を調べることで、リンクを発見する。このスパイダは早いが、JavaScript を使ってリンクを生成する AJAX ウェブ・アプリケーションを調べているときは、いつも効果的なわけではない。
AJAX アプリケーションには、ZAP の AJAX スパイダがおそらくより効果的である。このスパイダは、生成されたリンクに従ってブラウザを起動することで、ウェブ・アプリケーションを調査する。AJAX スパイダは従来のスパイダより遅くて、"指導者のいない"環境で使うためには、追加の設定を必要とする。
スパイダ間を行き来する簡単な方法は、Information Window でそれぞれのスパイダのタブを有効にして、そのタブを使ってスキャンを実行することである。
- Information Window で、緑のプラス印( + )をクリックする。
- Spider タブを作成するために Spider をクリックする。
- 手順1を繰り返して、AJAX Spider タブを作成するために AJAX Spider をクリックする。
- Spider タブと AJAX Spider タブの両方のプッシュ・ピンをクリックして、二つのタブを Information Window に固定する。
この両方のタブには、
New Scan ボタンがあることに注意する。
サイトを調査する
スパイダは基本的なサイトを調査するには素晴らしい方法だが、より効果的にするために、手動調査を組み合わせるべきである。スパイダは、例えば、ウェブ・アプリケーションのフォームに基本的なデフォルトのデータしか入力しないが、ユーザは、ZAP にウェブ・アプリケーションの多くをひとつずつ見せることができる、より関連性のある情報を入力できる。これは、有効なメール・アドレスが要求される登録フォームのようなものに、特に当てはまる。
(p.09)
スパイダは、エラーを引き起こすランダムな文字列を入力することができる。ユーザは、そのエラーに反応して正しい書式の文字列を与えることができ、フォームが送られて受け付けられると、アプリケーションの多くがむき出しになる可能性がある。
ZAP をプロキシとして使うようにブラウザを設定したので、そのブラウザでウェブ・アプリケーションの全てを調べるべきである。そうすると、ZAP は脆弱性を調査中に発生した全てのリクエストとレスポンスを受動的にスキャンして、サイト・ツリーを構築し続けて、調査中に見つかった潜在的な脆弱性のアラートを記録する。
他のページにリンクしているかどうかにかかわらず、ウェブ・アプリケーションのそれぞれのページの脆弱性を ZAP に調べさせるのは重要である。曖昧さは安全ではなく、隠されたページは警告や通知なしで生きることがある。なのでサイトを調べるときは、可能な限り徹底的にやる。
ZAP で能動的スキャンを実行する
今までのところ、ZAP はウェブ・アプリケーションの受動的スキャンを実行しただけである。受動的スキャンは決してレスポンスを変更せず、安全と見なされている。スキャンはまた、調査をスロー・ダウンさせないようにバックグラウンド・スレッドで実行される。受動的スキャンはなんらかの脆弱性を見つけるのが得意で、ウェブ・アプリケーションの基本的なセキュリティの状態の感触を得る方法で、より調査が必要とされるところを調査する。
しかしながら、選ばれた標的に対して既知の攻撃を使って他の脆弱性を見つけようとする能動的スキャンは、それらの標的への実際の攻撃で、標的をリスクに晒す可能性があるので、テストの許可のない標的に対して能動的スキャンを使わない。
能動的スキャンを開始するには:
1. Tree View の
Sites タブで、能動的スキャンを実行したいサイトを選択する。
2. 選択したサイトを右クリックして、
Active Scan を選択する。
または、
- Information Window で、Active Scan タブを選択する。
- New Scan をクリックする。
設定を見直して変更するには、能動的スキャンを開始して:
- Menu Bar で、Tools → Active Scan をクリックする。
- 設定を見直して、したい変更をする。
- これらの設定で、Active Scan を始めるために Start Scan をクリックする。
テスト結果を解釈するに示すように、受動的スキャンの結果を振り返るのと同じ方法で、能動的スキャンの結果を振り返ることができる。
(p.10)
ZAP についてもっと学ぶ
さあこれで、ZAP のいくつかの基本的な機能に精通して、ZAP の機能やそれらの使い方について、ZAP の
User Guide からもっと学ぶことができる。User Guide は、ステップバイステップの説明、API とコマンドライン・プログラミングのリファレンス、説明動画、ZAP を使うための秘訣やコツを提供する。
役に立つリンク
OWASP Zed Attack Proxy Project – ZAP のメイン・プロジェクト・ページ
OWASP ZAP Wiki – ZAP の Wiki
OWASP ZAP User Guide - The ZAP ユーザ・ガイド
OWASP ZAP Hot Keys - ZAP のホットキーのリスト
ZAP Proxy Users Group – ZAP ユーザの Google グループ
ZAP Proxy Developers Group – ZAP の開発者とコントリビュータのGoogle グループ
記述に際しては、細心の注意をしたつもりですが、間違いやご指摘がありましたら、こちらからお知らせいただけると幸いです。
« 戻る