テクノロジーが進化するにつれて、システムへのサイバー攻撃も多様化・巧妙化しつつあります。こうした中で、重要性が高まっているのが「ペネトレーションテスト」です。ペンテストや侵入テストと呼ばれることもあります。
ペネトレーションテストは、システムのセキュリティ性を高めるうえで重要となります。
今回はペネトレーションテストとは何か、基本から分かりやすくお伝えします。ペネトレーションテストの進め方や、間違えられやすい「脆弱性診断」との違いも紹介するため、ぜひ参考にしてみてください。
- もくじ
1.ペネトレーションテスト(侵入テスト)とは?
この章では、ペネトレーションテストの目的や、混同されやすい「脆弱性診断」との違いについて解説します。
1-1 ペネトレーションテストとは
ペネトレーションテストとは、サイバー攻撃が行われた際のシステムの振る舞いを検証するテスト手法です。「侵入」「貫通」などを意味する英語のペネトレーション(penetration)に由来します。
具体的には、テスター(テスト実行者)が仮想的な攻撃者となり、テスト対象システムへの侵入や攻撃を試みます。このとき、システムがサイバー攻撃を適切に防御・遮断できるかを検証するのがペネトレーションテストです。
1-2 ペネトレーションテストの目的
ペネトレーションテストの主な目的は、システムにおけるセキュリティ対策の強度を評価することです。特定のサイバー攻撃を再現した際に、正しい防御反応が行われるかを確かめることで、その攻撃に対するセキュリティ対策が十分なのかが分かります。
仮にサイバー攻撃を許してしまうのであれば、適切なセキュリティ対策を講じなければなりません。実践的なペネトレーションテストによって脆弱性を検出することは、システムのセキュリティ性向上につながります。
1-3 ペネトレーションテストと脆弱性診断の違い
ペネトレーションテストと混同されやすいものに「脆弱性診断」があります。脆弱性診断とは、システムに脆弱性(サイバー攻撃を許しかねない弱み)がないか診断することです。ソースコードや運用体制など幅広い観点で脆弱性がないか探し、見つかった脆弱性ごとに対策を講じます。必ずしもサイバー攻撃を実践するわけではありません。
一方でペネトレーションテストは、特定のサイバー攻撃に焦点を当てたシナリオを作成し、それを実践することで脆弱性が顕在化しないかを検証します。想定・懸念されるサイバー攻撃や脆弱性が前提に存在するのが、脆弱性診断との大きな違いです。
手法は異なりますが、どちらもシステムのセキュリティ性を高めるために必要な点は変わりません。なお、脆弱性診断とは何かについて詳しく知りたい方は、以下の記事を参考にしてください。
2.ペネトレーションテストの種類
ペネトレーションテストの主な種類は、「内部ペネトレーションテスト」「外部ペネトレーションテスト」の2つです。それぞれの種類について、特徴を解説します。
2-1 内部ペネトレーションテスト
「内部ペネトレーションテスト」は、システム内部からしかアクセスできない要素に対して実行します。主に内部犯行のサイバー攻撃を想定したペネトレーションテストです。たとえば、外部に公開していないデータベースサーバーや認証サーバーなどに侵入・攻撃を試みます。また、万が一システム外部の攻撃者に侵入された場合に、内部で被害を拡大させないためにも重要です。
2-2 外部ペネトレーションテスト
「外部ペネトレーションテスト」は、システム外部からアクセスできる要素に対して実行します。主に外部犯行のサイバー攻撃を想定したペネトレーションテストです。たとえば、外部からの受信が許可されたメールサーバーに侵入・攻撃を試みます。外部のさまざまな攻撃者を想定する必要があるため、漏れなく実施するためには多くのテストケースが必要です。
3.ペネトレーションテストの手法
ペネトレーションテストの手法として、主に「ホワイトボックステスト」「ブラックボックステスト」の2つがあります。それぞれの特徴やメリット・デメリットについて解説します。
3-1 ホワイトボックステスト
「ホワイトボックステスト」は、システムの内部構造を踏まえて実施するテスト手法です。内部の機器やコンポーネントの構成、プログラムの処理フローなどを把握したうえでシナリオを作成します。具体的な脆弱性を想定できるため、サイバー攻撃のシナリオを正確に作成しやすいでしょう。
ただし、開発者目線でのシナリオが中心となるため、外部の攻撃者目線でのテストケースは網羅できません。
ホワイトボックステストについては、以下の記事で詳しく解説しています。
3-2 ブラックボックステスト
「ブラックボックステスト」は、システムの内部構造を考慮せず、主に仕様のみを踏まえて実行するテスト手法です。テストケース作成者やテスト実施者は、システムの内部構造を把握していない状態でテストを進めます。開発者目線の前提がない分、攻撃者目線に立ったシナリオを漏れなく作成可能です。
ただし、内部構造から脆弱性に当たりを付けられない分、システムの実態に即したシナリオの作成は難しいでしょう。
ブラックボックステストについては、以下の記事で詳しく解説しています。
4.ペネトレーションテストの大まかな進め方 5ステップ
ペネトレーションテストの進め方を知っておきましょう。ペネトレーションテストは、大まかに次の5ステップに沿って進めていきます。
ステップ1 テスト計画
まずは、どのようにペネトレーションテストを進めていくか計画を立てます。テストの実行目的や攻撃対象・範囲、担当者、スケジュールなどを明確にします。ペネトレーションテストには専門知識を持つ人材や専用のツールなどが必要です。必要なものが足りずスケジュールに遅延が生じることがないよう、この段階で専門家への依頼やツールの確保などを行うと良いでしょう。
ステップ2 シナリオ作成
次に、ペネトレーションテストの実施に用いるシナリオを作成します。ペネトレーションテストには、特定のサイバー攻撃を想定した具体的なシナリオが必要です。サイバー攻撃が成立するテスト条件やテスト手順、それらに対してシステムが取るべき防御反応(=期待値)などを明確にします。
シナリオに不備があると、意味のないテストになりかねません。そのため、セキュリティの専門家からのアドバイスや、サイバー攻撃に関する公的な情報などを活用すると良いでしょう。
ステップ3 環境構築
続いて、作成したシナリオを実行するために必要となる環境を構築します。攻撃を再現するための機器・ツールの導入や設定、攻撃用のアカウントやスクリプトの作成などを行います。セキュリティやプログラミングに関する専門知識が必要となる可能性が高いため、専門家のサポートを受けることが理想です。
ステップ4 テスト実行
テスト環境を用いて、実際にペネトレーションテストを実行します。シナリオの条件・手順に沿って侵入・攻撃を試み、システムが期待値どおりに防御できるかを検証する流れです。テスト実行においては、攻撃時の振る舞い(応答速度や画面の状態など)も記録・測定することが大切です。一見して侵入・攻撃が成功しなかったとしても、パフォーマンスの低下や異常な表示などが起きている場合もあります。
ステップ5 分析・レポート作成
テストをひと通り実行した後は、結果を分析します。NGだったシナリオの確認だけでは不十分です。パフォーマンスが低下していないか、パターンを変えると攻撃が成功しないか、などさまざまな観点で分析しましょう。分析結果はレポートとしてまとめ、関係者へ共有します。思わしくない結果であれば、協議のうえセキュリティ対策が必要です。
5.ペネトレーションテストを成功につなげる方法
ペネトレーションテストを導入する方法は、主に2つあります。ペネトレーションテストを成功につなげるために、自社に合った方法を選びましょう。
5-1 ツールを活用して自社で実行する
ペネトレーションテストに役立つツールは数多くあります。たとえば、シナリオに沿ったシステムの操作を自動化するツール、攻撃時のパフォーマンスを測定するツールなどが挙げられます。こうしたツールを正しく活用すれば、自社でペネトレーションテストを実行することも不可能ではありません。
ただし、ペネトレーションテストには専門知識が必要です。知識が不十分な状態でテストを実施すると、実施内容に不備が生じてテスト品質が下がるリスクもあります。
5-2 専門家に依頼する
ペネトレーションテストは、脆弱性診断と比べてツールでカバーできない手動プロセスが多いため、より専門知識が重要となります。セキュリティやテストに関する専門知識を持つ人材を確保できない場合、高品質なペネトレーションテストの実施は難しいでしょう。
高品質なペネトレーションテストを実行したい場合は、専門家に依頼するのが確実です。当サイトを運営するバルテスのペネトレーションテストサービスでは、企業のシステムや目的に合わせて適切にテストを実行します。ペネトレーションテストを正しく実施できるか不安がある場合は、ぜひご活用ください。
まとめ
ペネトレーションテストとは、サイバー攻撃が行われた際のシステムの振る舞いを検証するテスト手法です。
システムのセキュリティ対策の強度を評価することを目的といて行われます。攻撃者によるサイバー攻撃を想定して実行するため、適切な実行にはセキュリティやテストなどに関する専門知識が求められます。
システムのセキュリティを強化するためには、適切なペネトレーションテストを実行することが大切です。ペネトレーションテストを実行する際には、今回の内容をぜひ参考にしてみてください。