reverse-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok609hecl1pq6qi
2026-10-20 02:17:15 +03:00
commit da24c2bd20
2227 changed files with 443931 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
# 归因决策树与证据分级
归因是推理链不是查询:每一步都要能回答「这条证据支持/反对哪个假设,强度多少」。本文档与 SKILL.md 步骤 1-4 配套使用。
## 场景决策树(输入 → 分支)
```
输入请求
├─ 单 IOC / 单个样本背景 → [[re-ti]](查询即可,不进入归因)
├─ 行为判定「在干什么」→ [[re-behavior]]
├─ 「是不是同一伙」多事件串并 → 归因流程(钻石模型定位)
└─ 「谁干的」组织级归因 → 归因流程 + 置信度分级
```
归因流程(钻石模型):
```
四角信息盘点
├─ 仅 1 角(只有样本或只有域名)→ 不出归因结论,输出「情报线索」级
├─ ≥2 角且无独立证据交叉 → 「关联活动」声明(低置信度)
├─ 2 类独立证据交叉 → 「疑似同一活动」(中置信度)
└─ ≥3 类 + 时间线一致 + 无反证 → 「高度疑似归属」(高置信度)
```
证据收集子分支(每角都走):
```
证据类型 → 区分「控制」与「共享」
├─ 控制面证据(注册邮箱/证书私钥操作/唯一配置/自研工具)→ 可计强证据
├─ 共享面证据(托管商/跳板/公共 C2 框架/公开工具)→ 仅弱证据,不可独立归因
└─ 时间线(活动窗口/时区校准后对齐)→ 只能佐证,不能独立定案
```
## 分支逻辑说明
- **入口分流**:归因请求先问「有没有两角以上」,不足则退回情报级输出(单 IOC 查询归 [[re-ti]]),这是防止「一个域名归一个组织」类错误声明的第一道闸
- **证据独立性**:两条证据来自同一条数据链(如同一份 whois 记录里的邮箱与注册者)算一类证据,不交叉;交叉 = 不同来源(whois + 证书透明 + 行为分析)
- **强证据门槛**:唯一性特征(罕见字符串、自研工具、唯一注册信息)才可作强证据;「共用 C2 框架」等商品化特征一律弱证据
- **时间线只作佐证**:时间窗口重叠说明「可能同时活跃」,不说明同一归属(攻击者会复用时段);时间线缺口必须显式标注
## 证据分级表
| 证据类型 | 弱 | 中 | 强 | 归因意义 |
|---|---|---|---|---|
| 基础设施 | 同托管商/同 C2 框架 | 共用 NS/ASN/证书 | 唯一注册邮箱/私钥/证书链 | 强证据可作核心,弱证据只作旁证 |
| 能力/样本 | 同家族通用 TTP | 代码片段相似 | 唯一字符串/编译特征/自研模块 | 工具是商品化资源,单独不能定案 |
| 行为/TTP | 同大类技术(ATT&CK 一级) | 同技术组合序列 | 罕见流程顺序+参数习惯 | 需要叠加其他角才升档 |
| 时间线 | 活跃时段相近 | 时段重叠+节奏一致 | 事件序列交错(互为前置) | 只能佐证,不能独立定案 |
| 反证 | 一条矛盾证据 | 多条矛盾证据 | 结构性矛盾(能力与声明不符) | 任何等级都要列出反证 |
## 置信度判定流程(组合套路)
1. 把每条证据按上表标档(弱/中/强)
2. 合并同类来源(同一数据链只算一次)
3. 统计独立证据类数(基础设施/能力/行为/时间线)
4. 对照分级:1 类弱 = 低;2 类交叉或 1 类强 = 中;≥3 类 + 无反证 = 高
5. 检查反证:有矛盾证据 → 降一级并写进报告「未决项」
6. 措辞与置信度严格对应(见 [[gotchas]] 声明边界)
## 实现教训(内化)
- 「控制 vs 共享」是第一判断,不是相似度判断——先问这条证据能不能被第三方买到/租到/偷到,再谈强度
- 证据要能复现:每条证据标注来源与查询时间(whois 记录会过期,截图存档)
- 分级结果不是终点:高置信度声明也要写「假设前提」(如「假设该基础设施未被劫持」)
- 归因输出是概率化陈述,报告里禁用绝对化断言
## 使用注意
- 全部在授权范围与脱敏要求内执行(不点名真实组织/受害者,见 SKILL.md 红线)
- 结论按 [[re-analyze/analysis-contract]] 格式交付;对外报告与内部结论分离
- 本技能结论是情报判断,不是司法证据(标准不同,见 [[gotchas]])

