在上篇文章中,我們將 n8n 整合為 OpenClaw 的 MCP 伺服器,建立了工作流程自動化的基礎。在文章的最後,我寫下了「未來展望」如下:
安全警報自動分流:Sysdig 警報 → 資訊收集 → 嚴重度判斷 → 通知
自那以來,我們著手於這項目標。將自宅的 Mac Mini 上運行的 AI 委託於 24 小時 365 天的安全監控,這正是我們的努力方向。
Sysdig Secure 已經能在 K8s 叢集上檢測到威脅,並將警報發送至 Slack,但問題在於,即使警報發送來,最終還是需要自己打開儀表板,確認內容,判斷嚴重性,並考慮應對——這樣的手動工作仍然存在。在工作或深夜收到警報時,無法即時回應。
簡而言之,透過將 OpenClaw 打造成 AI SOC 分析師,我們實現了一個由 AI 自主處理警報的自動分流、深入調查、Telegram 通知及每日摘要生成的世界。
然而,這個過程並不只是「寫寫提示」這麼簡單。需要進行 8 輪的需求定義審查,標註 61 項問題,以及與「如何設計檢測與分析的角色分配」這一關鍵問題的抗爭——預料之外的連串戲劇。

▲ SOC 導入前後的比較:從手動應對的世界轉變為 AI 駐守的 SOC
之前的運作過程如下:
#security-alerts即便是家庭實驗室,運行著四節點的 K8s 叢集,警報還是會不斷發生。由於正在運行以 Falco 為基礎的檢測規則,因此會正確捕捉到對 /etc/shadow 的讀取或可疑的過程運行。然而僅僅檢測是沒有意義的。如果不去操作「分析→判斷→應對」的循環,那就不能稱之為 SOC。
構建後的世界變為:
24/7 自動分流:警報一發送,AI 就會在線程中發布分流結果,包括嚴重性、MITRE ATT&CK 技術 ID、影響範圍以及推薦初動的結構化報告。
自動深入調查:對於 Critical/High 警報,自動使用 Sysdig MCP 進行雙階段調查(資訊收集 → Diamond Model 假設驗證)。
智能通知:不會因為深夜的低警報而被喚醒,只有 Critical/High 會即時通知到 Telegram。
每日摘要:每個早上 8 點,通過 Telegram 獲取前一天的全部警報統計、K8s 健全性和趨勢。
有趣的是,企業級 SOC 的工具堆疊能夠直接映射到家庭實驗室中。
| 企業級 SOC | 家庭實驗室 SOC | 角色 |
|---|---|---|
| SIEM | Slack 日誌 | 日誌聚合・搜索 |
| CNAPP/CWPP | Sysdig Secure | 執行時檢測・雲工作負載保護 |
| SOAR | n8n 工作流程 | 自動應對・協作 |
| AI 分析師 | OpenClaw (Claude Opus) | AI 的分流・分析 |
| 票務管理 | Slack 線程 + GitHub Issues | 事件追蹤 |
| 通知 | Telegram + Slack | 警報通知 |
| TIP | n8n + 網頁搜索 | 威脅情報 |
在企業環境中,通常使用的 3 層(Tier 1 分流 → Tier 2 分析 → Tier 3 獵捕)的 SOC 模型,但在家庭實驗室中,我們將其壓縮為 2 層:
在 6 個交接點(HP-1〜HP-6)明確定義 AI 與人之間的邊界,破壞性操作(Pod 刪除、認證資訊輪換、節點重啟)必須徵得人類的批准,這是一種安全設計。
從上次的 n8n 整合(27 個任務、一天完成)經驗中,我感受到「先定義好需求,實作會更順利」的道理。SOC 運作比 n8n 複雜得多,包含 12 本劇本、18 種 ATT&CK 技術、9 個指標和 14 個 E2E 測試——這些若隨意實作將極為不智。
因此,我們不進行任何實作,從徹底提高需求定義書的質量開始。
需求定義書從 v1.0 演進至 v1.9,這一過程中進行了 8 輪的審查,發現並修正了總計 61 件的問題。
| 審查 | 版本 | 發現數 | Critical | High | Medium |
|---|---|---|---|---|---|
| REV1 | v1.0 | 18 | 1 | 5 | 6 |
| REV2 | v1.2 | 15 | 1 | 3 | 5 |
| REV3 | v1.3 + 任務定義 v1.0 | 18 | 1 | 5 | 6 |
| REV4 | v1.4 + 任務定義 v1.1 | 12 | 0 | 2 | 5 |
| REV5〜8 | v1.5〜v1.8 | — | — | — | — |
隨著審查的重複進行,質量明顯提升:
| 指標 | v1.0(初版) | v1.9(最終版) |
|---|---|---|
| 詞彙表 | 20 語 | 43 語 |
| 劇本數 | 4(僅概述) | 12(全詳細步驟) |
| ATT&CK 覆蓋率 | 15 種技術 | 18 種技術 |
| NIST CSF 覆蓋率 | 僅 Detect/Respond | 全 6 機能 |
| F3EAD 覆蓋率 | 無 | 全 6 階段 |
| IOC/IOA 分類 | 無 | 4 分類 + Pyramid of Pain |
| 相關分析 | 無 | 4 種型別(附時間窗口參數) |
特別令人印象深刻的是 REV1 的 Critical 指摘:MITRE ATT&CK 的子技術 ID T1543.005 和 T1552.007 竟然在官方矩陣中不存在。因為我試圖將針對容器環境的檢測模式強行映射到 ATT&CK 上,但卻使用了不存在的 ID。在將其明示為自訂映射 (*) 後雖然已經解決,但若無審查,錯誤的 ATT&CK ID 就會流入生產環境。
在設計 SOC 運作時,我們採用了以下框架:
| 框架 | 用途 | 適用區域 |
|---|---|---|
| NIST CSF 2.0 | SOC 整體治理框架 | 架構設計(6 機能映射) |
| MITRE ATT&CK for Containers | 威脅分類・檢測規則設計 | 分流的 ATT&CK 映射 |
| F3EAD | 情報運作循環 | 檢測→分流→應對→改善的循環 |
| Diamond Model | 深入調查的假設驗證 | Critical/High 警報的 4 假設分析 |
| Cyber Kill Chain | 攻擊階段的分析 | 相關分析的殺傷鏈基礎相關 |
| PEAK | 威脅獵捕 | 人員主導的前瞻性調查 |

