第36回 「オープンソースのセキュリティ診断ツール」
こんにちは、うちです。
最近、個人情報流出などの大きなセキュリティ事故が連発していますね。
原因はシステムの脆弱性よりも、内部犯行者による個人情報流出や、eメールに添付されたexeをクリックしたためにウィルスに感染したなど、大きな組織の統制の問題や人のリテラシーに起因するものが多く見られます。
一方で、レンタルサーバーやVPS、クラウドサービスが低価格化したため、サーバーを手に入れる価格のハードルはどんどん低くなり、誰でも安く手軽にサーバーをレンタルできるようになりました。
月額1000円以下は当たり前で、300円/月や100円/月のサービスなんかも普通に目にするようになりました。
また、レンタルしたサーバー上で動かすアプリケーションとしてもWordPressのような無料で手に入るブログやウェブサイト作成システムも流行していることから、今後益々個人や中小企業が気軽にウェブサイトを立ち上げやすくなってきていると思います。
安くサーバーインフラが手に入り、無料でウェブサイトを構築できるシステムも手に入るメリットがある反面、セキュリティ的に無防備な小規模サイトも今後増加していく一方だろうなと思います。
レンタルサーバー会社やホスティング会社が、ウェブサイトのセキュリティ診断サービスなどを無料や100円/月のような低価格で提供してくれているかというと、調べてみるとそうでもないようです。
ペネトレーションテスト(侵入テストとも呼ばれ、システムに対して様々な攻撃を仕掛けてシステムに脆弱性がないかを試すテスト)のサービスを提供しているところで、最も安いところでも1IPにつき5万円~という価格帯。
平均すると20万~80万ぐらいで、個人事業主や小規模事業者が気軽に使えるものとは程遠いと感じます。
そこで今回はオープンソースで手軽にウェブサイトのペネトレーションテストができるツール「OWASP Zep Attack Proxy」をご紹介します。
■「OWASP Zed Attack Proxy」
なんだか長い名前ですが、「OWASP」とは、「The Open Web Application Security Project」という、信頼できるアプリケーションの開発・購入・運用の推進を目的として設立された世界的なコミュニティで、その頭文字です。
「OWASP」が配布している資料に記載された説明によると、「OWASP」では、以下をフリーでオープンな形で提供・実施しているとのことです。
・アプリケーションセキュリティに関するツールと規格
・アプリケーションセキュリティ検査、セキュア開発、セキュリティ・コード
レビューに関する網羅的な書籍
・標準のセキュリティ制御とライブラリ
・世界中の支部
・先進的な研究
・世界中での会議
・メーリング・リスト
「OWASP Zed Attack Proxy」(以下、ZAPと略します。)は、OWASPが提供している多くのセキュリティ関連ツールのうちの一つで、オープンソースで提供されているもの、という位置付けです。
■OWASPの公式サイト https://www.owasp.org
では、実際にどんな機能が提供されており、何ができるのでしょう。
日本語のマニュアルまでちゃんと公開されております。ありがたい。
OWASP公式サイトの日本チャプターにアクセスし、下のほうにある「Translations / OWASPドキュメント翻訳」タブをクリックすると、「OWASP ZAP マニュアル Ver.2.1.0版」(2015年7月時点)のダウンロードリンクが表示されます。
https://www.owasp.org/index.php/Japan
ZAPアプリケーション自体も日本語化されており、こちらからダウンロードできます。
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
最も簡単な使い方は、ZAPのクイックスタートを使用する方法です。
ZAPをダウンロード&起動すると、下記のような画面が出るので、攻撃対象URLに、テストしたいサイトのURLを入力します。
※ただし、絶対に許可を得ていないサイトに対して行わないでください。
本当の攻撃と認識されますので、自分が保有していて、テストしても問題ないサイトで行います。
すると、自動的に動的スキャン、静的スキャンの純に、様々な攻撃テストを実行してくれます。
動的スキャンでは、下部「動的スキャン」タブの、”以下の進捗詳細アイコン”をクリックすると、どんなテストを行っているか詳細試験項目が表示されます。
以下のように、パストラバーサル、リモートファイルインクルージョン、クロスサイトスクリプティング等々、試験項目がわかります。それぞれどんな攻撃内容かを調べるだけでも勉強になりますね。
全ての自動スキャンが終了すると、「アラート」タブに切り替わり、見つかった脅威の結果が表示されます。
クイックスタートから行う自動テストの以外の方法として、ZAPをプロキシとして使用する方法がマニュアルで紹介されています。
具体的には、ZAPを起動すると、自動的にZAPがプロキシサーバーとしての役割をし、localhostのポート番号8080番号でプロキシサーバとして起動します。
ブラウザの設定変更をして、ZAPをプロキシとして使用するようにします。
そうすることで、ブラウザとウェブサイト間の通信をZAPが中継しますので、自分のブラウザ遷移や操作による脆弱性のチェックを勝手におこなってくれるというメリットがあります。
また、以下の×ボタンからブレークポイントをはることができます。
ブレークポイントをはると、ブラウザとウェブサイトとの通信の際に、一旦通信をZAPが受けとった時点でストップすることができ、ブラウザからウェブサイトへ送信しようとしていたパラメータを書き換えて送ることができます。
たとえば、名前や住所、電話番号を入力するようなサイトで、名前が漢字かどうか、電話番号が半角数値とハイフンだけかどうかというチェックをブラウザ側のjavascriptでだけチェックしている場合は、サーバーに送られる途中でアルファベットを入れ込んだり、全角文字に書き換えて送ってみて、サーバー側がどのような挙動になるかを確認できたりします。
サーバーで脆弱性が見つかった場合はどのようなアラートが出るかを確認するため、わざと脆弱性を持ったやられ役のサイトが、同じくOWASPの「Broken Web Applications Project」でVMWareの仮想イメージで配布されています。
https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project
今回、実際に一通り使ってみて、ダウンロードしてクイックスタートの動的スキャンをするだけであれば、ハードルが低く、誰でも実践できるなと思いました。
ただ、そこでクリティカルなセキュリティの脆弱性が見つかった場合にどう対処すればいいのか。プロキシとして動かしてパラメータの書き換えテストなどをするのは、全く業界違いの人にとってはちょっと難易度高いかなと思います。
それでも難しいことを考えず、まずは無料で実践できる上記のツールをダウンロードして試してみてはいかがでしょうか?
でも、最後にもう一度注意しておきます。
他人のサイトに無許可にこのツールを使用するのは絶対にやめましょう!
オープンソース geek(変人)列伝 バックナンバー