Webアプリケーション侵入テストプロセス
1. イントロダクション
Webアプリケーション侵入テスト(WAPT)は、攻撃者に悪用される可能性のあるセキュリティ脆弱性を特定するために、WebアプリケーションやAPIを体系的に調査する承認済みのセキュリティテストです。このプロセスは、各エンゲージメントで合意されたスコープ、目的、テスト手法、ルール・オブ・エンゲージメントに従って実施します。
テスト開始前に対象アセット、法的・運用上の制約、許容される手法とスケジュールを明確にしてください。以降の偵察、脆弱性評価、侵入テスト、エクスプロイト後の処理、レポートはすべて、その承認された範囲内で実施されるものとして扱います。
2. 事前準備
2.1 スコープの定義
- 目的: テスト対象のアセット(Webアプリケーション、API)を特定します。
- 制約: 考慮すべき法的・運用上の制約。
- ルール・オブ・エンゲージメント: 許容されるテスト手法とスケジュールを定義します。
2.2 情報収集
ドキュメントレビュー: アーキテクチャ、データフロー図、セキュリティポリシーを分析します。
ステークホルダーの特定: テスト環境内の役割と責任を把握します。
3. 偵察
ターゲットに関する情報を収集します。
3.1 パッシブ偵察
Webペネトレーションテストにおけるパッシブ偵察は、ターゲットと直接やり取りせずに情報を収集することで、検出リスクを最小化する手法です。
- DNSフットプリンティング: ツール:
dig、nslookup、Sublist3r - WHOIS調査: ツール:
whois - ソーシャルエンジニアリング: ソーシャルメディアや公開プロフィールから情報を収集します。
- Google Dorking: 高度な検索オペレーターを使ってターゲットに関する特定の情報を探します。
- 公開リポジトリ [GitHub, GitLab, Bitbucket]: 公開されたコード、認証情報、その他の機密情報を検索します。
- メタデータ抽出ツール: ツール:
ExifTool: ドキュメント・画像・その他ファイルのメタデータを抽出します。FOCA: 公開ドキュメントからメタデータや隠れた情報を抽出します。 - Webアーカイブサービス: ツール:
Wayback Machine: Webページの過去バージョンを閲覧します。Archive.todayNetcraft: Webサイトの過去バージョンをキャプチャして閲覧します。 - 公開データ漏洩情報: ツール:
Have I Been Pwned: メールアドレスやドメインがデータ漏洩に関与しているか確認します。DeHashed: 漏洩した認証情報やその他の機密データを検索します。 - 偵察フレームワーク: ツール:
Recon-ng: Pythonで書かれたフル機能の偵察フレームワーク。theHarvester: オープンソースのインテリジェンス収集ツール。 - OWASP Webアプリケーションテストガイド
3.2 アクティブ偵察
アクティブ偵察(アクティブリコン)とは、サイバーセキュリティの文脈でターゲットシステムやネットワークと直接やり取りして情報を収集する手法です。
- ポートスキャン: ツール:
Nmap、Masscan: ホスト・オープンポート・そこで動作するサービスを検出するための強力なネットワークスキャンツール。 - サービス列挙: ツール:
Nmap、Netcat: オープンポートで動作する特定のサービスを特定し、バージョンや設定に関する詳細情報を収集します。 - 脆弱性スキャン: ツール:
NessusOpenVASNiktoBurpsuiteOWASP ZAP: Webアプリケーションとサービスの既知の脆弱性を自動的にスキャンするツール。 - ディレクトリ・ファイルのブルートフォース: ツール:
DirBusterGobuster: Webサーバー上の隠されたディレクトリやファイルをアクティブに検索します。 - Webクローリングとスパイダリング: ツール:
OWASP ZAP Spider: Webアプリケーションのリンクを自動的に巡回して構造をマッピングし、隠れたページを発見します。 - OWASP Webアプリケーションテストガイド
4. 脅威モデリング
脅威モデリングは、システム・アプリケーション・ネットワークの潜在的なセキュリティ脅威と脆弱性を特定・評価・軽減するための構造化されたプロセスです。脅威モデリングの目的は、開発ライフサイクルの早い段階でセキュリティリスクを把握して対処し、システム全体のセキュリティ態勢を向上させることです。このプロアクティブなアプローチにより、組織は潜在的な攻撃を予測し、効果的な防御策を設計できます。
4.1 脅威の特定
- 攻撃対象領域分析: アプリケーションの攻撃ベクターをマッピングします。
- データ分類: アプリケーションが処理するデータの機密性を判断します。
プロセス:
4.2 脆弱性評価
脆弱性評価は、システム・ネットワーク・アプリケーションの脆弱性を体系的に特定・評価・優先順位付けするプロセスです。攻撃者に悪用される可能性のある弱点を発見し、リスク軽減のための推奨事項を提供することが目的です。
- 一般的な脆弱性: OWASP Top 10、SANS Top 25
- 自動スキャン: ツール:
NessusOpenVASBurpsuiteNikto
OWASP:
SANS:
5. 侵入テスト
主な目的は、脆弱性を特定して悪用することで潜在的な影響を把握し、セキュリティ改善のための推奨事項を提供することです。
6. エクスプロイト後の処理
エクスプロイト後の処理とは、攻撃者がターゲットシステムに侵入に成功した後に行われるハッキングプロセスの段階を指します。この段階では、攻撃者はコントロールの強化、価値ある情報の収集、今後の活動の準備に集中します。エクスプロイト後の主な目的には、アクセスの維持、権限昇格、データ漏洩、および検出を回避するための痕跡の消去が含まれます。
6.1 持続化
- バックドア: 攻撃者がアクセスを維持できるか確認します。
- ルートキット: ルートキットの存在を分析します。
- アクセスの維持:
- 持続化メカニズム: バックドア、ルートキット、またはその他の持続的アクセスツールをインストールし、再起動後も継続してアクセスできるようにします。
- ユーザーアカウントの作成: 隠れた低権限のユーザーアカウントを作成し、疑いを招かずに再アクセスできるようにします。
- 権限昇格:
- 脆弱性の悪用: 追加の脆弱性を特定・悪用して、侵害されたシステム内でより高いレベルのアクセスと制御を獲得します。
- クレデンシャルダンプ: パスワード、ハッシュ、またはその他の認証トークンを抽出して、より権限の高いアカウントにアクセスします。
- 内部偵察:
- ネットワークマッピング: 内部ネットワークをマッピングして、サーバー、データベース、機密情報などの価値ある標的を特定します。
- 列挙: インストールされているソフトウェア、実行中のサービス、接続されているデバイスなど、システムに関する詳細情報を収集します。
- データ漏洩:
- 機密データの公開: ツール:
WiresharkTcpdump - データの完全性: 送信中にデータが改ざんされていないことを確認します。
- 機密データの公開: ツール:
- ラテラルムーブメント:
- ピボッティング: 侵害されたシステムを足がかりとして、ネットワーク全体を横断移動し、追加のシステムを侵害します。
- 信頼関係の悪用: システム間の信頼関係を利用して検出されずに移動します。
- 痕跡の消去:
- ログ操作: ログファイルを改ざんまたは削除して、攻撃者の活動の証拠を消去します。
- 痕跡のクリア: 検出や分析を防ぐために、攻撃中に使用したマルウェア、スクリプト、その他のツールを削除します。
- 難読化: 暗号化、ステガノグラフィー、ファイル難読化などの技術を使って悪意ある活動を隠します。
7. レポート
7.1 調査結果の文書化
- 脆弱性の詳細: 説明、深刻度、影響、証拠[PoC]。
- 改善手順: 特定された脆弱性を軽減するための詳細な手順。
7.2 エグゼクティブサマリー
- 概要: 調査結果と推奨事項の概要。
- リスク評価: 影響分析とリスク評価。
8. 改善
8.1 特定された問題の修正
- パッチ適用: 必要なパッチとアップデートを適用します。
- 設定変更: セキュリティを強化するために設定を調整します。
8.2 検証
- 再テスト: すべての問題が対処されたことを確認します。
- リグレッションテスト: 新たな問題が発生していないことを確認します。
9. 継続的改善
9.1 教訓
- インシデントレビュー: 過去のインシデントを分析して、将来の対応を改善します。
- プロセスの改良: テストとセキュリティプロセスを継続的に改良します。
9.2 最新情報への対応
- セキュリティフィード: OWASP、SANS などの情報源からセキュリティニュースとアップデートをフォローします。
- コミュニティへの参加: セキュリティフォーラムやカンファレンス | BlackHat、Nullcon に参加します。
この包括的なガイドにより、偵察から継続的改善まで、Webアプリケーション侵入テストに必要なすべての側面を網羅した徹底的なアプローチが確保されます。