▲ 家庭實驗室 SOC 架構 -- 映射到 NIST CSF 2.0 的 6 機能
系統由三個主要組件組成:

▲ n8n 的執行歷程:MCP Server Trigger → get_current_time / fetch_webpage。所有執行在幾毫秒內成功

▲ 警報的 6 階段生命週期:檢測→通知→分流→調查→應對→記錄
警報以二階段處理:
第一階段(檢測→分流):
#security-alerts第二階段(調查→記錄):
此次專案最具特色的是,完整地將 52 種 MCP 工具映射至 SOC 功能之中。
| MCP 伺服器 | 工具數 | 主要用途 |
|---|---|---|
| Sysdig | 21 | 事件搜索、過程樹、SysQL 查詢、K8s 狀態監控 |
| Serena | 27 | 代碼基礎分析、符號搜索(支援 SOC 外的開發) |
| drawio | 3 | 圖示生成 |
| n8n | 1 | 網頁獲取(用於威脅情報) |
Sysdig 的 21 種工具將 SOC 功能細化為如下:
檢測系: sysdig_list_runtime_events, sysdig_get_event_info
調查系: sysdig_get_event_process_tree, sysdig_run_sysql, sysdig_generate_sysql
K8s 監控: sysdig_k8s_list_nodes, sysdig_k8s_list_workloads, sysdig_k8s_list_pod_containers
資源: sysdig_k8s_list_top_cpu_consumed_*, sysdig_k8s_list_top_memory_consumed_*
故障檢測: sysdig_k8s_list_top_restarted_pods, sysdig_k8s_list_top_unavailable_pods
AGENTS.md 的設計此次專案中最重要的發現是,產物不再是代碼,而是提示。
| 項目 | 上次(n8n MCP 整合) | 本次(SOC 運作) |
|---|---|---|
| 主要產物 | Docker 容器、設定檔 | AGENTS.md(提示) |
| 測試方式 | 工具調用的成否確認 | AI 輸出品質的評估 |
| 完成標準 | 技術上能運作 | 運用品質符合目標 |
| 反復性 | 一次建構完成 | 需持續改善 |
AGENTS.md 是定義 OpenClaw 的「人格」的文件。於此記載 SOC 分析師的行為——嚴重度的判斷標準、ATT&CK 映射的規則、分流的輸出格式、升級條件——所有內容皆以此為基礎。
AGENTS.md 的結構壓縮版 AGENTS.md(336 行,11052 字元)的主要部分如下。
嚴重度表:將 Sysdig 的警報嚴重度轉換為 SOC 的 4 段的規則。

