ペネトレーションテストとは、攻撃者と同じ視点で実際にシステムへ侵入を試み、防御が本当に機能するかを実証的に確かめるセキュリティ検査です。弱点を一覧化する脆弱性診断とは目的が異なり、「見つけた穴が本当に悪用できるのか」「侵入された場合どこまで到達されるのか」を攻撃シナリオで検証します。この記事では、脆弱性診断との違い、テストの種類と手法(ブラックボックス/ホワイトボックス/グレーボックス)、事前調査から報告までの流れ、主要ツール、そして実施前に必ず押さえたい法的・運用上の注意までを、発注前の判断に必要な範囲で順に解説します。
まとめ:この記事の要点
- ペネトレーションテストは「攻撃者視点で侵入を実証する」検査。脆弱性診断の「弱点を網羅的に洗い出す」検査とは目的が異なる。
- 種類は対象で分けると外部・内部・Webアプリ・クラウド・ソーシャルエンジニアリングの5系統。
- 手法は事前情報の与え方でブラックボックス/ホワイトボックス/グレーボックスに分かれる。
- 実施の流れは事前調査→スキャン→侵入→権限昇格→報告の5ステップ。PTESやNIST SP 800-115といった標準がこの流れを裏付ける。
- 実施前にスコープと許諾範囲(RoE)を書面で確定しないと、不正アクセス禁止法や本番障害のリスクを負う。
ペネトレーションテストの定義と目的
ペネトレーションテスト(penetration testing、ペンテスト)は、標的のシステム・ネットワーク・アプリケーションに対して実際の攻撃を模擬的に仕掛け、既知・未知の脆弱性を悪用して侵入できるか、侵入された場合にどこまで被害が及ぶかを評価する検査です。「penetration=侵入・貫通」という語のとおり、目的は脆弱性の列挙ではなく、防御が実戦で機能するかの実証にあります。
たとえば「この公開サーバーの脆弱性を突いて内部ネットワークの顧客データベースまで到達できるか」といった具体的な攻撃目標(ゴール)を設定し、達成可否と経路を明らかにします。これにより、個々の脆弱性の技術的な深刻度だけでは見えない、組織全体としての実際のリスクを評価できる点が特徴です。
脆弱性診断との違い(網羅性か、侵入の実証か)
もっとも混同されやすいのが脆弱性診断(セキュリティ診断)との違いです。両者は目的が根本的に異なり、優劣ではなく用途で使い分けます。脆弱性診断は弱点を「広く漏れなく」洗い出す網羅性を重視し、ペネトレーションテストは特定の攻撃目標に対して「深く侵入できるか」を実証する点を重視します。
| 観点 | 脆弱性診断 | ペネトレーションテスト |
|---|---|---|
| 目的 | 弱点の網羅的な検出 | 侵入可否と被害範囲の実証 |
| 視点 | 検査(点検リスト) | 攻撃者視点(攻撃シナリオ) |
| 網羅性 | 高い(広く浅く) | 限定的(狭く深く) |
| ゴール設定 | なし(対象全体を診断) | あり(到達目標を定義) |
| 成果物 | 検出脆弱性の一覧と深刻度 | 侵入経路・到達点・攻撃ストーリー |
脆弱性診断は弱点を網羅的に洗い出せる一方、「その弱点が実際の攻撃で悪用され、防御をすり抜けられるか」までは検証しません。ペネトレーションテストはそこを埋める演習ですが、対象を絞るため網羅性は下がります。多くの組織は脆弱性診断で全体の弱点を把握したうえで、重要システムにペネトレーションテストを重ねる二段構えを取ります。目的・費用・発注前の使い分けはペネトレーションテストと脆弱性診断の違い|目的・費用・使い分けを発注前に整理で詳しく整理しています。
ペネトレーションテストの種類(対象別の5系統)
ペネトレーションテストは「どこを攻撃対象にするか」で分類されます。実務では次の5系統がよく使われ、依頼時はまずどの対象を検証したいかを決めます。
| 種類 | 対象 | 主に確かめること |
|---|---|---|
| 外部ペネトレーションテスト | インターネット公開資産 | 外部から内部への侵入可否 |
| 内部ペネトレーションテスト | 社内ネットワーク・端末 | 侵入後の横展開・権限昇格 |
| Webアプリケーション | Webアプリ・API | 認証突破・データ窃取・改ざん |
| クラウド | IaaS/PaaSの設定・権限 | 設定不備・IAM経由の到達 |
| ソーシャルエンジニアリング | 人・運用プロセス | 標的型メール等での突破 |
外部テストは「攻撃者がまず入口を突破できるか」、内部テストは「入口を突破された後、どこまで被害が広がるか(ランサムウェア被害の想定に近い)」を見ます。クラウドは対象事業者ごとに許可される検証範囲や事前申請の要否がサービス規約で定められているため、実施前の規約確認が欠かせません。ソーシャルエンジニアリングは技術的欠陥ではなく人の判断を突くもので、標的型メール訓練などが該当します。
ペネトレーションテストの手法(事前情報の与え方で3分類)
「手法」は、テスト実施者にどこまで事前情報を渡すかで3つに分かれます。攻撃者がどの程度の情報を持っている状況を想定するかによって選びます。
| 手法 | 与える情報 | 想定する攻撃者 |
|---|---|---|
| ブラックボックス | ほぼなし | 内部事情を知らない外部攻撃者 |
| ホワイトボックス | 構成・設計・ソース等すべて | 内部関係者・情報漏えい後の攻撃者 |
| グレーボックス | 一部(一般ユーザー権限等) | 一般アカウントを得た攻撃者 |
ブラックボックスは実際の外部攻撃に近い現実性がある反面、限られた時間では見逃しも生じやすい方法です。ホワイトボックスは情報を開示するぶん短時間で深く検証でき、内部脅威や漏えい後を想定する場合に有効です。グレーボックスはその中間で、一般ユーザーアカウントを付与して「正規利用者が悪意を持ったら」を検証するなど、現実的なシナリオを効率よく確かめられるため実務での採用が多い手法です。
こうした手法や手順には国際的な標準があり、Web系はOWASPのWSTG(Web Security Testing Guide、v4.2)が認証・認可・入力検証など多岐にわたる検証項目を体系化しています。全体プロセスはPTES(Penetration Testing Execution Standard、7フェーズ)やNIST SP 800-115が参照されます。ベンダー選定時は、どの標準に準拠しているかが品質の目安になります。
ペネトレーションテストの流れ(事前調査から報告まで5ステップ)
実施の流れは標準によって呼称が異なりますが、実務上は次の5ステップに集約できます。PTESやNIST SP 800-115もこの順序を基本としています。
1. 事前調査・計画(スコープと目標の確定)
対象範囲、攻撃の到達目標、実施期間、禁止事項をルール・オブ・エンゲージメント(RoE)として書面化します。次に公開情報やDNS・ドメイン情報を収集し、攻撃の足がかりを洗い出します(PTESでいうPre-engagementとIntelligence Gathering)。ここでの合意が曖昧だと、後述の法的・運用リスクに直結します。
2. スキャン(探索・脆弱性の特定)
Nmapなどでホストやポート、稼働サービスを特定し、既知の脆弱性を突き合わせて侵入の入口候補を絞り込みます(NIST SP 800-115のDiscovery、PTESのVulnerability Analysisに相当)。
3. 侵入(脆弱性の悪用)
絞り込んだ脆弱性に対して実際に攻撃コードを実行し、侵入できるかを実証します(Exploitation)。ここが脆弱性診断との決定的な違いで、「悪用可能性」を机上でなく実地で確かめる工程です。
4. 権限昇格・横展開(被害範囲の確認)
侵入に成功したら、一般権限から管理者権限への昇格や、隣接システムへの横展開を試み、当初の攻撃目標(顧客データ到達など)まで届くかを検証します(Post-Exploitation)。この工程が組織全体の実リスクを可視化します。
5. 報告(結果と改善提案)
侵入経路・到達点・攻撃ストーリーを再現手順つきで文書化し、優先度をつけた改善策を提示します(Reporting)。単なる脆弱性一覧ではなく「どう攻撃が成立したか」を示す点が、経営層への説明材料としても重要です。
ペネトレーションテストの主要ツール
攻撃者が使う道具をそのまま用いるのがペネトレーションテストの特徴です。工程ごとに役割が分かれており、代表的なものは次のとおりです。
| ツール | 主な用途 | 使う工程 |
|---|---|---|
| Nmap | ポート・サービスの探索 | スキャン |
| Metasploit Framework | 脆弱性の悪用・侵入実証 | 侵入 |
| Burp Suite | Webアプリの脆弱性検証 | Webアプリ検証 |
| Kali Linux | 各種ツールを統合したOS | 環境全体 |
Nmapはネットワークマッパーとしてホストやポート、稼働サービスの特定に使われ、情報収集の中心です。Metasploitは既知の脆弱性のエクスプロイトコードを実行し侵入を実証する定番フレームワーク、Burp SuiteはSQLインジェクションやXSSなどWebアプリ脆弱性の検証に不可欠なプロキシツールです。これらを最初から同梱したペネトレーションテスト向けのOSがKali Linuxとは?できること・インストール・危険性まで初心者向けにやさしく解説で解説しているKali Linuxです。こうした手作業の検証を継続的に自動再実行する手法として次世代の自動ペネトレーションテスト:Automated Security Validationの概要で扱うASV(Automated Security Validation)もあります。なお、想定外の入力を大量に送り込んで欠陥を洗い出すファジングとは?基本概念とセキュリティへの重要性は脆弱性の発見手法であり、侵入を実証するペネトレーションテストとは目的が異なります。
ペネトレーションテスト実施時の注意点
ペネトレーションテストは実際の攻撃行為そのものを行うため、進め方を誤ると法的・運用上の重大な問題になります。ツールの使い方以前に、次の点を発注前に必ず固めてください。
許諾範囲の書面確定(最重要)
正当な許諾なく他者のシステムへ侵入を試みる行為は、不正アクセス禁止法に抵触するおそれがあります。テストは自社が管理権限を持つ資産に限り、対象・期間・手法・禁止事項をRoEとして書面で合意したうえで実施します。SaaSや共用基盤など第三者が管理する資産を対象に含める場合は、その事業者の許可と規約遵守が別途必要です。
本番環境への影響想定
実際に攻撃を仕掛ける以上、サービス停止やデータ破損のリスクがゼロではありません。可能な限り検証環境で行い、本番で実施する場合は影響の少ない時間帯を選び、バックアップと緊急連絡・中断の手順をあらかじめ決めておきます。
自社実施か外部委託かの見極め
ペネトレーションテストは攻撃技術と法務知識の両方を要するため、体制が整っていない段階で見よう見まねの自社実施に踏み切るのは危険です。まずは実績のある専門ベンダーに委託し、前述のPTESやOWASP WSTGなどの標準への準拠を選定基準にするのが現実的です。
よくある質問(FAQ)
ペネトレーションテストとは何ですか?
攻撃者と同じ視点で実際にシステムへ侵入を試み、防御が機能するか、侵入された場合にどこまで被害が及ぶかを実証的に検証するセキュリティ検査です。脆弱性を一覧化するのではなく、悪用可能性と到達範囲を確かめる点が特徴です。
脆弱性診断とどう違いますか?
脆弱性診断は弱点を網羅的に洗い出す検査、ペネトレーションテストは特定の攻撃目標に侵入できるかを実証する演習です。目的が異なるため優劣ではなく用途で使い分けます。詳しくは関連記事の違い・費用の整理を参照してください。
ペネトレーションテストのやり方・手順は?
事前調査・計画→スキャン→侵入→権限昇格・横展開→報告の5ステップが基本です。PTESやNIST SP 800-115といった標準もこの流れを土台にしています。
ペネトレーションテストに使うツールは何ですか?
探索にNmap、侵入の実証にMetasploit Framework、Webアプリ検証にBurp Suite、これらを統合したOSとしてKali Linuxがよく使われます。工程ごとに役割が分かれています。
ペネトレーションテストは自社だけで実施できますか?
技術的には可能ですが、無許可の侵入は法令違反となり本番障害のリスクもあるため、許諾範囲の書面確定と十分な技術体制が前提です。整っていない場合は標準準拠の専門ベンダーへの委託が安全です。