講義資料 ペネトレーションテストの基本

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

ペネトレーションテストとは、実際の攻撃者に近い視点で、システム・サーバー・Webサイト・ネットワークに脆弱性がないかを確認するセキュリティ診断です。

単なるツール診断ではなく、

調査
確認
影響評価
再現性の確認
改善提案
報告書作成

まで含めた業務です。

NIST SP 800-115も、情報セキュリティテストは計画、実施、結果分析、緩和策の策定まで含めたプロセスとして整理しています。


2. Kali Linuxとは

Kali Linux は、ペネトレーションテスト、セキュリティ調査、フォレンジック、リバースエンジニアリングなどに使われる、セキュリティ診断向けのLinuxディストリビューションです。

公式にも、Kali Linuxはペネトレーションテスト、倫理的ハッキング、ネットワークセキュリティ評価に使われる高度なLinuxディストリビューションとして説明されています。

Kali Linuxには、Nmap、Burp Suite、Metasploit Framework、Wiresharkなど、診断で使う代表的なツールが多数用意されています。


3. 講義で最初に伝えるべき注意点

Kali Linuxは便利ですが、使い方を間違えると非常に危険です。

講義では、最初に必ずこの前提を伝えます。

Kali Linuxは、攻撃するためのOSではありません。
許可されたシステムに対して、安全性を確認するための診断環境です。
無許可で他社サイト、学校、会社、公共機関、個人のサーバーに対して使用してはいけません。


4. ペネトレーションテストで必ず決めること

Kali Linuxを起動する前に、以下を決める必要があります。

項目内容
診断対象どのドメイン、IP、サーバー、システムを対象にするか
診断範囲Webのみか、サーバー、ネットワーク、管理画面、APIも含むか
診断環境本番環境か、ステージング環境か
実施時間業務時間内か、夜間か、休日か
実施強度軽量確認か、詳細診断か、攻撃系テストを含むか
禁止事項DoS、高負荷スキャン、メール大量送信、データ改ざんなど
緊急連絡先障害発生時に誰へ連絡するか
証跡の扱いログ、スクリーンショット、取得データの保管方法

ここを決めずに診断を始めるのは危険です。

ペネトレーションテストの標準的な流れをまとめたPTESでも、事前のやり取り、情報収集、脅威モデリング、脆弱性分析、報告までの流れが重要視されています。


5. Kali Linuxを使った診断の全体像

基本フロー

フェーズ目的Kaliで使う代表ツール成果物
1. 事前準備許可・範囲・環境を決めるなし診断計画書
2. 情報収集対象の公開情報を確認whois、dig、nslookup、curl対象一覧
3. ポート確認開いている入口を確認Nmapポート一覧
4. サービス確認Apache、SSH、DBなどの状態確認Nmap、curl、whatwebサービス一覧
5. Web確認Webアプリの弱点を確認ZAP、Burp Suite、Nikto等Web診断結果
6. 脆弱性確認既知脆弱性や設定不備を確認OpenVAS系、Nmap scripts等脆弱性候補
7. 手動確認権限・認証・業務ロジックを確認ブラウザ、Burp、ZAP再現手順
8. 影響評価どの程度危険か判断手動分析リスク評価
9. 報告修正方法と優先順位を提示Markdown、PDF等報告書
10. 再診断修正後に再確認同じツール再診断結果

OWASP WSTGは、WebアプリケーションとWebサービスのセキュリティテストに関する包括的なガイドとして位置づけられており、Web診断の基準として使いやすい資料です。


6. フェーズ1:事前準備

目的

ペネトレーションテストでは、最初にやってよい範囲を明確にします。

特に本番環境の場合、強いスキャンや攻撃系テストは障害につながる可能性があります。

確認すべきこと

確認項目
対象URLhttps://example.com/
対象IP203.0.113.10
除外対象決済画面、メール送信、外部API連携
実施時間夜間、休日、低アクセス時間帯
診断アカウント管理者、一般ユーザー、未ログイン
本番可否本番は軽量診断のみ、詳細はステージング
バックアップ診断前に取得済みか
連絡先サイト停止時の連絡先

