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:事前準備
目的
ペネトレーションテストでは、最初にやってよい範囲を明確にします。
特に本番環境の場合、強いスキャンや攻撃系テストは障害につながる可能性があります。
確認すべきこと
| 確認項目 | 例 |
|---|---|
| 対象URL | https://example.com/ |
| 対象IP | 203.0.113.10 |
| 除外対象 | 決済画面、メール送信、外部API連携 |
| 実施時間 | 夜間、休日、低アクセス時間帯 |
| 診断アカウント | 管理者、一般ユーザー、未ログイン |
| 本番可否 | 本番は軽量診断のみ、詳細はステージング |
| バックアップ | 診断前に取得済みか |
| 連絡先 | サイト停止時の連絡先 |
7. フェーズ2:情報収集
目的
対象サイトがどのような構成で動いているかを調べます。
ここでは、まだ強い攻撃は行いません。
公開情報や基本的な応答を確認します。
代表的な確認
dig example.com
nslookup example.com
curl -I https://example.com/
確認するポイントは以下です。
| 項目 | 見る内容 |
|---|---|
| DNS | Aレコード、MXレコード、サブドメイン |
| HTTPヘッダー | Server、X-Powered-By、CSP、HSTSなど |
| SSL/TLS | HTTPS化、証明書、有効期限 |
| 公開情報 | 管理画面、不要ファイル、エラーメッセージ |
| CMS | WordPress等が使われているか |
8. フェーズ3:ポート確認
目的
対象サーバーで、どのポートが開いているかを確認します。
例えば、Webサイトなら通常は以下のようなポートが関係します。
| ポート | 用途 |
|---|---|
| 80 | HTTP |
| 443 | HTTPS |
| 22 | SSH |
| 25 / 465 / 587 | メール |
| 3306 | MySQL |
| 5432 | PostgreSQL |
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 | 認証、認可、情報漏えい |
| Cookie | Secure、HttpOnly、SameSite |
代表ツール
| ツール | 用途 |
|---|---|
| OWASP ZAP | Web診断、Passive Scan、Baseline Scan |
| Burp Suite | 手動診断、リクエスト確認、認証確認 |
| Nikto | Webサーバーの既知設定不備確認 |
| browser devtools | Cookie、通信、フォーム確認 |
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 Scan | ZAP / Burp |
| フォーム検査 | 入力値、メール送信、バリデーション確認 |
| 認証確認 | ログイン、権限、セッション |
| ファイルアップロード検査 | 拡張子、MIME、保存先 |
| API確認 | 認証・認可 |
| 既知脆弱性確認 | OpenVAS系、WPScan等 |
17. Kali Linuxの位置づけ
Kali Linuxは、ペネトレーションテストやセキュリティ診断に使われる代表的なLinux環境です。
Nmap、ZAP、Burp Suite、Wiresharkなど、診断に使うツールをまとめて利用できます。ただし、Kali Linuxを使えば自動的に安全性がわかるわけではありません。
大切なのは、診断範囲を決め、本番環境への影響を抑え、必要に応じてステージング環境で詳細確認を行い、結果を正しく評価することです。ペネトレーションテストは、攻撃の真似をする作業ではなく、許可された範囲でシステムの弱点を発見し、改善につなげるための業務です。
18. まとめ
Kali Linuxを用いたペネトレーションテストの流れ
- 許可と範囲を決める
- 対象の情報を収集する
- ポートとサービスを確認する
- Webアプリの表層を確認する
- 既知脆弱性や設定不備を確認する
- 権限・認証・業務ロジックを手動確認する
- 影響度を評価する
- 修正方法と優先順位を報告する
- 修正後に再診断する
19. 最後に
Kali Linuxは強力な診断環境です。
しかし、強力な道具ほど、使う目的・範囲・責任を明確にする必要があります。ペネトレーションテストで重要なのは、
侵入できるかどうかを競うことではなく、事業を止めずに弱点を見つけ、改善につなげること
です。
