1. 情報収集フェーズ
1.1 テスト対象の特定
このフェーズでは、対象となるWebアプリケーションやシステムの範囲を明確にし、関連する技術スタック(IPアドレス、ドメイン、OS、Webサーバ、フレームワークなど)を把握する。以下のツールが情報収集に有効である:
| ツール名 | 用途 |
|---|---|
| Nmap | ポートスキャンおよびサービス識別 |
| Whois | ドメイン登録者情報の取得 |
| Recon-ng | ターゲットのデジタル資産収集 |
| Shodan | インターネットに公開されたデバイス・サービスの検索 |
| Google Hacking Database (GHDB) | 誤って公開されたファイルや設定の検出 |
| Social-Engineer Toolkit (SET) | 人的要因を利用した情報収集 |
1.2 対象情報の収集
以下のような情報を体系的に収集する:
- ドメインとIPアドレス:主サイト、メールサーバ、FTPサーバなどのサブドメインを列挙
- ICP登録情報:中国国内サイトの場合、登録番号や事業者名を確認
- SSL/TLS証明書:発行機関、有効期間、証明書タイプ(DV/OV/EV)を記録
1.3 情報の分析
収集したデータを整理し、攻撃面の特定に活用する。主な分析項目とその手法は以下の通り:
| 収集対象 | 収集手法 |
|---|---|
| IPアドレスとオープンポート | ping + Nmapスキャン |
| サーバ種別・OS | バナー収集・フィンガープリント解析 |
| サブドメイン・ディレクトリ | Sublist3r, Dirsearch などの列挙ツール |
| 機密ファイル(例: .env, backup.zip) | 辞書ベースのパス探索 |
| 管理者情報・組織構造 | LinkedIn、GitHub、企業サイトからの推測 |
| 使用ライブラリ・CMSプラグイン | Wappalyzer や BuiltWith の利用 |
| 既知の脆弱性履歴 | CVEデータベースやExploit-DBの検索 |
2. 脆弱性スキャンフェーズ
2.1 スキャン範囲の定義
スキャン対象(IP/ドメイン)、対象ポート(80, 443, 21, 22など)、スキャン深度(軽量・標準・詳細)、認証の有無、実施頻度(日次・週次)を事前に決定する。
2.2 スキャナの選定と実行
代表的なツールとその使用例:
- Nessus:
nessuscli scan --target <IP> - OpenVAS:
gvm-cli socket --xml "<start_scan><target><hosts><IP></hosts></target></start_scan>" - Nmap:
nmap -sV --script vuln <target> - Burp Suite:Target → Site map → 右クリック → "Active Scan"
- Metasploit:
msfconsole use auxiliary/scanner/http/options set RHOSTS <target> run
2.3 スキャン結果の検証
検出された脆弱性を手動で再現し、誤検知を除外。検証済みの結果を以下形式で記録:
| 脆弱性名 | カテゴリ | 検証結果 |
|---|---|---|
| SQLインジェクション | 入力検証不備 | 再現可能 |
| CSRF | セッション管理不備 | 再現可能 |
| XXE | XML処理不備 | 再現不可 |
3. 脆弱性悪用フェーズ
3.1 攻撃対象の確定
Nmapによるフルポートスキャンでサービス構成を把握:
nmap -sS -p- -T4 <target_ip>
3.2 悪用ツールの選択
| ツール | 用途 | コマンド例 |
|---|---|---|
| Metasploit | エクスプロイト実行 | use exploit/windows/smb/ms17_010_eternalblue |
| sqlmap | SQLi自動化 | sqlmap -u "http://test.com/page?id=1" --dump |
| Burp Suite | リクエスト改ざん | Proxy → Intercept で手動操作 |
| Hydra | ブルートフォース | hydra -l admin -P /wordlist.txt target http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect" |
3.3 実際の悪用プロセス
| ステップ | 内容 |
|---|---|
| 対象脆弱性選定 | 検証済みのSQLインジェクションを採用 |
| 環境情報収集 | DBMS種別(MySQL/PostgreSQL)、バージョン確認 |
| ペイロード作成 | UNIONベースのクエリ設計 |
| 実行 | sqlmapまたは手動で注入 |
| 痕跡削除 | アクセスログ内の異常リクエストを除去 |
4. 権限昇格フェーズ
4.1 権限の向上
シェル取得後、より高い権限(root/Administrator)を獲得するための手法:
| 手法 | 概要 |
|---|---|
| カーネルエクスプロイト | LinuxのDirty COWやWindowsのPrintNightmareなど |
| サービス権限昇格 | 高権限で動作するサービスの脆弱性利用 |
| 設定ミスの活用 | SUIDビット付き実行ファイルの悪用 |
| パスワード再利用 | 取得した資格情報の横展開 |
4.2 機密情報の探索
- /etc/passwd, /etc/shadow の読み取り試行(Linux)
- バックアップファイル(.bak, .old)の探索
- 未認証でアクセス可能な管理画面(/admin, /phpmyadmin)の確認
- データベースからユーザー資格情報の抽出
5. 痕跡隠蔽フェーズ
5.1 ログの削除
主要なログファイルを消去:
rm -f /var/log/auth.log /var/log/syslog /var/log/apache2/access.log
| コマンド | 目的 |
|---|---|
history -c | シェル履歴のクリア |
shred -u ~/.bash_history | 履歴ファイルの完全削除 |
5.2 全体的な痕跡除去
| 対象 | 対応 |
|---|---|
| 一時ファイル | /tmp, /var/tmp 下の作業ファイル削除 |
| イベントログ(Windows) | wevtutil cl Security |
| ダウンロード済みエクスプロイト | 取得したスクリプトやツールの削除 |
6. レポート作成フェーズ
6.1 脆弱性の集約
| 脆弱性 | 深刻度 | 証拠 | 対策 |
|---|---|---|---|
| SQLインジェクション | 高 | ' OR '1'='1 | プリペアドステートメントの導入 |
| 反射型XSS | 中 | <img src=x onerror=alert(1)> | 出力エンコーディングの実装 |
6.2 分析と提言
リスクに基づき修正優先度を設定。例:
- 高:即時対応(24時間以内)
- 中:1週間以内に対応
- 低:次回メンテナンス時に修正
6.3 レポート構成
- 概要:テスト目的・範囲・期間
- 環境:テスト対象のネットワークトポロジとソフトウェアバージョン
- 手順と結果:各フェーズの詳細と発見事項
- リスク評価:CVSSスコアとビジネス影響
- 推奨対策:コード修正例や設定変更手順
- 付録:スクリーンショット、PoCコード、RAWリクエスト