7. フェーズ2:情報収集

目的

対象サイトがどのような構成で動いているかを調べます。

ここでは、まだ強い攻撃は行いません。
公開情報や基本的な応答を確認します。

代表的な確認

dig example.com
nslookup example.com
curl -I https://example.com/

確認するポイントは以下です。

項目見る内容
DNSAレコード、MXレコード、サブドメイン
HTTPヘッダーServer、X-Powered-By、CSP、HSTSなど
SSL/TLSHTTPS化、証明書、有効期限
公開情報管理画面、不要ファイル、エラーメッセージ
CMSWordPress等が使われているか

8. フェーズ3:ポート確認

目的

対象サーバーで、どのポートが開いているかを確認します。

例えば、Webサイトなら通常は以下のようなポートが関係します。

ポート用途
80HTTP
443HTTPS
22SSH
25 / 465 / 587メール
3306MySQL
5432PostgreSQL

Kaliで使う代表ツール

Nmap を使います。

例として、自社検証環境や許可された対象に対して、軽量に確認する場合です。

nmap -sV -T2 example.com

意味は以下です。

オプション意味
-sVサービスの種類やバージョンを確認
-T2スキャン速度を控えめにする
example.com診断対象

本番環境では、いきなり強いスキャンを行わず、低速・限定範囲で実施します。


9. フェーズ4:サービス確認

目的

開いているポートの先で、どのサービスが動いているか確認します。

例です。

サービス確認する内容
Apache / nginxバージョン、不要ヘッダー、公開設定
PHPバージョン、X-Powered-Byの露出
SSH外部公開の必要性、ポート、認証方式
MySQL外部公開されていないか
FTP使われていないか、平文通信ではないか
メールオープンリレー等のリスク

講義での重要ポイント

ポートが開いていること自体が悪いわけではありません。
問題は、不要なポートが開いていること、古いサービスが外部公開されていること、認証が弱いことです。


10. フェーズ5:Webアプリケーション診断

目的

WebサイトやWebアプリに脆弱性がないか確認します。

対象は、以下のような部分です。

対象
ログイン画面パスワードポリシー、ロックアウト、2FA
問い合わせフォーム入力値検証、スパム対策、メール送信
予約フォーム不正予約、価格改ざん、日時改ざん
管理画面権限、アクセス制御
ファイルアップロード危険な拡張子、MIMEチェック
API認証、認可、情報漏えい
CookieSecure、HttpOnly、SameSite

代表ツール

ツール用途
OWASP ZAPWeb診断、Passive Scan、Baseline Scan
Burp Suite手動診断、リクエスト確認、認証確認
NiktoWebサーバーの既知設定不備確認
browser devtoolsCookie、通信、フォーム確認

OWASP WSTGは、Webアプリケーションテストの体系的な確認項目として使いやすいため、診断チェックリストの土台にできます。


11. フェーズ6:脆弱性確認

目的

サービスのバージョンや設定から、既知の脆弱性に該当しないか確認します。

ここで重要なのは、ツールの結果をそのまま信じないことです。

自動スキャンには、誤検知と見落としがあります。

判断内容
真陽性実際に問題がある
偽陽性ツールは検知したが実際には影響なし
偽陰性ツールでは見つからないが問題がある
要確認設定や運用次第でリスクが変わる

12. フェーズ7:手動確認

ここがペネトレーションテストで特に重要です。

自動診断では、業務ロジックや権限の問題を見落とすことがあります。

手動で確認する例

確認内容
権限昇格一般ユーザーが管理者機能にアクセスできないか
IDOR他人の予約・注文・ファイルが見えないか
価格改ざんフォーム送信時に金額を書き換えられないか
予約枠改ざん本来選べない時間帯を送信できないか
ファイル閲覧URL直打ちで非公開ファイルにアクセスできないか
API認可ログインなしでデータ取得できないか

