【脆弱性診断】その仕事内容と著名なツールの違い

はじめに
---
今回は脆弱性診断時によく使われるツールであるOWASP ZAPとBurpSuiteの違いについて復習がてら改めて学んだので脆弱性診断とは何か？というところからそれぞれのツールの簡単な違いまで共有したいと思います。

※これまで生きてきてこのような記事を書くのが初めてのため拙い部分がたくさんありますがよろしくお願いいたします。


脆弱性診断とは
---
それでは最初に脆弱性診断とは何か？というところからざっくり説明しようと思います。

脆弱性診断とは一言で言うと
お客様からご依頼があったWebサイト等に対して脆弱性と呼ばれる攻撃の起点となる抜け穴の有無について調べる仕事です。

もう少し詳しく書くと例えば、皆さんが通販サイトに登録していたとしてログインする際にはユーザー名とパスワードを入力すると思います。
このユーザー名とパスワードが第三者にみられてもわからないような加工がなされず、そのままサブスクのサイトに送っていたら？

もしも通信の内容を見られてしまったら一発で他人がログインできてしまいますよね？

こういったシステム上にある攻撃の起点となるであろう部分を探して対策とともに報告するのが具体的な仕事内容です。

この脆弱性を見つけるために使えるツールがOWASP　ZAPやBurp　Suiteといった診断ツールというわけです。

下記に概要と二つのツールの違いを簡単にまとめてみました。


OWASP ZAP（OWASP　Zed Attack Proxy）とは
---
OWASP（The Open Woridwide Application Security Project）の提供する脆弱性診断ツール

特徴
---
・プロキシとして動作してブラウザとWebアプリケーション間での通信の確認や改変が可能
・オープンソースであり商用非商用問わず無償での利用が可能


BurpSuiteとは
---
イギリスにあるPortSwigger社が開発している脆弱性診断ツール。

特徴
---
・有償版・無償版がある。有償版には自動で脆弱性を診断してくれる機能の利用やアドオンのインストールが可能
・数多くの拡張機能が提供されており脆弱性診断士がよく活用しているツール。(私も前職ではこれを使ってました。)


診断作業の工程
---
脆弱性診断には大まかに分けて次のような六つの過程が存在します。

　1.確認
　2.選定
　3.準備
　4.実行
　5.考察
　6.報告
 
各段階でそれぞれのツールで出来ることできないこと得意な作業、苦手な作業が違うので
各過程の内容とそれぞれのツールにおける違いを詳しく確認していきます。

診断対象確認
---
ここではお客様から提供されたWebサイトの中で診断が必要なものを洗い出すためにそれぞれのページで行われるリクエストとレスポンスを候補として『__抜け漏れなく__』列挙します。
この作業を『__クローリング__』といいます。

手作業でもできるにはできるのですが莫大な時間と手間がかかるためにクローリング機能がついているツールの出番というわけです。

Burp無償版にはこの機能がないため本格的な診断はできないと思います
ZAPとBurp有償版に関してはどちらも大差なくできます。


診断対象選定
---
クローリングが終わったら診断対象の選定をしていきます。
お客様の予算との兼ね合いなどで重要度に基づいて診断対象を選んでいきます。
クローリングで洗い出した候補について脆弱性があったらクリティカルな打撃となる部分から順に優先度をつけていきます。(ログイン画面　管理者権限のあるアカウントのページ等)


Burpにはもともとマーキング機能がついていたりマーキング表示で絞り込めるのでBurpが無償・有償含めて圧倒的に使いやすいです。
自分も脆弱性診断をやっていたときは非常にお世話になりました。

対してZAPですがアドオンの追加でマーキングは可能ですが絞り込みができないため使い勝手の面で見劣りします。

診断作業準備
---
診断作業(実際にお客様から依頼された対象へ攻撃すること)に入る前に通信の経由地(プロキシ)としてツールを設定していきます。

