---
title: '事件關聯'
description: '即時 pattern-based 多步驟攻擊偵測，滑動時間窗口搭配 7 種關聯 pattern。'
icon: 'diagram-project'
---

`EventCorrelator` 做的是即時、pattern-based 的多步驟攻擊偵測。它不是把事件獨立來看，而是維護一個滑動窗口 buffer，套 7 個 pattern detector 去辨識橫跨多個事件的攻擊鏈。

## 架構

```
Events ──> [Sliding Window Buffer] ──> [Pattern Detectors] ──> CorrelationResult
                Max 1000 events              7 patterns
                5-minute window
```

Correlator 在 `DetectAgent` 裡面跑，產出 `CorrelationPattern` 物件，拿去 `AnalyzeAgent` 裡加信心分數。

## 滑動窗口 Buffer

| 參數       | 值                                |
| ---------- | --------------------------------- |
| 最大事件數 | 1,000                             |
| 時間窗口   | 5 分鐘                            |
| 淘汰策略   | 超過 5 分鐘的事件丟掉             |
| 分組       | 按來源 IP 分組做 pattern matching |

## 7 種關聯 Pattern

### 1. 暴力破解偵測

| 欄位             | 值                                           |
| ---------------- | -------------------------------------------- |
| **MITRE ATT&CK** | T1110                                        |
| **偵測邏輯**     | 同一來源 IP 的認證失敗                       |
| **窗口**         | 60 秒                                        |
| **門檻**         | 5 個事件                                     |
| **信心值**       | 基底 60 + 每多一事件 +8（上限 100）          |
| **範例**         | 30 秒內 203.0.113.50 來了 15 次 SSH 登入失敗 |

### 2. Port Scan 偵測

| 欄位             | 值                                                                     |
| ---------------- | ---------------------------------------------------------------------- |
| **MITRE ATT&CK** | T1046                                                                  |
| **偵測邏輯**     | 同一 IP 連到不同 destination port                                      |
| **窗口**         | 60 秒                                                                  |
| **門檻**         | 10 個不同 port                                                         |
| **信心值**       | 基底 65 + 每多一 port +3（上限 100）                                   |
| **範例**         | 單一 IP 探 port 22、80、443、3306、5432、6379、8080、8443、9200、27017 |

### 3. 橫向移動

| 欄位             | 值                                                        |
| ---------------- | --------------------------------------------------------- |
| **MITRE ATT&CK** | T1021                                                     |
| **偵測邏輯**     | 連到不同內部（RFC 1918）IP                                |
| **窗口**         | 5 分鐘                                                    |
| **門檻**         | 3 個不同內部 IP                                           |
| **信心值**       | 基底 55 + 每多一 IP +10（上限 100）                       |
| **範例**         | 被入侵的主機連到 192.168.1.10、192.168.1.20、192.168.1.30 |

### 4. 資料外洩

| 欄位             | 值                                   |
| ---------------- | ------------------------------------ |
| **MITRE ATT&CK** | T1041                                |
| **偵測邏輯**     | 大量 outbound 資料傳到外部 IP        |
| **窗口**         | 單一事件評估                         |
| **門檻**         | 10 MB                                |
| **信心值**       | 基底 50 + 每多 10 MB +15（上限 100） |
| **範例**         | 用 curl 往外部 IP 傳了 45 MB         |

### 5. 後門安裝

| 欄位             | 值                                                                 |
| ---------------- | ------------------------------------------------------------------ |
| **MITRE ATT&CK** | T1059                                                              |
| **偵測邏輯**     | 檔案寫入 + process 建立 + outbound 網路連線三者同時出現            |
| **窗口**         | 5 分鐘                                                             |
| **門檻**         | 三種事件類型都要有                                                 |
| **信心值**       | 基底 55，有更多關聯事件會再提高（上限 100）                        |
| **範例**         | 寫檔到 `/tmp/payload`、spawn 新 process、outbound 連線到 C2 server |

### 6. 提權

| 欄位             | 值                                          |
| ---------------- | ------------------------------------------- |
| **MITRE ATT&CK** | T1548                                       |
| **偵測邏輯**     | setuid/setgid/sudo/pkexec 事件              |
| **窗口**         | 5 分鐘                                      |
| **門檻**         | 1 個以上事件                                |
| **信心值**       | 基底 50 + 每多一事件 +15（上限 100）        |
| **範例**         | 連續好幾次 `sudo` 之後又有 `setuid` syscall |

### 7. 嚴重度升級

| 欄位             | 值                                      |
| ---------------- | --------------------------------------- |
| **MITRE ATT&CK** | --（複合 pattern）                      |
| **偵測邏輯**     | 同一來源的低或中嚴重度事件持續累積      |
| **窗口**         | 5 分鐘                                  |
| **門檻**         | 同一嚴重度 3 個事件                     |
| **信心值**       | 基底 40 + 每多一事件 +10（上限 100）    |
| **升級規則**     | 3+ LOW 升到 MEDIUM；3+ MEDIUM 升到 HIGH |

## 關聯結果

Pattern 命中時，correlator 產出 `CorrelationResult`：

```typescript
interface CorrelationResult {
  pattern: string; // 例如 "brute_force"
  mitreId: string; // 例如 "T1110"
  confidence: number; // 0-100
  relatedEvents: string[]; // 攻擊鏈裡的事件 ID
  sourceIp: string; // 共同來源 IP
  description: string; // 人可讀的摘要
}
```

`AnalyzeAgent` 會對每個關聯事件加 +5 信心分數，最高到最終信心分的 +25。

<Warning>
  關聯引擎在記憶體裡跑。重啟 Guard 引擎會清空滑動窗口 buffer。連接 Manager server 時可以做跨 session
  的持久化關聯。
</Warning>
