2024年 6月11日公開
ペネトレーションテストとは?知っておきたいペネトレの基本
近年、自社システムに対するセキュリティテストの1つとしてペネトレーションテストが注目されつつあります。
しかしながら「ペネトレーションテスト」という単語は聞いたことがあっても、実際にはどういうことを行うのかよく分からない、脆弱性診断との違いが分からないと思っている方も多いのではないでしょうか?
そんな方のために、この記事ではペネトレーションテストの概要、そのメリットや注意点、実際にテストを行う際のシナリオ例などを分かりやすく解説していきます。
ペネトレーションテストとは?
ペネトレーションテスト(Penetration Test)とは、実際の攻撃者視点で対象システムへの侵入を試み、実在する脆弱性を悪用することでどういう被害が発生するかを検証するテスト手法の一種です。侵入テスト、ペネトレ、ペンテストなどと呼ばれることもあります。一般的には実際に攻撃者が行いそうな攻撃シナリオを作成し、そのシナリオに沿って疑似攻撃を行っていきます。
ペネトレーションテストは、よく混同されがちな「脆弱性診断」とは別物なので注意が必要です。脆弱性診断との大きな違いは、その検査目的です。
脆弱性診断では「システムに存在する脆弱性を網羅的に見つけ出すこと」を目的としていますが、ペネトレーションテストでは「テスト対象に存在する脆弱性を実際に悪用することで、どのような被害が発生するかを検証すること」を目的としています。
ペネトレーションテストでは実際の攻撃が行われた際の被害の影響範囲などを事前に把握することが可能ですが、システムに存在する脆弱性を洗い出すようなことはしないという特徴があります。(脆弱性を見つけ出すことが目的ではない)
基本的には、脆弱性診断を実施して一通り脆弱性を解消させ、さらにセキュリティ対策を十分に施した上でペネトレーションテストを行うことが望ましいです。
簡単に見つかりやすい脆弱性を事前に解消しておくことでペネトレーションテストではより高度な攻撃を検証でき、効果的なテスト結果を得ることができます。
ペネトレーションテストの種類
一口にペネトレーションテストと言っても、いくつかの検査方法が存在します。ここでは「シナリオの種類」と「テストの種類」の大きく二つに分けて紹介します。
【シナリオの種類】
攻撃シナリオの前提によって大きく以下の二つに分けられます。
・外部ペネトレーションテスト
攻撃者が組織内部に侵入する前のシナリオを想定します。
例えば、攻撃者がインターネットを介して外部からポートスキャン (*1) などを行い、標的とする端末に空いている穴を探します。穴を見つけた場合、実際にそこから侵入できるかを検証していきます。
・内部ペネトレーションテスト
攻撃者が組織内部へ侵入した後のシナリオを想定します。
例えば、従業員の内部犯行やマルウェア感染により、社内の極秘情報を検知されずに外部へ持ち出せるかを検証していきます。
【テストの種類】
事前にテスト対象の内部構造をどれだけ把握している状態で実施するかによって、以下の三つの種類に分けられます。
・ブラックボックステスト
システムの内部構造やコードなどの情報は把握せず、テストに必要な最低限の情報だけが与えられた状態で行うテスト方法です。
実際の攻撃者とほぼ同じような状態でテストを行うため、より現実的なシナリオをシミュレートできます。ただし、検査員はサーバの振る舞いなどから情報を集める必要があるため、効率よく攻撃を行えない可能性があります。
・ホワイトボックステスト
システムの内部構造やコードなどの情報を把握している状態でテストを行います。
本来は公開されていないシステムのコードを確認できるため、ブラックボックステストでは見つかりにくいような脆弱性を探して攻撃を行うことが可能です。ただし、仕様書を読んだりコードを解析したりする必要があるためコストが大きくなります。
・グレーボックステスト
ブラックボックステストとホワイトボックステストの中間的なテスト方法です。
例えば内部システムのサーバ情報やネットワーク情報など、一部の情報を把握している状態でテストを行います。提供された情報を活用することで検査の効率化を図ることができ、かつ実際の攻撃者視点での検査も可能です。
実際にペネトレーションテストを実施する際は、目的やコストなどを総合的に考慮してどういうシナリオやテストを行うかを決めていきます。
(*1) コンピュータの開いている接続口(ポート)を調査する行為で、動作しているサービスを識別できる。
ペネトレーションテストのメリット
ペネトレーションテストには様々なメリットがありますが、ここでは大きく以下の4つに分けて紹介します。
①リスクの可視化
ペネトレーションテストは攻撃者の視点から実際にシステムへの侵入や攻撃を検証するため、本物の攻撃者が攻撃を行った場合にどのような影響がどの範囲まで発生するか、などを把握することができます。攻撃の侵入経路になりうる箇所や影響範囲を知っておくことで、効果的な対策を事前に講じることが可能となります。
②現状のセキュリティ対策の把握
実際の攻撃を検知・防御できるか?想定しているアラートは発生するか?など、現在のセキュリティ対策の効果を検証することが可能です。想定していた防御ができなかったとしても、ペネトレーションテストで発見した弱点を補うことでセキュリティをより強固にできます。また、実際に想定被害を体験・確認することで、従業員のセキュリティ意識の向上にもつながります。
③コンプライアンス確保、信頼性の向上
コンプライアンス要件として定期的なペネトレーションテストの実施が求められる場合があります。例えば、PCI DSS v4.0 (*2) では要件11に「外部および内部へのペネトレーションテストを定期的に実施し、悪用可能な脆弱性およびセキュリティ上の弱点を是正している。」との記述があります。また、ペネトレーションテストを実施していることを社外に公表することで企業の信頼性やイメージの向上に役立てることができます。
④インシデント発生時の影響の軽減
事前にペネトレーションテストを実施して防御策を講じておくことで、実際にインシデントが発生した際の情報漏えいやマルウェア感染などの影響を抑え、インシデント対応へのコストを減らしたり、顧客からの信頼性の低下を防いだりすることが可能になります。ペネトレーションテストのコストも小さくはありませんが、実際に情報漏えいや業務が停止した場合の損失額やブランドイメージの失墜、そこから復旧するまでのコストの方が大きくなりやすいと考えられます。
(*2) PCI DSS (Payment Card Industry Data Security Standard)とはクレジットカード会員の情報保護を目的としたセキュリティ基準のこと。v4.0はこちらからダウンロード可能: https://www.pcisecuritystandards.org/document_library/
ペネトレーションテストの注意点
ペネトレーションテストを実施するに当たり、注意しておくことがいくつかあります。ここでは大きく以下の4つに分けて紹介します。
①通常業務に影響が発生する可能性
ペネトレーションテストではなるべく通常業務に影響が出ないような疑似攻撃を行いますが、想定外の事故が起きる可能性はあります。例えば、大量のアラートの発生、システムへの高負荷、意図しない設定変更などがありえます。そのため、ペネトレーションテストを実施する際は、事前に環境のバックアップをとっておくなど、想定外の事態に備えて準備しておく必要があります。
②コストの問題
一般的に、ペネトレーションテストは脆弱性診断よりも高度な知識と技術力が必要になるため、脆弱性診断と比較すると金銭的・時間的コストは高くなる傾向があります。ただし、実際はテスト対象の範囲や期間によってコストは大きく変化します。また、ペネトレーションテストは準備も綿密に行う必要があるため、検査を実施するまでの準備にもコストがかかる場合があります。
③脆弱性を洗い出すことが目的ではない
ペネトレーションテストは脆弱性診断のように脆弱性を洗い出すことが目的ではなく、実際に存在する脆弱性を悪用することでどのようなことを行えるか、どのような影響が発生するかを検証することを目的にしています。ペネトレーションテストで脆弱性が見つかることはありますが、それを網羅的に調べているわけではないため、一般的には侵入に利用していない脆弱性は報告しない傾向にあります。
④事前準備、合意の重要性
ペネトレーションテストは事前準備や事前合意を綿密に行うことがとても重要です。計画段階で適切な検査範囲や禁止事項などの明確な設定、関係各所との調整などを行っていないとトラブルの要因になりえます。また、自社内だけではなく社外へ提供しているサービスにも影響を及ぼさないか、事前に確認しておく必要があります。
ペネトレーションテストの流れ
ペネトレーションテストを実施する際は、大まかに以下の3段階に分けて行われます。
① 事前準備
- ・ 目的と範囲の設定:まずはゴールとする想定被害(情報漏えいやランサムウェア感染など)と、テスト対象の範囲を具体的に決めます。
- ・ 禁止事項や実施内容の同意:通常業務に影響が出ないよう事前に禁止事項を決め、関係各所と調整を行っておく必要があります。
- ・ テスト計画の策定:テストシナリオや使用ツール、テストの実施期間や報告書のスケジュールなどを決めます。
- ・ 環境準備:テスト時に予期せぬ事故が起きる可能性があるため、事前にバックアップや復旧手順などを用意しておきます。また、検証環境で実施する場合はテスト用の環境を用意しておきます。
②ペネトレーションテストの実施
- テストの実施:検査員が実際に対象システムへの侵入を試み、想定していた被害を発生させることができるかを検証します。
- ・証拠収集:報告書に記載するための証拠を集めたり、テスト結果やテストの過程で得た情報をまとめます。
③報告
- ・報告書の作成・提出:テスト結果を報告書にまとめて提出します。
- ・報告会の実施:報告会を実施する場合、検査を実施した担当者が報告書の内容を元に解説します。
ペネトレーションテストのシナリオ例
では、実際にペネトレーションテストを行う際はどういう検証を行うのか、ここではランサムウェア (*3) に感染した場合の簡単なシナリオを考えてみます。
近年のランサムウェアはVPN機器の脆弱性を悪用したり、リモートデスクトップ経由で侵入するケースが多いです (*4) 。そのため、今回はスタートやゴールなどの設定を以下のように考えます。
① 事前準備
- ・種類:外部ペネトレーションテストかつブラックボックステスト
- ・範囲:検査対象に設定したネットワーク全体
- ・スタート:意図せずインターネット上に公開しているリモートデスクトップが有効な端末を探す
- ・ゴール:端末内のファイルを持ち出し、外部から持ち込んだプログラムを実行させる
このような設定の場合、例えば次のような攻撃シナリオが考えられます。
- 1. 外部からポートスキャンを行い、リモートデスクトップ機能が有効になっている端末を探す。
- 2. 1.で見つけた端末のユーザー名を推測し、パスワードに対して総当たり攻撃や辞書攻撃 (*5) などを行い侵入を試みる。
- 3. 侵入した端末上でシステム情報やネットワーク情報などの情報収集を行う。
- 4. 収集した情報を元に、管理者権限の取得や、ネットワーク内の別の端末に侵入できないかを試みる。
- 5. 侵入した端末上でテキストファイルを作成し、それを外部へ持ち出せるか検証する。
- 6. 疑似ランサムウェア(実際は無害)を外部から侵入した端末へ転送して実行させ、脅迫文風のメッセージを表示させる。
この例では侵入するところから検証していますが、すでに内部へ侵入している状態からテストを始めることも可能です(内部ペネトレーションテスト)。どういう前提や範囲でテストを行うかはお客様とのヒアリングを通して決定します。そのため、どのような状況でどういうテストを行うか、お客様側でも事前に考えていただけるとスムーズにテストを実施できます。
また、ペネトレーションテストでは実際に機密情報の持ち出しやファイルの暗号化など、意図的に実害を与えるような行為は行いません。この例では検査対象端末に事前にテキストファイルなどの検査用データを設置していただき、それを検査員が持ち出せるかという検証や、外部から持ち込んだメッセージを表示させるだけのプログラムを実行できるかという検証を想定しています。
このようなシナリオを元にペネトレーションテストを行うことで、実際にランサムウェアに感染した場合に影響範囲がどこまで広がるか、どの段階で攻撃を検知・防御できるか、などを把握することができます。ただし、テスト時には攻撃を防げたとしても、本物の攻撃を必ず防げるわけではないという点は注意が必要です。
(*3) ランサムウェアとは、感染した端末上のファイルを暗号化して人質に取り、金銭を要求するマルウェアのこと。最近はさらに機密情報を窃取し、『お金を払わなければインターネット上に窃取した機密情報を公開するぞ』と二重恐喝するケースも多い。
(*4) 警察庁が公開した「令和5年におけるサイバー空間をめぐる脅威の情勢等について」([PDF] https://www.npa.go.jp/publications/statistics/cybersecurity/data/R5/R05_cyber_jousei.pdf)によると、ランサムウェアの感染経路がVPN機器とリモートデスクトップで8割を占めている。
(*5) 総当たり攻撃は、想定される全てのパスワードの組み合わせを順番に試す手法。辞書攻撃は、よく使われるパスワードや単語などのリストを使う手法。
まとめ
ペネトレーションテストとは、実際の攻撃者視点で対象システムへの侵入を試み、実在する脆弱性を悪用することでどういう被害が発生するかを検証するテスト手法です。
テスト方法にはいくつかの種類があり、目的や検証したいシナリオ、コストなどを総合的に考慮して決めていきます。
ペネトレーションテストを実施することで、現在のセキュリティ対策でどこまで攻撃を防げるか?実際に攻撃が行われた際にどういう被害が発生するか?などを把握することができます。ただし、通常業務に影響を及ぼす可能性や、テスト内容によっては時間的・金銭的コストが高くなるなどの注意点があります。
すでに脆弱性診断を実施するなど自社のセキュリティ対策を十分に施しており、よりセキュリティを強固にしたい場合や現在のセキュリティ対策の効果を検証したい場合にペネトレーションテストの実施を検討してみてはいかがでしょうか。