mcpField
C
correlating-security-events-in-qradar

correlating-security-events-in-qradar

github.com/mukul975セキュリティ35.2k55 回インストール8 週間前に更新
リポジトリ

correlating-security-events-in-qradar について

IBM QRadar SIEM を使う SOC アナリストや検知エンジニア向けのイベント相関ガイドです。AQL による offense 調査、イベントやフローの相関、ルール作成、アラート調整を扱います。

主な機能

  1. 01AQL によるイベントとフローの検索
  2. 02offense に関連するイベントの調査
  3. 03複数条件の相関ルール作成
  4. 04Reference Set によるルールのコンテキスト補完
  5. 05offense 生成と集約の調整

活用シーン

  1. 01ブルートフォース攻撃と後続のログイン成功の相関
  2. 02ホスト間のラテラルムーブメント追跡
  3. 03DNS クエリと不審なアウトバウンド通信の検出
  4. 04誤検知の削減と offense の調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill correlating-security-events-in-qradar

インストール後、Claude Code で/correlating-security-events-in-qradarを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

QRadar でセキュリティイベントを相関分析する

使用する場面

次の場合にこのスキルを使用します:

  • SOC アナリストが QRadar のオフェンスを調査し、複数のログソースにまたがるイベントを相関分析する必要がある
  • 検知エンジニアが複数段階の攻撃を特定するカスタム相関ルールを作成する
  • 誤検知によるオフェンスを減らし、シグナルの品質を高めるために、アラートのチューニングが必要である
  • チームが基本的なイベント監視から、振る舞いに基づく相関分析へ移行する

ログソースの登録や解析には使用しないでください。これには QRadar 管理者アクセス権と DSM エディターの知識が必要です。

前提条件

  • オフェンス管理が有効な IBM QRadar SIEM 7.5+
  • アドホックなイベントおよびフロークエリに必要な AQL の知識
  • 適切な QID マッピングで正規化されたログソース(Windows、ファイアウォール、プロキシ、エンドポイント)
  • オフェンス管理、ルール作成、AQL 検索の権限を持つユーザーロール
  • ホワイトリストとウォッチリストの管理用に設定されたリファレンスセット/マップ

ワークフロー

ステップ 1:AQL でオフェンスを調査する

QRadar でオフェンスを開き、AQL(Ariel Query Language)を使用して、オフェンスに寄与したイベントをクエリします。

SELECT DATEFORMAT(startTime, 'yyyy-MM-dd HH:mm:ss') AS event_time,
       sourceIP, destinationIP, username,
       LOGSOURCENAME(logSourceId) AS log_source,
       QIDNAME(qid) AS event_name,
       category, magnitude
FROM events
WHERE INOFFENSE(12345)
ORDER BY startTime ASC
LIMIT 500

送信元 IP を起点にして、すべてのアクティビティを検索します。

SELECT DATEFORMAT(startTime, 'yyyy-MM-dd HH:mm:ss') AS event_time,
       destinationIP, destinationPort, username,
       QIDNAME(qid) AS event_name,
       eventCount, category
FROM events
WHERE sourceIP = '192.168.1.105'
  AND startTime > NOW() - 24*60*60*1000
ORDER BY startTime ASC
LIMIT 1000
ステップ 2:カスタム相関ルールを作成する

ブルートフォース攻撃の後にログインが成功したことを検知する、複数条件のルールを作成します。

ルール 1 — ブルートフォース検知(ビルディングブロック):

Rule Type: Event
Rule Name: BB: Multiple Failed Logins from Same Source
Tests:
  - When the event(s) were detected by one or more of [Local]
  - AND when the event QID is one of [Authentication Failure (5000001)]
  - AND when at least 10 events are seen with the same Source IP
    in 5 minutes
Rule Action: Dispatch new event (Category: Authentication, QID: Custom_BruteForce)

ルール 2 — ブルートフォース成功(相関ルール):

