mcpField
A
analyzing-security-logs-with-splunk

analyzing-security-logs-with-splunk

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

analyzing-security-logs-with-splunk について

ログソースを横断してインシデントを調査し、脅威活動を探索するためのSplunk向けセキュリティスキルです。相関分析、タイムラインの再構成、調査結果を検知検索にする手順を提供します。

主な機能

  1. 01インデックス横断の調査範囲設定
  2. 02認証異常の分析
  3. 03プロセス実行の追跡
  4. 04ネットワークと端末ログの相関
  5. 05インシデントタイムラインの再構成
  6. 06相関検索の作成

活用シーン

  1. 01アカウント侵害の疑いを調査
  2. 02攻撃者の手法や指標を探索
  3. 03複数ログソースの活動を再構成
  4. 04調査結果を継続的な検知に反映

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-security-logs-with-splunk

インストール後、Claude Code で/analyzing-security-logs-with-splunkを入力して読み込まれたか確認します。

同梱ファイル

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

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

詳細

Splunk によるセキュリティログの分析

使用する場面

  • 複数のログソースを横断した相関分析が必要なセキュリティインシデントを調査する場合
  • 既知の TTP と IOC を使用して攻撃者の活動をハンティングする場合
  • 特定の攻撃パターンに対する検知ルールを作成する場合
  • 複数の異なるログソースからインシデントのタイムラインを再構成する場合
  • 認証の異常、ラテラルムーブメント、データの持ち出しパターンを分析する場合

使用しないでください。リアルタイムのパケットレベル分析には、パケットを完全にキャプチャして分析できる Wireshark または Zeek を使用してください。

前提条件

  • Enterprise Security(ES)アプリをインストールした Splunk Enterprise または Splunk Cloud
  • ログソースが取り込まれていること:Windows Event Logs(Splunk Universal Forwarder または WEF 経由)、ファイアウォール、プロキシ、DNS、EDR、メールゲートウェイ
  • 正規化されたフィールド名を使用するために、Splunk CIM(Common Information Model)データモデルが設定されていること
  • 中級以上の SPL 習熟度
  • Splunk で search および accelerate_search 機能を持つロールベースのアクセス権

ワークフロー

ステップ 1:Splunk で調査範囲を定める

インシデントのトリアージデータに基づいて検索パラメーターを定義します。

| Set initial investigation scope
index=windows OR index=firewall OR index=proxy
  earliest="2025-11-14T00:00:00" latest="2025-11-16T00:00:00"
  (host="WKSTN-042" OR src_ip="10.1.5.42" OR user="jsmith")
| stats count by index, sourcetype, host
| sort -count

このクエリにより、調査対象の期間と影響を受けたアセットに関連するデータを含むログソースを特定できます。

ステップ 2:認証イベントを分析する

Windows Security Event Logs を使用して、不審な認証パターンを調査します。

| Detect brute force and credential stuffing
index=windows sourcetype="WinEventLog:Security" EventCode=4625
  earliest=-24h
| stats count as failed_attempts, values(src_ip) as source_ips,
  dc(src_ip) as unique_sources by TargetUserName
| where failed_attempts > 10
| sort -failed_attempts

| Detect pass-the-hash (Logon Type 9 - NewCredentials)
index=windows sourcetype="WinEventLog:Security" EventCode=4624
  Logon_Type=9
| table _time, host, TargetUserName, src_ip, LogonProcessName

| Detect lateral movement via RDP
index=windows sourcetype="WinEventLog:Security" EventCode=4624
  Logon_Type=10
| stats count, values(host) as targets by TargetUserName, src_ip
| where count > 3
| sort -count
ステップ 3:プロセスの実行を追跡する

Sysmon のログを使用して、プロセス実行チェーンを再構成します。

| Process creation with parent chain (Sysmon Event ID 1)
index=sysmon EventCode=1 host="WKSTN-042"
  earliest="2025-11-15T14:00:00" latest="2025-11-15T15:00:00"
| table _time, ParentImage, ParentCommandLine, Image, CommandLine, User, Hashes
| sort _time

| Detect suspicious PowerShell execution
index=sysmon EventCode=1 Image="*\\powershell.exe"
  (CommandLine="*-enc*" OR CommandLine="*-encodedcommand*"
   OR CommandLine="*downloadstring*" OR CommandLine="*iex*")
| table _time, host, User, ParentImage, CommandLine
| sort _time

| Detect LSASS credential dumping
index=sysmon EventCode=10 TargetImage="*\\lsass.exe"
  GrantedAccess=0x1010
| table _time, host, SourceImage, SourceUser, GrantedAccess
ステップ 4:ネットワークアクティビティを分析する

ネットワークログをエンドポイントイベントと相関させます。

| Detect C2 beaconing pattern
index=proxy OR index=firewall dest_ip="185.220.101.42"
| timechart span=1m count by src_ip
| where count > 0

| Detect DNS tunneling (high query volume to single domain)
index=dns
| rex field=query "(?<subdomain>[^\.]+)\.(?<domain>[^\.]+\.[^\.]+)$"
| stats count, avg(len(query)) as avg_query_len by domain, src_ip
| where count > 500 AND avg_query_len > 40
| sort -count

| Detect large data transfers (potential exfiltration)
index=proxy action=allowed
| stats sum(bytes_out) as total_bytes by src_ip, dest_ip, dest_host
| eval total_MB=round(total_bytes/1024/1024,2)
| where total_MB > 100
| sort -total_MB
ステップ 5:インシデントのタイムラインを作成する

すべてのログソースを横断した統合タイムラインを再構成します。

