re-attribution

Identifies who carried out a cyberattack by mapping their tools, infrastructure, and methods.

Installation
Run `npx skills add "https://github.com/dslsdzc/rev-skills" --skill "re-attribution"` to install this skill, then follow its SKILL.md instructions for my next request.

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.

The systems behind these skills get built for partners every week.

Partner with us