Rule Type: Offense
Rule Name: COR: Brute Force with Subsequent Successful Login
Tests:
  - When an event matches the building block BB: Multiple Failed Logins from Same Source
  - AND when an event with QID [Authentication Success (5000000)] is detected
    from the same Source IP within 10 minutes
  - AND the Destination IP is the same for both events
Rule Action: Create offense, set severity to High, set relevance to 8
ステップ 3:AQL で複数のソースを相関分析する

認証失敗とネットワークフローを相関分析し、ラテラルムーブメントを検知します。

SELECT e.sourceIP, e.destinationIP, e.username,
       QIDNAME(e.qid) AS event_name,
       e.eventCount,
       f.sourceBytes, f.destinationBytes
FROM events e
LEFT JOIN flows f ON e.sourceIP = f.sourceIP
  AND e.destinationIP = f.destinationIP
  AND f.startTime BETWEEN e.startTime AND e.startTime + 300000
WHERE e.category = 'Authentication'
  AND e.sourceIP IN (
    SELECT sourceIP FROM events
    WHERE QIDNAME(qid) = 'Authentication Failure'
      AND startTime > NOW() - 3600000
    GROUP BY sourceIP
    HAVING COUNT(*) > 20
  )
  AND e.startTime > NOW() - 3600000
ORDER BY e.startTime ASC

DNS クエリと大量のアウトバウンドフローを相関分析し、データ流出を検知します。

SELECT sourceIP, destinationIP,
       SUM(sourceBytes) AS total_bytes_out,
       COUNT(*) AS flow_count
FROM flows
WHERE sourceIP IN (
    SELECT sourceIP FROM events
    WHERE QIDNAME(qid) ILIKE '%DNS%'
      AND destinationIP NOT IN (
        SELECT ip FROM reference_data.sets('Internal_DNS_Servers')
      )
      AND startTime > NOW() - 86400000
    GROUP BY sourceIP
    HAVING COUNT(*) > 500
  )
  AND destinationPort NOT IN (80, 443, 53)
  AND startTime > NOW() - 86400000
GROUP BY sourceIP, destinationIP
HAVING SUM(sourceBytes) > 104857600
ORDER BY total_bytes_out DESC
ステップ 4:コンテキスト情報を付加するリファレンスセットを設定する

動的なホワイトリストとウォッチリスト用にリファレンスセットを作成します。

# Create reference set via QRadar API
curl -X POST "https://qradar.example.com/api/reference_data/sets" \
  -H "SEC: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Known_Pen_Test_IPs",
    "element_type": "IP",
    "timeout_type": "LAST_SEEN",
    "time_to_live": "30 days"
  }'

# Add entries
curl -X POST "https://qradar.example.com/api/reference_data/sets/Known_Pen_Test_IPs" \
  -H "SEC: YOUR_API_TOKEN" \
  -d "value=10.0.5.100"

ルール条件でリファレンスセットを使用し、既知の無害なアクティビティを除外します。

Test: AND when the Source IP is NOT contained in any of [Known_Pen_Test_IPs]
Test: AND when the Destination IP is contained in any of [Critical_Asset_IPs]
ステップ 5:オフェンス生成を調整する

ビルディングブロックフィルターを追加して、誤検知を減らします。

-- Find top false positive generators
SELECT QIDNAME(qid) AS event_name,
       LOGSOURCENAME(logSourceId) AS log_source,
       COUNT(*) AS event_count,
       COUNT(DISTINCT sourceIP) AS unique_sources
FROM events
WHERE INOFFENSE(
    SELECT offenseId FROM offenses
    WHERE status = 'CLOSED'
      AND closeReason = 'False Positive'
      AND startTime > NOW() - 30*24*60*60*1000
  )
GROUP BY qid, logSourceId
ORDER BY event_count DESC
LIMIT 20

チューニングを適用します:

  • 誤検知の頻度が高いソースをリファレンスセットの除外対象に追加します
  • ノイズの多いルールのイベントしきい値を引き上げます(例:ログイン失敗 10 件を、サービスアカウントでは 25 件に変更)
  • オフェンスの集約を設定し、関連イベントを 1 つのオフェンスにまとめます
