そもそもペネトレーションテストとは?
ペネトレーションテストとは、インターネットなどのネットワークに接続しているコンピュータシステムに対して、実際に既知の技術を用いて侵入を試みることで、開発したシステムにセキュリティ上の観点から脆弱性が存在していないかどうかテストする手法のことです。
日本語の場合、「侵入実験」、「侵入テスト」と訳されることもあります。ペネトレーションテストには無料で提供されているツールも存在しているため、容易にテストを実施することもできます。しかし、セキュリティを重視したテストを行うためには、ペネトレーションテストを実施する際に、有料で提供されているツールを用いたり、セキュリティに特化した企業に依頼したりすることも必要でしょう。
ペネトレーションテストと脆弱性診断の違い
「ペネトレーションテスト」と「脆弱性診断」は、どちらもシステムのセキュリティ対策の観点から実施するという共通点があるため、同じ内容だと勘違いされる方も多いです。しかし両者には、その目的とテスト方法に違いがあります。ここからは、それぞれの違いについて説明しましょう。
1.ペネトレーションテスト ペネトレーションテストの目的は、明確な意図をもった攻撃者のその攻撃が成功されてしまうかを検証することです。ペネトレーションテストでは主に、攻撃者がよく用いるツールやソーシャルエンジニアリングなどを利用して、一定の期間の間で攻撃が成功するかの調査を行います。検証する対象のシステムの構成に応じて想定される攻撃の手順を検討し、手順書を作成することで、実際に攻撃が成功するかをテストしていきます。したがって、ペネトレーションテストは、開発したシステム全体を網羅的にテストするのではなく、1つでも特定の脆弱性を発見することを目的としたテストと言えるでしょう。
2.脆弱性診断 脆弱性診断の目的は、開発したシステムに存在する脆弱性やセキュリティ機能の不足を、網羅的に検査することです。脆弱性診断では主に、事前に用意されているガイドラインなどに従って定型的な方法で調査を行います。具体的には、WEBアプリケーションやファイアウォール、ルーターなど、システム内やネットワーク内に潜んでいる脆弱性を特定します。そのため検査範囲は、ペネトレーションテストと比較すると広範囲に渡るでしょう。既知の脆弱性に対する攻撃の検証には効果的ですが、ゼロデイ攻撃などのリスクの検出には向いていないと言えるでしょう。
以上のことを踏まえて、ペネトレーションテストは攻撃を予防するためのテスト、脆弱性診断は攻撃されるリスクを発見するためのテストと言えるでしょう。
ペネトレーションテストの実施方法
ここからは、ペネトレーションテストの具体的な実施方法について紹介しましょう。ペネトレーションテストは、実施する企業や使用するツールなどによって方法が異なります。しかし、一般的に、次のような流れで実施する場合が多いでしょう。
まず、ペネトレーションテストを実施するための準備や、ヒアリング調査を行います。テスト対象となるシステムのネットワークの構成、個人や企業などの機密情報の保管状態などを考慮した上で、どのようにテストを行うか手順書を作成します。そして、テスト結果より出力された脆弱性に対して、具体的な対策方法について検討することになるでしょう。
次に、実際に攻撃や侵入テストを実施します。作成した手順に従って攻撃や侵入を実施して、結果を記録していきます。自動的に行われるテストや、手動で行うテストの場合があり、さまざまな方法で攻撃や侵入を実施します。最後に、報告書の作成を行います。その後、テスト結果についてまとめ、上司やプロジェクトメンバーに情報共有を行うことになるでしょう。
テストにおける攻撃方法は大きく分けると「ホワイトボックステスト」「ブラックボックステスト」「外部ペネトレーションテスト」「内部ペネトレーションテスト」の4つ存在します。ペネトレーションテストを実施するための準備段階でテストの手順書を作成し、「ホワイトボックステスト」や「ブラックボックステスト」を組み合わせて複合的にテストを実施することも多いでしょう。
ペネトレーションテストの費用
ここでは、ペネトレーションテストにかかる費用について紹介します。冒頭でも述べた通り、無料で提供されているツールも存在しますが、セキュリティを重視するならばおすすめできません。ペネトレーションテストの費用は、実施する企業やテストの内容、テストを実施する人のスキル、必要な期間、使用するツールの種類などによって大きく異なります。たとえば、数万円から数千万円まで費用がかかる可能性はあるでしょう。
無料ツールには、「Maltego」「OWASP Zed Attack Proxy」「Skipfish」などのペネトレーションテスト用のツールが公開されています。これらの無料ツールを使ったペネトレーションテストでは、予め定められている基本的な項目しか検証することができません。
セキュリティを重視する観点からペネトレーションテストを行う場合は、開発したシステムやネットワーク構成に応じて手順書を作成し、長い期間を設けて実施するため、高額になることが多いです。高度なペネトレーションテストを実施する場合には、事前にシステム構成を把握するための情報収集が必要でしょう。
また、作業内容によって費用も大幅に異なります。そのため、ペネトレーションテストの費用を知るためには、ペネトレーションテスト実施する企業などに個別に見積りを行う必要がある場合が多いでしょう。
ペネトレーションテストを行うメリットとデメリット
これまでにペネトレーションテストについての詳細を紹介してきました。ここからは、ペネトレーションテストを行うメリットとデメリットについて解説します。
ペネトレーションテストを行う3つのメリット
ここでは、ペネトレーションテストを行うメリットについて3つ紹介しましょう。
1.開発したシステムに脆弱性があるか調査できる ペネトレーションテストでは開発したシステムに侵入を行うことで、システムの脆弱性を検証します。あくまでもペネトレーションテストとして、システムに侵入を行うため、安全で客観的にテストを実施することができるでしょう。システム開発は開発者側の視点で行われますが、ペネトレーションテストは攻撃者側の視点でテストを行います。したがって、開発時には想定していない脆弱性が見つかる可能性もあるでしょう。
2.システム環境に合わせたテストができる ペネトレーションテストでは、まず事前にシステム環境について調査します。たとえば、ネットワークの環境、データベースの構成、ソフトウェアのバージョンなどについて調査し、テストを行う手順書を作成します。作成した手順書をもとに、開発したシステムへ攻撃や侵入を行います。したがって、ペネトレーションテストを行うシステムの環境に合わせてテストを実施することができるでしょう。
3.テスト後の報告書より脆弱性を解決するための行動をおこすことができる ペネトレーションテストを実施した後、テストを行った企業から報告書が提供されます。報告書には、検出された脆弱性の危険度などが記述され、脆弱性の評価や、検査対象のシステム全体の概要などが報告書としてまとめられます。報告書をもとに報告会が行われることも多く、検出された脆弱性に対する具体的な解決策も掲示され、システムを開発した企業は脆弱性を解決するための行動を起こすことができます。その後、報告を受けた脆弱性が実際に改善することができたか、再度ペネトレーションテストを実施する場合も多いでしょう。
ペネトレーションテストを行う2つのデメリット
ここでは、ペネトレーションテストを行うデメリットについて2つ紹介しましょう。
1.膨大なコストがかかる可能性もある 大規模システムにおけるテストや、テスト内容によっては、多くのコストがかかる可能性があります。また、テストにかかる期間も数日に渡って行われることもあるでしょう。なお、ペネトレーションテストは特定の機能や資産に対してのみ行うこともできます。コストバランスを考慮し、開発したシステムの一部にのみ適用したテストを実施することが必要な場合もあるでしょう。
2.テスト実施者の技術によって成果が異なる場合がある ペネトレーションテストの実施者は、セキュリティに関する高度なスキルを持っていることが要求されます。セキュリティに関する豊富な知識に加えて、テストで使用するツールの中身や操作方法を深くまで理解していることも重要です。そのため、ペネトレーションテストを実施する企業やテストを実施するエンジニアのスキルによって、検出される脆弱性やその対応策が異なる場合もあります。したがって、ペネトレーションテストを行うときは、依頼先の企業のペネトレーションテストの実績を事前に把握しておくことが重要だと言えるでしょう。
セキュリティを守るためにもペネトレーションテストは重要!
ペネトレーションテストの詳細や脆弱性診断との違い、ペネトレーションを行うメリット・デメリットについて紹介してきました。近年、セキュリティ対策は重要視される傾向にあります。そのためペネトレーションテストを実施することは重要でしょう。ただし、コストが多くかかることや、テストを行う上で高度なスキルを求められることに注意しましょう。
開発したシステム環境の重視している要件を考慮し、テストの実施者と相談した上で、自社でテストを実施するのか、テストを企業へ委託するのか、より良い効果的な方法を選択することが重要だと言えるでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから