脆弱性診断ええんやで for ルーキーズ に参加しました

2019年6月29日(土)に開催された第74回 脆弱性診断ええんやで(^^) for ルーキーズに参加しました。
個人的にOWASP ZAPを試したことはありますが、専門の方から使い方を学んでおきたいと思い、参加しました。

脆弱性診断研究会

講師はEGセキュアソリューションズの松本隆則(@nilfigo)さん。
最近は技術同人誌などにも携わっているそうで、休憩時間には会場でも販売されていました。

OWASP ZAPの基本的な設定

プロテクトモードの設定

OWASP ZAPを使い始める時は、必ずプロテクトモードに設定する。
これは、うっかり自身以外のサイトを攻撃してしまうことを防ぐため。

  • プロテクトモード:診断対象として指定したサイトにだけ攻撃が実行可能なモード
  • 標準モード(デフォルト):全てのURL、すなわち一般のサイトに対して攻撃が実行できてしまう状態

各種設定

「ツール」→「オプション」を開き、以下の項目をそれぞれ設定する。

ローカルプロキシ

  • localhostは避け、127.0.0.1にする。
    理由:タイプミスを避け、視認性を高めるため。(いつも一定数の人がミスるらしい)
  • 8080ポートは避ける。おすすめは49152〜61000。
    理由1:8080は人気でよく使われるため。
    理由2:49152〜61000はあらゆるOSや環境において予約されていない、一時的に使用可能な範囲であるため。
  • Tips: ポート番号を入力するときは、全選択した状態でキーボードをタイプすると意図した操作をしやすい

ローカルプロキシの設定例

スパイダー

  • クロールの深さ:目安は10 理由:デフォルトの5だと足りない可能性がある
  • 並列スキャンスレッド数:1から始め、かかる時間やPC性能に応じて増やしてみるとよい

スパイダーの設定例

動的スキャン

  • 並列スキャンするホスト数:1にするのがよい 理由:大きいと負荷が大きくなる他、複数のホストの結果が混ざり、見づらくなったり勘違いしたりする。
  • 並列スキャンスレッド数:1から始めるのがよい
  • Max Results to list:10000くらいが目安
    理由:大きすぎるとDBサイズが大きくなるし、見るのも大変。10000を超えるようなら診断範囲を見直すのがよい。
  • スキャン中のミリ秒単位の遅延:診断におけるリクエスト間の時間。以前のバージョンでは1000までしか指定できなかったが、それ以上が指定できるようになった

動的スキャンの設定例

ブラウザの設定

脆弱性診断で使用するブラウザで、OWASP ZAPのプロキシと証明書のインストールしておく必要がある。

脆弱性診断でオススメのブラウザ

Firefoxがオススメとのこと。
その理由は、プロキシや証明書がOSと独立して管理されているため。

安全性の観点から、脆弱性診断以外(OSのバックグラウンド処理、他のブラウザなど)ではOWASP ZAPのプロキシや証明書を使わないことが望ましい。
したがって脆弱性診断を行うときだけFirefoxを使用することで、OSや他のアプリが安全な環境を保つことができる。

なお、診断する対象のサイトがFirefoxに対応していなければ、諦めて他のブラウザを使用する必要がある。
最近はFirefoxのシェアが大きく落ち込んでおり、開発継続の面からもあまり状況がよくない。

プロキシ設定

  • IPアドレスとポート番号に、OWASP ZAPで入力したローカルプロキシを設定する。
  • 「プロキシーなしで接続する」が空欄になっていることを確認する。

ダイナミックSSL証明書

  1. 証明書を保存する。
  2. Firefoxの証明書設定で、保存した証明書を読み込む。

脆弱性診断の実行

コンテキストの追加

「診断対象のURLを右クリック→コンテキストに含める→New Context」を実行し、診断対象として選択できるようにする コンテキストに含める

スキャンポリシーの追加

メニューの「ポリシー→スキャンポリシー」から、スキャンポリシーを追加する。

  • 既定のアラートのしきい値:低に設定する。
    高いとエラーを無視するので、脆弱性を見逃す可能性が出てくる。そのため、基本的には「低」にするのがよい。
  • 既定の攻撃の強度:低に設定する。
    低だと特殊文字を送るだけだが、高だといろんなパターンを試すようになる。
    高だとシステムをダウンさせてしまったり、ファイルが消えてしまったりといったことが起こり得る。
    ツールに慣れてこのようなリスクが判断できるのであれば、高にするのもあり。

スキャンポリシーの設定例

攻撃の実行

今回はOWASP Mutillidae IIのXSS脆弱性をもつDNS Lookupをテスト。 DNS Lookupアプリの選択

ブラウザ上でフォーム入力を行うとOWASP ZAPの履歴に残るので、攻撃したいURLを右クリックし、「攻撃→動的スキャン」を選択して実行する。
動的スキャンの実行

脆弱性が検出できた。 動的スキャンの実行 しかし動的スキャンしても脆弱性が検出されないことがあるらしく(そうなの…?)、実際に検出できていない方もちらほら。

その他

  • アドオンの登録(マーケットプレイス)から、アドオンを追加することができる。
  • 講師の方の会社では、以下脆弱性を以下の基準で分類しているとのこと
    • Critical or High:攻撃者が能動的に実行できるもの
    • Medium以下:受動的攻撃。ユーザが攻撃しないと起きないもの。

所感

実際に活躍されているセキュリティエンジニアの環境や設定、使い方などを聞くことができてとても有益でした。
具体的にはプロテクトモードに設定すること、Firefoxを使っていることやその理由、標準的なスキャンポリシーの設定など。

以前自分で試した時は確かスパイダー+動的スキャンをしたのですが、Proxyを使ってブラウザ上で診断する方法や、Heads Up Displayの存在は知らなかったので、この辺りも有益でした。
使いこなすにはまだまだですが、必要になった時に使い始める最低限の知識は身につけられたかな、と思います。

講師の松本さん、どうもありがとうございました。

関連記事


  1. JSUG勉強会2019その2 に参加しました
  2. Spring BootをGoogle App Engineフレキシブル環境へデプロイする
  3. Spring BootをGoogle App Engineスタンダード環境にデプロイする
  4. Javaサーブレットにおける部分URLやファイルパスの取得
  5. JSUG勉強会 2019その9 Spring&AWS に参加しました
  6. サムライズム社のIntelliJ IDEAセミナーに参加しました
  7. JSUG勉強会 2019その7 ビズリーチにおけるSpringの活用 に参加しました

comments powered by Disqus