講義ではこう説明するとよいです。

ツールは「技術的に怪しい場所」を見つけるのは得意です。
しかし、「その会社の業務上、本当に危険か」を判断するのは人間の仕事です。


13. フェーズ8:影響評価

脆弱性を見つけたら、単に「危険です」と言うのではなく、影響を整理します。

評価軸

評価項目内容
悪用のしやすさ誰でも簡単にできるか
影響範囲1ページだけか、全ユーザーに影響するか
情報漏えい個人情報・機密情報が出るか
権限管理者権限に近づけるか
改ざん表示内容やデータを変えられるか
業務停止サイト停止や予約停止につながるか
証跡ログに残るか、追跡可能か

14. フェーズ9:報告書作成

ペネトレーションテストで最も重要なのは、最後の報告です。

技術的に詳しいだけでは不十分で、経営者や担当者が判断できる形にする必要があります。

報告書に入れる項目

項目内容
概要何を診断したか
対象範囲URL、IP、期間、環境
実施方法使用ツール、手動確認項目
発見事項脆弱性・設定不備
危険度高・中・低など
影響何が起きる可能性があるか
再現条件どの条件で確認されたか
修正案具体的な対応
優先順位何から直すべきか
再診断結果修正後の確認

15. Kali Linuxを使うときの注意点

やってはいけないこと

NG行為理由
無許可で外部サイトをスキャンする法的・契約上の問題になる
本番に高負荷スキャンをかけるサイト停止や障害につながる
ログインを大量試行するアカウントロック、業務妨害になる
フォームに大量送信するメール送信・DB汚染が起きる
取得した情報を持ち出す情報漏えいになる
影響を確認せず脆弱性を実証するデータ破壊や改ざんにつながる
ツール結果だけで断定する誤検知の可能性がある

16. 中小企業サイト向けの現実的なKali活用

中小企業やWordPressサイト向けなら、以下の使い方が現実的です。

本番環境で行う範囲

項目方法
DNS確認dig、nslookup
HTTPヘッダー確認curl
SSL/TLS確認外部サービス、testssl.sh
軽量ポート確認Nmapを低速・限定範囲で実施
Web表層確認ZAP Passive / Baseline
WordPress確認管理画面、サイトヘルス、更新状況確認

ステージング環境で行う範囲

項目方法
Active ScanZAP / Burp
フォーム検査入力値、メール送信、バリデーション確認
認証確認ログイン、権限、セッション
ファイルアップロード検査拡張子、MIME、保存先
API確認認証・認可
既知脆弱性確認OpenVAS系、WPScan等

17. Kali Linuxの位置づけ

Kali Linuxは、ペネトレーションテストやセキュリティ診断に使われる代表的なLinux環境です。
Nmap、ZAP、Burp Suite、Wiresharkなど、診断に使うツールをまとめて利用できます。

ただし、Kali Linuxを使えば自動的に安全性がわかるわけではありません。
大切なのは、診断範囲を決め、本番環境への影響を抑え、必要に応じてステージング環境で詳細確認を行い、結果を正しく評価することです。

ペネトレーションテストは、攻撃の真似をする作業ではなく、許可された範囲でシステムの弱点を発見し、改善につなげるための業務です。


18. まとめ

Kali Linuxを用いたペネトレーションテストの流れ

  1. 許可と範囲を決める
  2. 対象の情報を収集する
  3. ポートとサービスを確認する
  4. Webアプリの表層を確認する
  5. 既知脆弱性や設定不備を確認する
  6. 権限・認証・業務ロジックを手動確認する
  7. 影響度を評価する
  8. 修正方法と優先順位を報告する
  9. 修正後に再診断する

19. 最後に

Kali Linuxは強力な診断環境です。
しかし、強力な道具ほど、使う目的・範囲・責任を明確にする必要があります。

ペネトレーションテストで重要なのは、
侵入できるかどうかを競うことではなく、事業を止めずに弱点を見つけ、改善につなげること
です。

HOMEへ戻る