「新しくシステムを開発したけど、セキュリティ対策が十分にできているか心配だ」そんな人にぜひやって欲しいセキュリティ対策の1つが「ペネトレーションテスト」です。
今回は「ペネトレーションテストって何?」という人から、実際にその方法を調べている方、さらにはサービスを探している方にも満足いただけるように、ペネトレーションテストについての解説を整理させていただきました。ぜひ最後までご覧ください。
この記事の目次
ペネトレーションテストとは
「ペネトレーション」とは英語で「Penetration」とつづります。その単語単独では「貫通」「浸透」「侵入」という意味を表す言葉です。そして「ペネトレーションテスト」は日本語では「侵入テスト」と略されています。「ペンテスト」と省略されることもあります。
具体的には、インターネットなどの外部と接続されたネットワークを通じて、コンピュータシステムの安全性を調べるテストの事で、実際のハッカーによる攻撃手法を試みながら、システムやネットワークの脆弱性を発見するためのセキュリティチェックのことになります。
ペネトレーションテストの必要性
システムの開発が完了し、公開・運用に移行する前に、実際に攻撃を体験しておくことが重要です。その際にペネトレーションテストを利用します。防御に徹するだけでなく、攻撃者がどのような手法で攻撃するのか体験しておけば、より効果的な防御方法を構築することができるからですね。
ペネトレーションテストではシステムに侵入できるかどうかをテストするだけではありません。他には、
- システムからどういった情報を取得できるか
- 例えばDDoS攻撃を受けた時にどれほど耐えることができるか
- 実際に侵入されたときに、どれほどの被害が発生するのか
なども調査することも目的となります。
ペネトレーションテストは、システムが運用段階に移る前に1度だけやれば十分というものではありません。
外部からのサイバー攻撃は日々進化しています。セキュリティ対策を継続的に見直し、不具合があったら改善していくというサイクルを回すことが重要ですので、そのためにも、ペネトレーションテストは定期的に実行することが必要です。
ペネトレーションテストの方法
使用するツールやサービスによって、ペネトレーションテストの実施方法は異なりますが、概ね以下のような流れで実施されます。
1.ヒアリング・準備 | テスト対象のシステムのネットワークの構成、個人情報や機密情報の保管状態、アクセスログなどの取得状況などを考慮し、どのような診断・テストを行うかシナリオを作成します。 |
---|---|
2.攻撃・侵入テスト | 作成したシナリオに従って攻撃・侵入を実施して、結果を記録します。 自動的に行われるテストや、手動で行うテストや確認など様々な方法で攻撃・侵入を行います。 |
3.報告書の作成 | テスト結果をまとめ、報告書を作成します。 |
攻撃者が実際に攻撃するときには、いきなりネットワーク越しに不正アクセスを行うのではなく、まず情報収集の1つとしてソーシャル・エンジニアリングから始めることがあります。
複数の方法を使い、システムの情報や機密情報を盗もうとします。そこで盗んだ情報を悪用して、実際にシステムに攻撃・侵入を行うケースも数多くあります。
また、攻撃・侵入テストの方法には大きく分けて4つあります
- ホワイトボックステスト
テスト対象のシステムの内部の構造を把握した上で、顧客に合わせた内容でテストを行います。 - ブラックボックステスト
テスト対象のシステムの内部構造は考慮せずに、外部から把握できる機能を検証するテストです。 - 外部ペネトレーションテスト
攻撃者がシステムの外部から攻撃してくることを想定したテストです。 - 内部ペネトレーションテスト
システムの内部にすでに攻撃者が侵入していることを想定したテストです。
一般的にペネトレーションテストを行う際は、ホワイトボックステストとブラックボックステストを組みあわせて複合的にテストを行います。
インターネットを経由した外部からの攻撃を想定してブラックボックステストを行う。あるいは、内部犯行を想定してホワイトボックステストを実施するなど、あらかじめ攻撃手法を想定してテストを行う事もあります。
ペネトレーションテストを実施した後は、報告書やレポートなど作成することがあります。
攻撃に成功した回数や時間、管理者権限の取得の経路などをまとめたレポートです。脆弱性が存在する箇所については具体的な対策方法なども提示されます。
個人でもペネトレーションテストが行える無料ツール紹介
ペネトレーションテストを無料で行える代表的なツールを4つ紹介します。
Kali Linux
Kali LinuxとはLinux OSのディストリビューションの1つです。ペネトレーション向けの機能が標準で充実しています。2013年からBackTrack Linuxから派生したディストリビューションでDebianをベースにしています。公式サイトから無料でダウンロードして使う事ができます。
サイトKali Linux
Maltego
特定のドメインやURL、サーバ、メールアドレス、ネットワークに関する様々なデータを自動的に収集してグラフィカルに可視化するツールです。Kali Linuxに標準でインストールされていますが、Windows版も存在します。個人利用者向けの「Maltego CE」は無料で使えますが、商用利用が目的の場合はライセンスを購入する必要があります。
エディション | Maltego CE | Maltego Classic | Maltego XL |
---|---|---|---|
商用利用 | ○ | × | × |
グラフに表示できる要素数 | 10,000 | 10,000 | 1,000,000 |
技術サポート | 無し | 有り | 有り |
価格 | 無料 | 760ドル | 1800ドル |
更新費用(1年ごと) | 無料 | 320ドル | 760ドル |
サイトMaltego
OWASP Zed Attack Proxy(ZAP)
XSSやCSRF、SQLインジェクションなど主要な脆弱性をチェックできるツールです。テスト対象となるURLを指定すると、自動的に対象のサイトをクローリングし、URLを収集して検証します。テスト結果はリスクの重要度によってHIGHからLOWまで分類することができます。また問題点の内容や対処方法についても説明してくれる機能があります。
また、IPAテクニカルウォッチ「ウェブサイトにおける脆弱性検査手法の紹介」で検知精度が高く初心者向けのツールとして紹介されているペネトレーションテスト用のツールです。
参考
IPAテクニカルウォッチ 「ウェブサイトにおける脆弱性検査手法の紹介」の公開
無料で使用する事ができるオープンソースのツールとしてGithubにてソースコードが公開されています。
サイトOWASP ZAP
Skipfish
Webアプリケーションに特化してテストできるツールです。Googleが開発しているツールになります。WebサイトをクローリングしてURLを抽出し、そのURLに対して特定のパターンでアクセスすることで脆弱性を発見します。SQLインジェクションやコマンドインジェクションをはじめ、プロキシを利用した脆弱性検査ツールである「Ratproxy」の技術を使用して、クロスサイトスクリプティングやクロスサイトリクエストフォージェリなども検出できます。調査結果はHTMLファイルとして保存されます。
サイトskipfish
ペネトレーションテストサービス比較
国内のセキュリティ企業が実施しているペネトレーションテストサービスを比較して紹介します。
同じ企業が実施しているペネトレーションテストでも、テスト対象のシステムを運営している企業によって、テスト項目や費用などは大きく変わってくることがあります。企業によっては、一般的なセキュリティ診断の上位サービスとしてペネトレーションテストを設けている場合もあります。
アルファネットペネトレーションテスト
調査・攻撃・達成を1サイクルと考えテストを実施します。その為、サイトの規模に関係なく機能レベルなどから30リクエスト程度を選定し、リスク評価するため安価で分かりやすい料金形態を実現しました。
LAC ペネトレーションテストサービス
1995年に日本で初めてセキュリティ診断サービスを提供したラックが、これまでのノウハウを活用した、侵入を中心とする総合的セキュリティサービスとして提供するペネトレーションテストサービスです。テストの実施には最低でも3か月ほど費やし、費用としては1000万円~2000万円を想定しています。
セキュリティイニシアティブ ペネトレーションテスト
実際に攻撃者が行う手法・ツールを使って脆弱性スキャンでは発見できない脆弱性を検証します。セキュリティ上の問題がある場合は、それがどういったものであるのか技術者・非技術者のどちらにもわかるような形として、報告・解消・修正する方法をコンサルティングしています。「PCI DSS Ver3.1」「NIST SP 800-115」に準拠した形でテストを実施します。費用は税抜きで60万円からです。
アズジェント ペネトレーションテスト
Webアプリケーションとネットワークの両方の観点からペネトレーションテストを行うサービス。WebアプリケーションではクロスサイトスクリプティングやSQLインジェクション、セッション管理などの検査項目についてテストを行います。ネットークでは、管理されているサーバやネットワーク機器に対してリモートアクセスによる検査や、ネットワーク内部からの検査を行い、OSのセキュリティ状況を確認し対策について報告します。
サイトアズジェント ペネトレーションテスト
費用の相場は?
これまで紹介してきたツールやサービスなどからわかるように、ペネトレーションテストに必要な費用には大きな幅があります。無料で使用できるツールは、限られた機能や脆弱性のテストしか行えません。
しかし、高いスキルを持つエンジニアが専用のシナリオを想定して実施する、高度なペネトレーションテストの場合、テストに必要な費用は、数十万円から数千万円規模までと費用に大きな差があります。
テスト対象となるシステムの規模やテスト項目、そしてテストを行うエンジニアのスキルなどにもよって変わってくるからです。
また、ペネトレーションテストは1度テストを実施して安全が確認された後でも、定期的に実施することが望ましいです。その場合、2度目以降のテストにも費用が必要となることも考慮しておいた方がよいでしょう。
脆弱性診断との違いは?
脆弱性診断とペネトレーションテストを同じものだと思っている方がいらっしゃるかもしれません。両者は脆弱性を発見する点では同じですが、その後の対応で少し変わってきます。
脆弱性診断は脆弱性を発見する事を目的としています。診断を定期的に行い、脆弱性を発見して修正するといういうのが通常の流れとなります。テスト対象のサーバやシステムに対して、特定のコマンドを送信してOSやアプリケーションのバージョンなどの情報を取得し、どういった脆弱性を持っているのかを確認します。つまり脆弱性診断では実際に脆弱性があるかどうかはわからない場合があります。
ペネトレーションテストでは存在する脆弱性を悪用された時に、どの程度影響があるのかまで攻撃者の視点で検証することになります。そのため、ペネトレーションテストの方が、よりスキルの高いエンジニアによって行われる必要があります。
また、ペネトレーションテストの対象となるシステムやサーバはテストを行う際には、運営者の了承を得て、稼働中のシステムやサーバに影響がでないように行う必要があります。
まとめ
ペネトレーションテストは一般的な脆弱性診断よりも高い費用が必要ですが、システムのセキュリティ対策としてぜひ取り入れたい診断方法です。そして、テストを実施する前に、テストの目的を明確にしておくことが重要です。
セキュリティ上の問題点が存在した場合、どのようなリスクがあり、損失がどれくらい発生するのか見極める必要があります。開発したシステムの目的や性質に応じて、最適なペネトレーションテストを実行することが重要だと言えるでしょう。