ステップ 6:相関分析の監視用にカスタムダッシュボードを作成する

主要な相関分析指標を含む QRadar Pulse ダッシュボードを作成します。

-- Active offenses by category
SELECT offenseType, status, COUNT(*) AS offense_count,
       AVG(magnitude) AS avg_magnitude
FROM offenses
WHERE status = 'OPEN'
GROUP BY offenseType, status
ORDER BY offense_count DESC

-- Mean time to close offenses
SELECT DATEFORMAT(startTime, 'yyyy-MM-dd') AS day,
       AVG(closeTime - startTime) / 60000 AS avg_close_minutes,
       COUNT(*) AS closed_count
FROM offenses
WHERE status = 'CLOSED'
  AND startTime > NOW() - 30*24*60*60*1000
GROUP BY DATEFORMAT(startTime, 'yyyy-MM-dd')
ORDER BY day

主な概念

用語定義
AQLAriel Query Language — イベント、フロー、オフェンスの検索に使用する、QRadar の SQL に似たクエリ言語
Offense複数のイベント/フローを 1 つの調査単位にまとめる、QRadar の相関分析されたインシデント
Building Blockオフェンスを生成せずにイベントを分類する、再利用可能なルールコンポーネント。相関ルールへの入力として使用されます
Magnitude関連性、重大度、信頼性のスコアを組み合わせて QRadar が算出するオフェンスの重大度(1~10)
Reference Setルールで使用するホワイトリスト、ウォッチリスト、エンリッチメントデータ用の、QRadar の動的な参照テーブル
QIDQRadar Identifier — ベンダー固有のイベントを正規化されたカテゴリに対応付ける、一意の数値 ID
Coalescing関連イベントを 1 つのオフェンスにまとめ、アナリストの作業負荷を軽減する QRadar の仕組み

ツールとシステム

  • IBM QRadar SIEM:イベント相関、オフェンス管理、AQL クエリエンジンを備えたエンタープライズ SIEM プラットフォーム
  • QRadar Pulse:オフェンスとイベントの指標をカスタムで可視化するダッシュボードフレームワーク
  • QRadar API:リファレンスセットの管理、オフェンス操作、ルールのデプロイを自動化する RESTful API
  • QRadar Use Case Manager:検知ルールと MITRE ATT&CK フレームワークのカバレッジを対応付けるアプリ
  • QRadar Assistant:自然言語を用いたオフェンス調査をアナリストに支援する、AI 搭載の分析ツール

一般的なシナリオ

  • 総当たり攻撃から侵害に至るまで:認証失敗イベントと、同一ソースからのその後のログイン成功を関連付けます
  • ラテラルムーブメントの連鎖:単一のソースから複数の内部ホストにまたがる認証イベントを追跡します
  • C2ビーコニング:定期的なDNSクエリと、通常とは異なるドメインへのエントロピーの低いペイロードを関連付けます
  • 権限昇格:ユーザーアカウントの変更(グループへの追加)と、それ以前の不審な認証を関連付けます
  • データの持ち出し:大量のアウトバウンドフローと、それ以前の内部偵察活動を関連付けます

出力形式

QRADAR OFFENSE INVESTIGATION — Offense #12345
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Offense Type:   Brute Force with Subsequent Access
Magnitude:      8/10 (Severity: 8, Relevance: 9, Credibility: 7)
Created:        2024-03-15 14:23:07 UTC
Contributing:   247 events from 3 log sources

Correlation Chain:
  14:10-14:22  — 234 Authentication Failures (EventCode 4625) from 192.168.1.105 to DC-01
  14:23:07     — Authentication Success (EventCode 4624) from 192.168.1.105 to DC-01 (user: admin)
  14:25:33     — New Process: cmd.exe spawned by admin on DC-01
  14:26:01     — Net.exe user /add detected on DC-01

Sources Correlated:
  Windows Security Logs (DC-01)
  Sysmon (DC-01)
  Firewall (Palo Alto PA-5260)

Disposition:    TRUE POSITIVE — Escalated to Incident Response
Ticket:         IR-2024-0432

コメント