▲ 將 Sysdig 的警報嚴重度映射至 SOC 的 4 段。MTTR 目標也相連結以管理應對速度
因為 Sysdig 的 High 為最高嚴重度,所以沒有明示嚴重度的警報,例如 Runtime Event 和 Notable Events 也被附上 High = Critical/High 處理的規則,以優先應對。
分流輸出格式:AI 在線程發布的分流結果模板。
1. 標題(嚴重度 / ATT&CK Txxxx / 影響範圍)
2. 摘要(1-2 句的中文總結)
3. 檢測規則(Sysdig 規則名稱 + 條件)
4. 影響評估(商業影響 + 緊急度)
5. 推薦初動(3 項目檢查清單)
6. 追加調查(Sysdig MCP 深入調查建議)
7. 攻擊指標(IOC/IOA 分類 + Pyramid of Pain 級別)
ATT&CK 映射指南:與 18 種技術的檢測模式對應的表格。AI 將參考此表格,附上適當的技術 ID 至各個警報。
T1059 命令直譯器 ← sh/bash 執行
T1609 容器管理命令 ← kubectl exec
T1611 跳出到主機 ← /proc/1/root, nsenter
T1496 資源劫持 ← CPU 異常 + Stratum 協議
T1552 認證資訊竊取 ← /etc/shadow, ServiceAccount Token
...(全 18 種技術)
深入調查工作流程:對於 Critical/High 警報自動執行的雙階段調查。
第一階段: 資訊收集(MCP 6 工具鏈)
sysdig_get_event_info → sysdig_get_event_process_tree
→ sysdig_run_sysql(同 Pod 1h) → sysdig_k8s_list_workloads
→ sysdig_k8s_list_pod_containers → CPU/記憶體分析
第二階段: Diamond Model 假設驗證
H1: 正常運作 H2: 權限提升 H3: 外部入侵 H4: 自動化異常
基於 Adversary/Infrastructure/Capability/Victim 軸分析各假設
自我進化的提示:特筆的是,AGENTS.md 中直接嵌入了「假陽性模式列表」。當操作員在警報線程中回覆「FP」時,AI 會自動提取該模式並新增至列表,隨著運行而變得更加智慧的系統。

「如果 AI 聰明,檢測也讓 AI 來做不是更好?」——這是合理的疑問。然而,檢測和分析所需的特性完全不同。
檢測所需的東西:Sysdig Secure 利用 eBPF 實時監控內核級的系統調用(過程執行、文件存取、網路通信)。當 Falco 規則符合時,瞬間觸發警報——毫秒級的即時反應和在相同輸入下總是返回相同結果的決定性重現性是其特點。
分析所需的東西:「這個警報真的危險嗎?」「多個警報是否有關聯?」「當觀看整個命令鏈時,哪些攻擊手法的組合?」——這類基於上下文的判斷正是 AI 發揮真實價值的領域。
| 能力 | Sysdig (Falco/eBPF) | AI (OpenClaw) |
|---|---|---|
| 實時檢測 | ◎ 內核級別・毫秒 | ✕ API 輪詢會有延遲 |
| 決定論判定 | ◎ 相同輸入 → 一定相同結果 | △ 每次生成稍有不同 |
| 上下文分析 | ✕ 僅規則匹配 | ◎ 考慮整個環境的判斷 |
| ATT&CK 映射 | △ 須在規則內事先定義的靜態標籤 | ◎ 從執行上下文中動態識別 |
| 攻擊鏈推斷 | ✕ | ◎ 時間和空間上的相關性分析 |
| 自然語言報告 | ✕ | ◎ 結構化的分流報告 |
這表示,Sysdig 捕捉了「發生了什麼」,而 AI 判斷「這意味著什麼」——這一角色分配正是 AI SOC 的設計原則。
這種分離在運作上也帶來了好處:
💡 實作提示:
AGENTS.md有 20000 字的上限,因此將運作規則本身(11052 字)與詳細步驟書SOC-REFERENCE.md(25717 字)的內容分為 2 個檔案。即使是提示設計,也需要與「代碼的模組化分割」相同的發想。
接下來,我們將查看實際運行中的 SOC 的具體輸出。僅僅談設計可能無法消除「真的能運行嗎?」的懷疑,因此展示一些真實的分流結果。

