Webサーバーログの侵入分析 は何をしますか?
使用タイミング
- セキュリティインシデントを調査する際に、Webサーバーログを対象とした侵入分析が必要な場合
- このドメインに関連する検知ルールや脅威ハンティングクエリを作成する場合
- SOCアナリストがこの分析タイプに対応した構造化された手順を必要とする場合
- 関連する攻撃手法に対するセキュリティ監視のカバレッジを検証する場合
前提条件
- セキュリティ運用の概念とツールに関する知識
- 安全に実行可能なテストまたはラボ環境へのアクセス
- Python 3.8以上と必要な依存関係のインストール
- テスト活動に対する適切な許可
手順
- 依存関係をインストール:
pip install geoip2 user-agents
- Webサーバーのアクセスログを収集します (ApacheのCombined Log FormatまたはNginxの標準形式)。
- 各ログエントリから以下を抽出: IP、タイムスタンプ、メソッド、URI、ステータスコード、応答サイズ、ユーザーエージェント、リファラー。
- 検知ルールを適用:
- SQLインジェクション:
UNION SELECT、OR 1=1、' OR '、16進エンコードパターン
- LFI/パストラバーサル:
../、/etc/passwd、/proc/self、php://filter
- XSS:
<script>、javascript:、onerror=、onload=
- スキャナーシグネチャ: nikto、sqlmap、dirbuster、gobuster、wfuzzのユーザーエージェント
- ブルートフォース: 同一IPから5分以内にログインエンドポイントへのPOSTリクエストが50件以上
- GeoIPデータでエンリッチし、優先順位付きの検出結果レポートを生成します。
python scripts/agent.py --log-file /var/log/nginx/access.log --geoip-db GeoLite2-City.mmdb --output web_intrusion_report.json
例
URI内のSQLインジェクションを検出
192.168.1.100 - - [15/Jan/2024:10:30:45 +0000] "GET /products?id=1' UNION SELECT username,password FROM users-- HTTP/1.1" 200 4532
スキャナーユーザーエージェントの検出
Nikto/2.1.6, sqlmap/1.7, DirBuster-1.0-RC1, gobuster/3.1.0