# Correlating Threat Campaigns

> 关联不同时间和组织的安全事件、IOC 和对手行为，识别统一的威胁活动，将其归因于共同的威胁行为者，并提取共享指标以改善检测效果。适用于多起事件出现重叠指标、需要跨组织分析行业范围内攻击活动，或构建活动级别情报产品时。适用于涉及活动分析、事件聚类、跨组织 IOC 关联或 MISP 关联引擎的请求。

- Skill: `killvxk/correlating-threat-campaigns` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/correlating-threat-campaigns`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/correlating-threat-campaigns/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/correlating-threat-campaigns

---

# 关联威胁活动

## 适用场景

在以下情况下使用本技能：
- 多起表面上无关的事件共享 IOC（相同的 C2 IP、相同的恶意软件哈希、相似的 TTP）
- ISAC 合作伙伴共享的事件指标与您自己的历史事件匹配
- 构建将对手活动跨数周或数月关联到单一行动的活动报告

**请勿使用**本技能基于弱信号强制进行关联——错误的活动归因会误导防御者，并在错误的威胁模型上浪费资源。

## 前置条件

- 具有历史指标和事件数据的 TIP 或 SIEM（建议 90 天以上）
- MISP 关联引擎已启用，并配置了事件共享
- 图分析工具（Maltego、Neo4j 或 OpenCTI），用于关系可视化
- 参考 MITRE ATT&CK 入侵集合和活动对象，用于结构化输出

## 工作流程

### 步骤 1：收集和规范化事件

从以下来源收集所有候选关联事件：
- 内部 SIEM（原始事件、告警历史）
- TIP（历史指标和事件）
- ISAC 共享（合作伙伴通过 MISP 或 TAXII 提交的事件）
- 商业情报（Recorded Future、Mandiant、CrowdStrike 报告）

将所有事件规范化为 STIX 2.1 架构，使用一致的时间戳（UTC）、指标类型和置信度分数。确保所有指标具有来源归因和收集日期。

### 步骤 2：识别关联枢纽点

在四个维度上系统地进行枢纽分析：

**基础设施枢纽**：
- 事件间相同的 IP 地址或 /24 子网
- 相同的域名注册人邮箱或 WHOIS 组织
- 具有相同账户指纹的相同 ASN 或托管提供商
- 跨 C2 域名相同的 SSL 证书指纹或序列号

**能力枢纽**：
- 相同的恶意软件哈希或 YARA 签名匹配
- 相同的 C2 通信协议（Cobalt Strike beacon 配置、Sliver 植入参数）
- 相同的漏洞利用代码或武器化文档模板
- 相同的混淆方法或打包程序指纹

**时间枢纽**：
- 事件发生在同一时间窗口内（操作时间表明相同时区）
- 具有逻辑杀伤链进展的顺序事件
- 恶意软件编译时间戳集中在同一日期范围内

**受害者学枢纽**：
- 相同的目标行业（医疗、能源、金融）
- 相同的目标地区
- 相同的目标技术（特定 ERP 供应商、VPN 设备品牌）

### 步骤 3：计算关联置信度

为活动归因应用加权评分：
```python
def calculate_campaign_confidence(events: list) -> float:
    scores = []

    # 基础设施重叠（最高权重——最具区分性）
    infra_overlap = count_shared_infra(events) / len(events)
    scores.append(infra_overlap * 40)

    # 能力重叠（高权重——TTP 持久性强）
    capability_overlap = count_shared_ttps(events) / len(events)
    scores.append(capability_overlap * 35)

    # 时间接近度（中等权重）
    temporal_score = assess_temporal_clustering(events)
    scores.append(temporal_score * 15)

    # 受害者学一致性（较低权重——许多行为者针对相同行业）
    victim_score = assess_victim_pattern(events)
    scores.append(victim_score * 10)

    total = sum(scores)
    if total >= 70: return "HIGH"
    elif total >= 45: return "MEDIUM"
    else: return "LOW"
```

### 步骤 4：构建活动图谱

在 OpenCTI 或 Maltego 中构建活动图谱：
- 活动对象（STIX）作为中心节点
- 入侵集合 → 使用 → 恶意软件对象
- 入侵集合 → 使用 → 基础设施对象
- 入侵集合 → 针对 → 身份对象（受害组织/行业）
- 活动 → 归因于 → 威胁行为者（若已实现归因）
- 指标 → 指示 → 恶意软件（将技术可观测对象链接到能力）

为每个关系标注证据参考和置信度。

### 步骤 5：生成活动情报报告

构建活动报告结构：
1. **活动名称**：根据目标主题或工具集分配描述性代号
2. **时间线**：首次/最后发现日期及活动阶段
3. **归因**：疑似威胁行为者及置信度级别
4. **目标画像**：行业领域、地区、组织规模
5. **TTP 摘要**：针对活动特定技术的 ATT&CK Navigator 热力图
6. **共享指标**：跨多起事件的 IOC（封锁置信度最高）
7. **检测指导**：针对本活动的 Sigma/YARA 规则

## 核心概念

| 术语 | 定义 |
|------|------|
| **活动（Campaign）** | STIX 对象，表示在定义时间段内具有共同目标的对抗性行为分组 |
| **入侵集合（Intrusion Set）** | STIX 对象，按共同目标对相关入侵活动进行分组，即使行为者身份不确定 |
| **枢纽（Pivot）** | 使用单个数据点（IOC、基础设施、TTP）发现相关事件或对手痕迹 |
| **聚类（Clustering）** | 基于特征相似性对事件进行机器学习或人工分组，以识别活动边界 |
| **错误关联（False Correlation）** | 因共享基础设施（CDN、共享托管）或通用工具导致不相关事件被错误关联 |

## 工具与系统

- **MISP 关联引擎**：自动关联跨 MISP 实例和联合实例中共享属性值的事件
- **OpenCTI 图谱**：用于可视化活动关联的交互式关系图，支持 STIX 对象类型
- **Maltego**：跨多数据源进行基础设施和能力枢纽的链接分析
- **Neo4j**：支持 Cypher 查询的图数据库，用于大规模活动关联（百万级事件）

## 常见陷阱

- **CDN/共享托管误报**：Cloudflare、AWS CloudFront 和防弹托管服务同时服务多个威胁行为者。仅凭共享 IP 不能建立活动关联。
- **通用恶意软件混淆**：多个威胁行为者使用 Cobalt Strike。没有其他佐证时，共享能力不能表明相同行为者。
- **过早归因**：在达到证据阈值前强制进行活动到行为者归因，会产生在报告中持续存在的错误情报。
- **忽视时间分析**：不同年份的事件可能共享已被不同行为者回收利用的基础设施，并非同一活动。