View File

@@ -0,0 +1,35 @@
# 归因方法论坑与边界
## 基础设施误归因
- **共享 ≠ 控制**:C2 域名/服务器常被出售、出租、二次利用——「同一 C2 域名」只能说明使用过同一资源,不能说明同一组织;判断标准是注册信息/控制面痕迹(whois 邮箱、证书私钥、管理后台特征),不是 IP 或域名本身
- **被劫持基础设施**:已退役或失守的服务器可能被多个活动方复用;若无法证明控制时间窗,证据只能计弱
- **托管商聚集**:同一机房/托管商聚集大量恶意活动是常态,不能作为关联证据(同 NS/ASN 可作弱证据,且必须叠加其他角)
- **Passive DNS 数据时效**:解析历史可能被缓存/污染,查询时点不同结果不同;取证性结论要标注查询时间与数据源
## 能力/样本证据坑
- **工具是商品化资源**:公开工具、框架、租赁服务任何人都能获得——「使用了某框架/公开工具」不能归因;只有自研/定制特征(独特字符串、私有协议实现细节)有区分度
- **代码相似 ≠ 同源**:抄代码、借用开源项目、代码生成器都会产生相似;相似度阈值要按「唯一性内容占比」校准,不是整体相似度
- **语言/伪装误导**:攻击者会故意使用其他语言/地区的字符串与习惯伪装归属(false flag)——单一语言特征只能作弱证据
- **编译特征变化**:同一团队的构建链会变(编译器/打包方式升级),特征缺失不代表不同源;反过来说特征吻合也可能只是「同一构建工具」而非「同一团队」
## 时间线与反取证
- **时间戳伪造**:文件时间/日志时间可被改写;多时间来源(文件、日志、流量、第三方被动数据)交叉验证
- **时区与时钟偏差**:跨时区/时钟未校准的设备产生的时间要先归一(统一 UTC)再对齐,否则「活动窗口重叠」是假象
- **活动缺口 ≠ 活动结束**:攻击者切换基础设施/隐藏期是常态,时间线缺口要标注「未观察到」而非「不存在」
## 归因声明边界与反例
- **情报归因 ≠ 司法归因**:情报结论(概率化、分级)不满足刑事证据标准(排除合理怀疑、链式保管)——本技能输出是情报判断,移交司法场景要注明局限
- **「无法归因」是合法结论**:证据不足时输出「关联活动」与证据清单,比强行归因更专业;声明「无法判定」并给出原因(缺角/反证/数据盲区)
- **组织命名本身会误导**:公开标签(媒体起的代号)可能与实际归属无关;报告用可检验的描述(时间线+TTP+基础设施特征),少依赖标签
- **反例**:仅凭「同一域名后缀」归因(域名后缀可注册);仅凭「同一样本家族名」归因(家族名是分析人员起的,不是归属证据)
## 使用注意
- 授权与脱敏红线贯穿全程:不点名真实组织/受害者,案例化描述用代号
- 每步产物存档(whois/证书/图输出,路径 + 查询时间 + sha256,见 [[re-triage]])
- 结论按 [[re-analyze/analysis-contract]] 交付;对外口径与内部结论分离
- 证据时效:whois/证书数据会过期,报告标注「截至查询时点」