▲ 實際的 Slack #security-alerts 畫面:左側為警報列表,右側線程為 AI 的分流結果
在測試用 busybox 容器中執行 /etc/shadow 的讀取與憑證檔案的搜尋後,Sysdig 檢測到 尋找認證憑證 的警報。該警報發佈至 Slack #security-alerts 後,僅數秒內,OpenClaw 在線程中自動發佈以下分流結果:
## 🟠 Medium | T1649 + T1003 + T1083 | Pod: test-recon-blog (nuc2/default)
### 概要
在 busybox:latest 容器中執行了用於尋找、竊取認證資訊的複合偵察命令,且是以 root 權限執行。
### 執行命令鏈(⚠️ 重要)
sh -c cat /etc/shadow; find / -name "*.key" -o -name "*.pem" 2>/dev/null; whoami; exit 0
在單一 shell 中執行 3 階段的偵察:
1. cat /etc/shadow → 竊取密碼雜湊 (T1003)
2. find / -name *.key -o -name *.pem → 尋找憑證與私鑰 (T1649)
3. whoami → 確認權限 (T1083)
### ATT&CK 映射
| 戰術 | 技術 | 根據 |
|-------------------|-----------|--------------------------|
| Credential Access | T1649 | 尋找密鑰與憑證檔案 |
| Credential Access | T1003 | 讀取 /etc/shadow |
| Discovery | T1083 | 全系統檔案掃描 |
| Execution | T1059 | 藉由 sh 執行複合命令 |
### 攻擊指標
- IOA: busybox + /etc/shadow + 憑證搜尋的組合(Pyramid of Pain: TTP 級別)
- IOC: proc.hash.sha256=786295... (查找二進位)
- IOC: Pod test-recon-blog / 映像 busybox:latest 在 default ns 中
### 推薦初動
- [ ] 即時刪除 Pod: kubectl delete pod test-recon-blog -n default
- [ ] 調查 Pod 的創建來源(kubectl get events / audit log)
- [ ] 檢查同一節點(nuc2)的相關事件
值得注意的幾點:
sh -c 包含的 3 階段偵察分解,並為各自附上 ATT&CK 技術 IDkubectl delete pod 指令在上述的分流過程中,AI 在背後自動調用以下 Sysdig MCP 工具:
1. sysdig_get_event_info → 獲取警報詳情
2. sysdig_list_runtime_events → 搜尋同一 Pod 的相關事件
3. sysdig_get_event_process_tree → 可視化過程樹
對於一個警報,AI 連鎖調用了 3 個 MCP 工具,在生成分流結果前堆疊相關上下文。人類若要在 Sysdig 的儀表板上開啟同樣的信息收集工作,則需耗費數秒,AI 卻能在短時間內完成。
當同一 Pod 同時發生兩個警報(Terminal shell in container + Find Authentication credentials)時,AI 將自動執行 相關分析:
### 檢測規則
| 規則 | 重要度 |
|----------------------------------|--------|
| Terminal shell in container | Medium |
| Find Authentication credentials | Medium |
這兩條規則在同一時間發生→ 在容器內先獲取 shell 後,再尋找認證資訊的模式(Kill Chain: Execution → Credential Access)
判定:根據 Pod 名稱中的 "test-recon" 模式及 kubernetes-admin 的即時刪除,認為此次行動為安全測試,但仍需確認創建者的意圖。
雖單獨視為 Medium 的警報,但通過多個警報的時間性和空間性相關的分析,AI 能呈現出攻擊鏈的全貌。
隨著運行,我們發現 node-exporter 定期會發出掃描 SUID/SGID 檔案的警報。操作員當在線程中回覆「FP」後:

未來將自動給予類似的警報添加 [FP候補] 標籤,逐步減少噪音。這是 運作中越來越聰明的 SOC。
根據任務定義書,執行了 5 個階段及 43 個任務。
| 階段 | 名稱 | 任務數 | 必須 | 應該 | 可以 | 內容 |
|---|---|---|---|---|---|---|
| 1 | SOC 基建建設 | 13 | 12 | 1 | 0 | 警報接收、分流、升級、每日摘要 |
| 2 | AI 分流強化 | 7 | 2 | 5 | 0 | FP 判定、IOC/IOA 分類、相關分析、質量保證 |
| 3 | SOAR 工作流程 | 9 | 1 | 7 | 1 | PB-004〜010 劇本、報告模板、證據保全 |
| 4 | 定期監視・威脅獵捕 | 8 | 1 | 3 | 4 | 定期掃描、PEAK 框架、威脅情報 |
| 5 | 持續改善 | 6 | 1 | 2 | 3 | 指標測量、每週報告、運營檢查清單 |
| 合計 | 43 | 17 | 18 | 8 |
在階段 1 時,最讓人感動的是 AI 對測試警報首次返回分流結果的瞬間。
當我們透過 kubectl run 在 busybox 容器中讀取 /etc/shadow 時,Sysdig 檢測到了該行為,並將警報發布至 Slack。幾秒後,OpenClaw 提交了結構化的分流結果:
原文出處:https://qiita.com/takao-shimizu/items/7cb1d8b48cd442e07962