| Unified incident timeline
index=windows OR index=sysmon OR index=proxy OR index=firewall
  (host="WKSTN-042" OR src_ip="10.1.5.42" OR user="jsmith")
  earliest="2025-11-15T14:00:00" latest="2025-11-15T16:00:00"
| eval event_summary=case(
    sourcetype=="WinEventLog:Security" AND EventCode==4624, "Logon: ".TargetUserName." from ".src_ip,
    sourcetype=="WinEventLog:Security" AND EventCode==4625, "Failed logon: ".TargetUserName,
    sourcetype=="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" AND EventCode==1,
      "Process: ".Image." by ".User,
    sourcetype=="proxy", "Web: ".http_method." ".url,
    1==1, sourcetype.": ".EventCode)
| table _time, sourcetype, host, event_summary
| sort _time
ステップ 6:検知ルールを作成する

調査結果を、継続的に実行される Splunk の相関検索に変換します。

| Correlation search: PowerShell spawned by Office applications
index=sysmon EventCode=1
  Image="*\\powershell.exe"
  (ParentImage="*\\winword.exe" OR ParentImage="*\\excel.exe"
   OR ParentImage="*\\outlook.exe")
| eval severity="high"
| eval mitre_technique="T1059.001"
| collect index=notable_events

主な概念

用語定義
SPL(Search Processing Language)機械データの検索、フィルタリング、変換、可視化に使用する Splunk のクエリ言語
CIM(Common Information Model)異なるソースを横断するクエリに使用するため、ベンダー固有のフィールド名を共通名に対応付ける Splunk のフィールド正規化標準
Notable Event相関検索との一致に基づいてアナリストによるレビュー対象としてフラグが付けられた、Splunk Enterprise Security のイベント
Data Model高速化された検索とピボットベースの分析を可能にする、Splunk のインデックス済みデータの構造化表現
Sourcetype特定のログ種別の形式と解析ルールを定義する、Splunk の分類ラベル
Correlation Search条件を満たしたときに継続的に実行され、注目すべきイベントを生成する、スケジュール設定された Splunk の検索
Timechartパターン、異常、傾向を特定するための時系列の可視化を作成する SPL コマンド

ツールとシステム

  • Splunk Enterprise Security(ES):相関検索、リスクベースのアラート、調査ワークベンチを提供するプレミアム SIEM アプリケーション
  • Splunk SOAR:自動対応プレイブックを実現する、Splunk ES と統合されたオーケストレーションプラットフォーム
  • Sysmon:詳細なプロセス、ネットワーク、ファイル変更のテレメトリを提供し、Splunk に取り込む Microsoft のシステム監視ツール
  • Splunk Attack Analyzer:不審なファイルや URL を実行して分析し、その結果を Splunk に取り込む自動脅威分析ツール
  • BOSS of the SOC(BOTS):インシデント調査の SPL クエリを練習するための、SANS/Splunk のトレーニング用データセット

よくあるシナリオ

シナリオ:アカウント乗っ取りにつながるクレデンシャルスタッフィングの調査

コンテキスト:セキュリティ運用チームが、30 分以内に地理的に離れた IP アドレスから 1 つのアカウントへの複数のログインが成功したことを示すアラートを受信します。

アプローチ:

  1. 該当アカウントのイベント ID 4624 を検索し、すべてのログイン元と時刻を特定します
  2. Splunk のルックアップテーブルを使用して、ログイン IP を脅威インテリジェンスフィードと照合します
  3. 認証済みセッションからの不審なアクティビティがないか、プロキシログを確認します
  4. 侵害されたアカウントからのラテラルムーブメントを検索します(イベント ID 4624 タイプ 3 による他のホストへのログイン)
  5. クレデンシャルスタッフィングの試行、ログインの成功、侵害後のアクティビティを示すタイムラインを作成します
  6. 他のアカウントで類似したパターンを検知するための相関検索を作成します

注意点:

  • クレデンシャルスタッフィングが数週間にわたって発生した可能性があるにもかかわらず、直近 24 時間のみを検索すること
  • 同じアカウントが移動不可能な距離から認証されていることを示す VPN ログを確認しないこと
  • 異なるタイムゾーンのログソース間でタイムスタンプを正規化しないこと

出力形式

SPLUNK INVESTIGATION REPORT
============================
Incident:        INC-2025-1547
Analyst:         [Name]
Investigation Period: 2025-11-14 00:00 UTC - 2025-11-16 00:00 UTC

SEARCH SCOPE
Indexes:         windows, sysmon, proxy, firewall, dns
Hosts:           WKSTN-042, SRV-FILE01
Users:           jsmith, svc-backup
Source IPs:      10.1.5.42, 10.1.10.15

KEY FINDINGS
1. [timestamp] - Initial compromise via phishing (Sysmon Event 1)
2. [timestamp] - C2 established (proxy logs, beacon pattern detected)
3. [timestamp] - Credential theft (Sysmon Event 10, LSASS access)
4. [timestamp] - Lateral movement to SRV-FILE01 (Event 4624 Type 3)
5. [timestamp] - Data staging and exfiltration (proxy bytes_out anomaly)

SPL QUERIES USED
[numbered list of key queries with descriptions]

DETECTION GAPS IDENTIFIED
- No Sysmon deployed on SRV-FILE01 (blind spot)
- Proxy logs missing SSL inspection for C2 domain
- PowerShell ScriptBlock logging not enabled

RECOMMENDED DETECTIONS
1. Correlation search for Office-spawned PowerShell
2. Threshold alert for LSASS access patterns
3. Behavioral rule for beacon-interval network traffic

コメント