ツールを経由地として設定することでパソコンとWebサイトの間などで行われている通信が覗き見れるわけです。

ここではZAPが一個のみしか設定を保存できないのに対し
Burp Suiteは複数の設定を保存しておくことができます

また、スコープ（診断対象を除外できる機能）についてですが定義(ルールのようなもの)の場所もZAPは分かりにくいためBurpが使いやすいです。


診断作業実施
---

診断作業とはペイロードと呼ばれる攻撃文をサーバへ送信する内容(__リクエスト__)に盛り込んで送信し、サーバからの返信（__レスポンス__）を確認するという作業です。
自動診断機能はBurp無償版にはついていないので
ZAPとBurp有償版の自動診断機能の違いについて書いていきます。

まず、自動診断には静的と動的があります。
静的はツールに保存されてるレスポンスの中で該当するものがあれば脆弱性として報告するものです。
動的スキャンは前述のペイロードをサーバーへ送信するスキャン方法です。

静的スキャンについて
---
ZAPでの自動診断は疑わしいものを見つけたら即脆弱性として検知される傾向があるため誤検知や過検知が多いです。
手作業で除去する必要があります。

Burpに関しては機械側で精査してくれて誤検知除去もしてくれるため誤検知除去の手間が少ないです。
裏を返せば精度は高いですが見逃してしまう可能性もあるため、ここも好みによると思います。

動的スキャンについて
---
これが恐らく脆弱性診断ときいて思い描く診断士の姿だと思います。

攻撃の起点となる部分に攻撃文を埋めて送信していってそれぞれのレスポンス(サーバから返ってきた返事)正常なレスポンスと比較する作業です。

届いたレスポンスを確認する際に自動で変更・追加・削除されたものが色分けされる機能がBurpには備わってます。
ZAPにはこの機能はありません。

機械だけで判断がつかないときに手作業で送ったものを保存しておく機能もZAPにはありません。

こちらも使い勝手の面でBurpが優れていると考えます。

診断結果考察
---
診断が終了するとそれぞれ検出された脆弱性に関して説明だったりリスクや対策などが表示されます。これを　『__アラート__』　といいます。

ZAPはZAP上でアラートについてほとんどの項目が編集や削除、手作業での追加が可能です。

対してBurpにはこの機能はありません。
編集できるのは重要度やコメントの追加などです。
また、自動診断後に誤検知・過検知であることが分かった場合に削除することも新しい脆弱性を追加することもアドオンなしではできません。

無償版においてはアドオンのインストールができないため、お客様への報告書作成の段階で手作業で誤検知分を削除だったり追加をする必要があります。

この点においてZAPは非常に優れているといえます。

診断結果報告
---
報告書作成においてもZAPが非常に優れています。
ZAPは出力の形式が豊富でJSONだったりHTML、XMLでも作成可能ですしPDF化も可能です。

対してBurpはXMLとHTMLの二つのみです。
手作業で検知した脆弱性に関してはこのタイミングで診断士個人での追加が必要です。

※無償版は報告書の自動作成機能がないので割愛いたします。
以上がそれぞれの違いと詳しい作業の内容です。

最後に
---
脆弱性診断の触りだけやりたい！！という方はBurpの無償版
自分でいろいろ試したいという方はOWASP　ZAP
プロはBurpの有償版

というような使い分けの仕方になるかと思います。

確かにBurpは報告書の自動作成におけるデメリットがいくつかありますがエディタなどでマクロを組めば解決するため、自動診断の正確性や網羅性、使い勝手の面からみてもBurpがやはり商用としていいなと思います。


ここまで駄文を書いてきましたが最後まで読んでいただきありがとうございました！
次回書くときは諸先輩方の記事を参考にもうちょっと読みやすい構成を考えてMarkdownの使い方もしっかり学んでおきます！


参考文献
---
・ステップアップ脆弱性診断（松本孝則著）