re-attribution
Identifies who carried out a cyberattack by mapping their tools, infrastructure, and methods.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md (not in English)
---
name: re-attribution
type: atomic
description: >
威胁归因方法论:钻石模型、基础设施图谱、置信度分级与归因报告。
触发词:归因、APT、attribution、攻击者身份、基础设施图谱、钻石模型、威胁组织。
---
# 威胁归因(APT Attribution)
## 何时使用 / 何时不用
- 用:情报归因请求(「谁干的」)、多事件串并(判断几起事件是否同一活动)、基础设施关联分析、样本/能力到攻击者的推理
- 用:受害环境的攻击者画像(时间线、TTP、基础设施特征综合)
- 用:同组活动排查(一次事件 → 找同基础设施/同能力的其他事件,先关联再定级)
- 不用:单个 IOC 查询(转 [[re-ti]]);恶意行为判定(转 [[re-behavior]])
- 不用:司法证据链(刑事标准高于情报归因,本技能结论不能直接作为司法证据,见 [[gotchas]])
- 不用:只有单角证据时做组织级归因(仅样本或仅域名不支撑归因声明,分支判断见 [[decision-tree]])
## 工具准备
### 关联查询工具(Passive DNS / 证书透明 / Whois)
- whois CLI(注册信息/ASN 归属):Linux `apt install whois` / `dnf install whois`;macOS `brew install whois`;Windows 用 WSL 分支(见 [[platform-tips]])
- python-whois(Python 模块):多平台 `pip install python-whois`;验证: `python3 -c "import whois"`
- dnsx(DNS 枚举):官方渠道为 Go 二进制——GitHub `projectdiscovery/dnsx` releases 或 `go install github.com/projectdiscovery/dnsx/cmd/dnsx@latest`;验证 `dnsx -version`(PyPI 同名包与官方工具无关,别混用)
- 证书透明日志:crt.sh 网页查询(公开服务,按域名/证书指纹检索)
- ASN 归属查询:`whois -h whois.cymru.com <IP>` 返回 AS 号与归属(Team Cymru 公开接口)
### MISP(情报关联与共享)
- Docker 部署(官方安装脚本/镜像,`apt install misp` 在发行版源不存在)或轻量替代(本地 CSV/图文件)
- 验证: 登录 MISP UI 能创建/检索事件(轻量替代用数据导入脚本自检)
### 图分析(基础设施关系)
- 多平台: `pip install networkx`(python 图分析);验证: `python3 -c "import networkx"`
## 操作步骤
按顺序执行;全部内容脱敏处理(红线:不指向具体组织/受害者身份,只用代号与抽象描述)。
1. **钻石模型定位**:
- 四角:受害者(已明确)/ 基础设施(C2 域名/IP/证书)/ 能力(工具/样本/漏洞利用)/ 对手(待推断)
- 活动线:把事件建模为元组(时间、对手、能力、基础设施、受害者),多事件按共享元素连成活动线
- 元数据要素:时间窗、受害域、行业属性——用于聚类与时间线(不单独作证据)
- 四角信息表字段:每角列(已知项/未知项/来源/查询时间),未知项就是归因缺口
- 产出:四角已知信息表 + 缺失角(归因目标)
- 规则:只有两角以上才能开始推理;单角(仅样本)不支撑归因声明(判据见 [[decision-tree]])
- 单角输出形态:只有 1 角时交付「情报线索」级(IOC 清单 + 特征描述),标注「未进入归因」,不写组织名
2. **基础设施图谱**:
```sh
# 域名/IP/证书关联聚类(示例流程,工具可替换)
# 1) 收集 C2 域名/IP → whois 注册信息(注册者/邮箱/NS/ASN)
# 2) 证书透明日志(crt.sh)查共用证书 → 关联其他域名
# 3) dnsx 主动枚举关联子域/NS 记录(被动 DNS 接口看解析历史)
# 4) networkx 图聚类:共享注册者/证书/NS/ASN 的节点合并
```
- 聚类特征按区分度排序:唯一注册邮箱/证书 > 共用 NS/ASN > 同托管商
- 被动 DNS 关注点:域名首次解析时间、解析 IP 段切换史、历史 NS 变化(注册人操作习惯特征)
- IP 段特征:段内其他域名的用途/注册时间(同类活动聚集是弱线索,需排除托管商批量注册)
- Whois 隐私保护:注册信息可能匿名(GDPR 后常见)——注册者字段不可用时降级用证书/NS/行为特征交叉,标注注册信息盲区
- 域名相似性(同后缀/typosquat)只作弱线索:注册商与注册时间都可伪造
- 跳板/托管商共存不能作为归属证据(见坑 1 与 [[gotchas]])
3. **能力与样本归因**:
- 代码复用:样本间字符串/函数/资源/导入表相似度(唯一性字符串优先)
- TTP 对比:行为模式与已知活动对齐(对齐方式参考 [[re-behavior]] 与 ATT&CK 映射)——先粗对齐(技术大类)再细对齐(端口/参数/加密细节)
- 时间线:活动窗口对齐(先归一 UTC 核对时区与时间来源,见坑 6)
- 唯一性特征优先:独特字符串/编译特征/语言习惯(比通用 TTP 更有区分度)
- 样本家族名是分析人员命名,不是归属证据(命名由分析习惯决定,见 [[gotchas]])
- 产出:能力证据表(每条证据 → 支持/反对假设,来源可追溯)
4. **置信度分级**:
- 低:单类弱证据(特征泛化,如仅共享托管商)
- 中:两类独立证据交叉,或单类强证据(多个唯一性特征)
- 高:三类以上 + 时间线一致 + 无矛盾证据
- 判定:按证据类型×强度打分,规则与反例见 [[decision-tree]] 证据分级表
- 措辞规范:低→「关联活动」;中→「疑似同一活动」;高→「高度疑似归属」;不写绝对断言(见 [[gotchas]] 声明边界)
- 规则:无高置信度证据时声明「关联活动」而非「归属组织」;明确列出未解决的反证
- 不设「确认」级:情报归因无 100% 断言,最高等级也保留假设前提(如「假设该基础设施未被劫持」)
5. **报告**:
- 结构:结论(分级声明)→ 证据链(每角证据 + 来源)→ 置信度依据 → 反证与未决项 → 方法边界(哪些无法判定)
- 模板(脱敏版):
```
# 归因报告(内部)
- 结论:<等级> —— 与 <代号> 活动为同一活动方(置信度:中)
- 证据链:1) 唯一注册邮箱(whois,查询时间) 2) 共用证书(crt.sh) 3) 代码唯一字符串(样本对照)
- 反证/未决项:时间线缺口;注册信息匿名(GDPR)
- 方法边界:未验证 C2 行为;无法判定项清单
```
- 结论与证据对照 [[analysis-contract]] 复核格式存档(结论/证据/置信度)
- 脱敏:不公开受害者身份/真实组织名(用代号),不发表过度归因声明;对外口径与内部结论分开(分层输出)
- 脱敏检查清单:受害者身份/组织名/域名/IP 全替换代号;截图中的主机名/用户名打码;引用原始情报前重查一遍
## 跨域联合
- [[re-ti]]:情报输入(IOC 查询与背景)
- [[re-ioc]]:指标提取(域名/IP/哈希)
- [[re-behavior]]:行为证据(TTP 对齐)
- [[re-protocol]]:C2 协议分析(基础设施特征)
- [[re-hunting]]:归因假设可转狩猎假设(「如果同一活动方进入环境,会在遥测中出现什么」)
- [[re-feedback]]:归因案例经验沉淀(脱敏后)
- [[analysis-contract]]:结论交付格式
## 常见坑与陷阱
- **基础设施重叠导致误归因**:现象——两活动共享 C2 基础设施被并为一组;原因——共用托管/被劫持基础设施;对策——区分「共享」与「控制」证据(注册信息 vs 仅托管),共享类证据降级为弱证据
- **跳板机 ≠ 归属**:现象——经第三方跳板的活动归到跳板所有者;原因——混淆路径;对策——只把「控制面证据」(注册/配置/唯一特征)算入归属
- **置信度虚高**:现象——单一独特性状(罕见字符串)即高置信度;原因——单证据强但无交叉验证;对策——按步骤 4 分级,单类弱证据最高「低」,单类强证据最高「中」
- **能力共享被误读**:现象——两家活动共用工具(公开工具/租赁平台)被归为一家;原因——能力是商品化资源,不唯一;对策——工具类证据只能作弱证据,需叠加基础设施/时间线证据
- **无证据 ≠ 排除**:现象——时间线对不齐/查不到记录即判断「无关」;原因——被动数据缺失、证据未公开;对策——标注「未发现」而非「不存在」,时间线缺口列反证
- **时间戳/日志反取证**:现象——攻击者伪造时间戳/删除日志使时间线错位;原因——主动混淆;对策——多时间来源交叉(文件时间/日志/流量时间),标注可信度
- **脱敏红线**:现象——报告中出现真实受害者/组织身份;原因——复制原始情报未处理;对策——报告前逐项检查(红线强制)
- **报告口径外泄**:现象——内部结论被当作对外声明引用;原因——口径不分层;对策——内部报告与对外摘要分开版本,对外摘要只保留分级与证据概览
- **推理链不可复核**:现象——结论无法回溯到证据;原因——假设与中间判断未记录;对策——每步假设/证据/分级全程存档(路径+时间),报告附证据索引
- 场景分支、证据分级表与更多反例见 [[decision-tree]] / [[gotchas]]
Ships with 2 supporting files:
- references/decision-tree.md
- references/gotchas.md
Mirrored from the author's public source. Install counts from the open skills registry.