mcpField
B
building-incident-response-dashboard

building-incident-response-dashboard

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

building-incident-response-dashboard について

インシデント対応チームが進行中の事案を調整し、状況を管理層へ報告するためのダッシュボード構築スキルです。影響システム、IOC、対応タイムライン、SOC 指標、経営層向けビューを扱います。

主な機能

  1. 01影響システムと封じ込め状況の表示
  2. 02環境内での IOC の広がりを追跡
  3. 03インシデント対応タイムラインの表示
  4. 04SOC 運用指標の集計
  5. 05経営層向けインシデント報告

活用シーン

  1. 01ランサムウェア対応の調整
  2. 02データ侵害調査の進捗追跡
  3. 03フィッシング対応と修復の監視
  4. 04月次 SOC 指標レポートの作成

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill building-incident-response-dashboard

インストール後、Claude Code で/building-incident-response-dashboardを入力して読み込まれたか確認します。

同梱ファイル

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

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

詳細

インシデント対応ダッシュボードの構築

使用するタイミング

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

  • IR チームが、進行中のインシデントにおける連携と追跡のため、リアルタイムダッシュボードを必要としている
  • SOC のリーダーが、インシデントの状況とアナリストの作業負荷を示す運用ダッシュボードを必要としている
  • インシデント後のレビューで、視覚的なタイムラインと影響評価が必要である
  • 経営幹部向けの説明で、概要レベルのインシデント指標と傾向分析が必要である

日常的な SOC 監視ダッシュボードには使用しないでください(代わりに Incident Review を使用してください)。IR ダッシュボードは、進行中のインシデントにおける連携と管理報告を目的として設計されています。

前提条件

  • SIEM プラットフォーム(Dashboard Studio を備えた Splunk、Elastic Kibana、または Grafana)
  • SIEM 内の重要イベントおよびインシデントデータ(Splunk ES の incident_review インデックス)
  • 修復状況の追跡用チケット管理システムとの連携(ServiceNow、Jira)
  • コンテキスト強化用の資産および ID のルックアップテーブル
  • SOC チームおよび管理者への配布用ダッシュボードの公開アクセス権

ワークフロー

ステップ 1:進行中のインシデントダッシュボードのレイアウトを設計する

進行中のインシデントを追跡するため、Splunk Dashboard Studio のダッシュボードを作成します:

<dashboard version="2" theme="dark">
  <label>Active Incident Response Dashboard</label>
  <description>Real-time tracking for IR-2024-0450</description>

  <row>
    <panel>
      <title>Incident Summary</title>
      <single>
        <search>
          <query>
| makeresults
| eval incident_id="IR-2024-0450",
       status="CONTAINMENT",
       severity="Critical",
       affected_hosts=7,
       contained_hosts=5,
       iocs_identified=23,
       hours_elapsed=round((now()-strptime("2024-03-15 14:00","%Y-%m-%d %H:%M"))/3600,1)
| table incident_id, status, severity, affected_hosts, contained_hosts, iocs_identified, hours_elapsed
          </query>
        </search>
      </single>
    </panel>
  </row>
</dashboard>
ステップ 2:リアルタイムの影響システムパネルを作成する

影響を受けたシステムと、その封じ込め状況を追跡します:

| inputlookup ir_affected_systems.csv
| eval status_color = case(
    status="Contained", "#2ecc71",
    status="Compromised", "#e74c3c",
    status="Investigating", "#f39c12",
    status="Recovered", "#3498db",
    1=1, "#95a5a6"
  )
| stats count by status
| eval order = case(status="Compromised", 1, status="Investigating", 2,
                    status="Contained", 3, status="Recovered", 4)
| sort order
| table status, count

--- Detailed host table
| inputlookup ir_affected_systems.csv
| lookup asset_lookup_by_cidr ip AS host_ip OUTPUT category, owner, priority
| table hostname, host_ip, category, owner, status, containment_time,
        compromise_vector, analyst_assigned
| sort status, hostname
ステップ 3:IOC 追跡パネルを作成する

環境全体における IOC の拡散を監視します:

--- IOCs identified during incident
index=* (src_ip IN ("185.234.218.50", "45.77.123.45") OR
         dest IN ("evil-c2.com", "malware-drop.com") OR
         file_hash IN ("a1b2c3d4...", "e5f6a7b8..."))
earliest="2024-03-14"
| stats count AS hits, dc(src_ip) AS unique_sources,
        dc(dest) AS unique_dests, latest(_time) AS last_seen
  by sourcetype
| sort - hits

--- IOC timeline
index=* (src_ip IN ("185.234.218.50") OR dest="evil-c2.com")
earliest="2024-03-14"
| timechart span=1h count by sourcetype

--- New IOC discovery tracking
| inputlookup ir_ioc_list.csv
| stats count by ioc_type, source, discovery_time
| sort discovery_time
| table discovery_time, ioc_type, ioc_value, source, status
ステップ 4:対応タイムラインパネルを作成する

インシデントの時系列を作成します:

| inputlookup ir_timeline.csv
| sort _time
| eval phase = case(
    action_type="detection", "Detection",
    action_type="triage", "Triage",
    action_type="containment", "Containment",
    action_type="eradication", "Eradication",
    action_type="recovery", "Recovery",
    1=1, "Other"
  )
| eval phase_color = case(
    phase="Detection", "#e74c3c",
    phase="Triage", "#f39c12",
    phase="Containment", "#e67e22",
    phase="Eradication", "#2ecc71",
    phase="Recovery", "#3498db"
  )
| table _time, phase, action, analyst, details

タイムラインデータの例:

_time,action_type,action,analyst,details
2024-03-15 14:00,detection,Alert triggered - Cobalt Strike beacon detected,splunk_es,Notable event NE-2024-08921
2024-03-15 14:12,triage,Alert triaged - confirmed true positive,analyst_jdoe,VT score 52/72 on beacon hash
2024-03-15 14:23,containment,Host WORKSTATION-042 isolated,analyst_jdoe,CrowdStrike network isolation
2024-03-15 14:35,containment,C2 domain blocked on firewall,analyst_msmith,Palo Alto rule deployed
2024-03-15 15:00,eradication,Enterprise-wide IOC scan initiated,analyst_jdoe,Splunk search across all indices
2024-03-15 15:30,containment,3 additional hosts identified and isolated,analyst_msmith,Lateral movement confirmed
2024-03-15 16:00,eradication,Malware removed from all affected hosts,analyst_tier3,CrowdStrike RTR cleanup
2024-03-15 18:00,recovery,Systems restored and monitored,analyst_msmith,72-hour monitoring period started
ステップ 5:SOC 運用ダッシュボードを作成する

SOC 全体のパフォーマンス指標を追跡します:

--- Incident volume by severity (last 30 days)
index=notable earliest=-30d
| stats count by urgency
| eval order = case(urgency="critical", 1, urgency="high", 2, urgency="medium", 3,
                    urgency="low", 4, urgency="informational", 5)
| sort order

--- MTTD (Mean Time to Detect)
index=notable earliest=-30d status_label="Resolved*"
| eval mttd_minutes = round((time_of_first_event - orig_time) / 60, 1)
| stats avg(mttd_minutes) AS avg_mttd, median(mttd_minutes) AS med_mttd,
        perc95(mttd_minutes) AS p95_mttd

--- MTTR (Mean Time to Respond/Resolve)
index=notable earliest=-30d status_label="Resolved*"
| eval mttr_hours = round((status_end - _time) / 3600, 1)
| stats avg(mttr_hours) AS avg_mttr, median(mttr_hours) AS med_mttr by urgency

--- Analyst workload distribution
index=notable earliest=-7d
| stats count by owner
| sort - count

--- Alert disposition breakdown
index=notable earliest=-30d status_label IN ("Resolved*", "Closed*")
| stats count by disposition
| eval percentage = round(count / sum(count) * 100, 1)
| sort - count
ステップ 6:経営幹部向け説明ダッシュボードを作成する

重大なインシデント発生時にリーダー向けの概要レベルのダッシュボードを作成します:

--- Executive summary panel
| makeresults
| eval metrics = "Business Impact: 1 file server offline (Finance dept), "
                ."Estimated Recovery: 4 hours, "
                ."Data Loss Risk: Low (backups verified), "
                ."Customer Impact: None, "
                ."Regulatory Notification: Not required (no PII exposure confirmed)"

--- Trend comparison (this month vs last month)
index=notable earliest=-60d
| eval period = if(_time > relative_time(now(), "-30d"), "Current Month", "Previous Month")
| stats count by period, urgency
| chart sum(count) AS incidents by period, urgency

--- Top threat categories
index=notable earliest=-30d
| top rule_name limit=10
| table rule_name, count, percent
ステップ 7:ダッシュボードの更新を自動化する

Splunk のスケジュール検索を使って、ダッシュボードのデータを最新の状態に保ちます:

--- Scheduled search to update affected systems lookup (runs every 5 minutes)
index=* (src_ip IN [| inputlookup ir_ioc_list.csv | search ioc_type="ip"
                    | fields ioc_value | rename ioc_value AS src_ip])
earliest=-1h
| stats latest(_time) AS last_seen, count AS event_count,
        values(sourcetype) AS data_sources by src_ip
| eval status = if(last_seen > relative_time(now(), "-15m"), "Active", "Dormant")
| outputlookup ir_affected_systems_auto.csv

主な概念

用語定義
状況認識インシデントの範囲、影響を受けたシステム、対応の進捗をリアルタイムに把握すること
MTTD平均検知時間 — 脅威の発生から SOC アラートの生成までの平均時間
MTTR平均対応時間 — アラートからインシデントの解決または封じ込めまでの平均時間
封じ込め率侵害されたシステム総数に対する、正常に隔離された影響システムの割合
バーンダウンチャートインシデント発生中に、未完了の調査タスクが時間の経過とともにどれだけ減少したかを視覚的に追跡するグラフ
経営幹部向け説明ビジネスへの影響、タイムライン、復旧状況を示す、技術的な詳細を含まない概要ダッシュボード

ツールとシステム

  • Splunk Dashboard Studio:ドラッグ&ドロップによる視覚化とリアルタイムデータを備えた最新のダッシュボードフレームワーク
  • Elastic Kibana Dashboard:セキュリティダッシュボード向けに Lens、Maps、Canvas を備えた視覚化プラットフォーム
  • Grafana:Elasticsearch や Splunk など複数のデータソースに対応するオープンソースの視覚化プラットフォーム
  • Microsoft Sentinel Workbooks:Kusto ベースの分析を視覚化する Azure ネイティブのダッシュボードフレームワーク
  • TheHive:ケース追跡と指標ダッシュボードを標準搭載したオープンソースのインシデント対応プラットフォーム

よくあるシナリオ

  • ランサムウェアの進行中インシデント:暗号化の拡散、封じ込め状況、バックアップの検証、復旧の進捗を示すダッシュボード
  • データ侵害の調査:影響を受けたデータストア、流出量、通知要件を追跡するダッシュボード
  • フィッシングキャンペーンへの対応:受信者数、クリック率、認証情報の漏えい、修復状況を示すダッシュボード
  • 月次 SOC レポート:インシデントの傾向、MTTD/MTTR 指標、アナリストのパフォーマンスを示すリーダー向けダッシュボード
  • コンプライアンス監査:検知範囲、対応 SLA の遵守状況、インシデントのクローズ指標を示すダッシュボード

出力形式

INCIDENT RESPONSE DASHBOARD — IR-2024-0450
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

STATUS: CONTAINMENT PHASE (6h 30m elapsed)

Affected Systems:          Containment Progress:
  Compromised:   2         [==========----------] 71%
  Investigating: 1         5 of 7 systems contained
  Contained:     3
  Recovered:     1

IOC Summary:               Response Timeline:
  IPs:      4              14:00 — Alert triggered
  Domains:  2              14:12 — Confirmed malicious
  Hashes:   3              14:23 — First host isolated
  URLs:     5              15:00 — Enterprise scan started
  Emails:   1              15:30 — 3 more hosts isolated

Key Metrics:
  MTTD:    12 minutes
  MTTC:    23 minutes (first host)
  Analysts Active: 3 (Tier 2: 2, Tier 3: 1)

Business Impact: LOW — Finance file server offline, no customer-facing systems affected

コメント