reverse-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
120
vendor-new/rev-skills/.claude/skills/re-hunting/SKILL.md
Normal file
120
vendor-new/rev-skills/.claude/skills/re-hunting/SKILL.md
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
name: re-hunting
|
||||
type: atomic
|
||||
description: >
|
||||
威胁狩猎方法论:假设驱动、遥测源选择、基线对比与验证闭环。
|
||||
触发词:威胁狩猎、狩猎、hunting、假设驱动、遥测分析、异常检测。
|
||||
capabilities: [threat-intel]
|
||||
---
|
||||
|
||||
# 威胁狩猎
|
||||
|
||||
## 何时使用 / 何时不用
|
||||
|
||||
- 用:主动狩猎请求(「环境里有没有 X 的活动」)、假设驱动的环境排查、威胁情报落地(情报线索转环境内搜索)
|
||||
- 用:基线驱动的异常发现(无特定情报时先建基线再找偏离)
|
||||
- 用:事件后扩大排查(一次确认命中 → 同 TTP/同基础设施再查一遍,找漏网)
|
||||
- 用:告警驱动追溯(一次告警 → 反向狩猎同类未告警行为,找漏网)
|
||||
- 不用:纯合规巡检(无假设的定期报表是运营不是狩猎,两者流程不同)
|
||||
- 不用:已知样本分析([[re-behavior]]);IOC 查询([[re-ti]]);单点证据深挖(各域技能)
|
||||
- 不用:应急响应单点处置(狩猎是主动面,应急是被动触发,结论可互哺但流程不同)
|
||||
- 不用:无遥测来源时(数据源缺失无法支撑假设验证,先补齐采集再狩猎,见 [[gotchas]])
|
||||
- 不用:设备/主机级单点排查(那是各域技能的事,狩猎面向环境整体)
|
||||
|
||||
## 工具准备
|
||||
|
||||
### 日志分析工具(通用)
|
||||
|
||||
- 多平台: jq / grep / awk(各发行版自带或 `apt install jq` / `brew install jq`)
|
||||
- 验证: `jq --version`
|
||||
- python3(基线统计/聚类脚本):安装见 [[re-python]] 工具准备
|
||||
- 快速频次统计:`grep -E` + `sort | uniq -c`(基线初版可用)
|
||||
|
||||
### 遥测查询(按环境)
|
||||
|
||||
- SIEM/EDR 查询接口(按部署环境给查询指引,工具不绑定)
|
||||
- 本地日志: `journalctl`(Linux,结构化过滤:`journalctl -o json --since "24 hours ago" | jq ...`);PowerShell `Get-WinEvent`(Windows,如 `Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 100`)
|
||||
- 网络遥测: 流量/防火墙日志(深挖见 [[re-netcap]])
|
||||
- Windows 常用事件 ID(按环境实际启用情况核对):4624/4625 登录成功/失败、4688 进程创建、Sysmon 1 进程创建、Sysmon 11 文件创建
|
||||
|
||||
### ATT&CK 导航(假设对齐参考)
|
||||
|
||||
- 网页工具(公开访问);本地可下载 Navigator 层文件;规则匹配格式可参考 Sigma(公开规则格式,按环境适配)
|
||||
- 覆盖对照:结束后用 Navigator 层标记已覆盖技术,产出覆盖率声明(与盲区对照)
|
||||
|
||||
## 操作步骤
|
||||
|
||||
按顺序执行;假设明确再动手(坑 5)。每步产物存档(路径 + sha256,见 [[re-triage]])。
|
||||
|
||||
1. **狩猎假设生成**:
|
||||
- 输入:威胁情报([[re-ti]])、已知攻击模式([[re-behavior]] 经验)、环境特征(暴露面/业务/历史事件)、红队/演练报告(已知成功路径优先查)
|
||||
- 假设句式:「攻击者可能通过 X 技术在环境内做了 Y」——X 对齐 ATT&CK 技术,Y 是可观测的遥测痕迹
|
||||
- 可证伪性检查:每个假设写得出「若为假应看到什么」(反证形态),写不出的不查
|
||||
- 情报可检测性映射:情报的每条 IOC/TTP 都要回答「在环境里对应哪个遥测痕迹」;对不上的列为盲区假设
|
||||
- 优先级:影响 × 可能性 × 可检测性(三者都低的不值得查)
|
||||
- 假设数量控制:单轮 3-5 个高优先级假设(过多则无法深入验证)
|
||||
- 假设卡片:编号/句式/来源情报/遥测痕迹/反证形态/优先级
|
||||
- 产出:假设列表(每个假设 = 可证伪的搜索目标;按技术族覆盖多假设,避免单点)
|
||||
|
||||
2. **遥测源选择**:
|
||||
- 按假设选数据源:进程行为 → EDR/进程日志(Windows 4688/Sysmon 1);网络 → 流量/防火墙日志;登录 → 认证日志(4624/4625);文件 → 文件系统监控(Sysmon 11)
|
||||
- 数据源缺失 → 标注盲区(结论的有效性边界,见 [[gotchas]] 盲区坑)
|
||||
- 同一假设有多个数据源时先查覆盖最全的,再交叉验证
|
||||
- 先验证遥测管道健康(收一条已知测试事件),再信「无告警」
|
||||
- 时间归一:各数据源时间戳统一为 UTC 与同格式(ISO8601),跨源比较前先做
|
||||
- 数据源映射示例(按环境核对实际事件 ID):
|
||||
|
||||
| 假设侧重 | 数据源 | 事件/日志 | 缺失时 |
|
||||
|---|---|---|---|
|
||||
| 进程/执行 | EDR、进程日志 | 4688、Sysmon 1 | 无法验证执行链 |
|
||||
| 网络外联 | 流量/防火墙/代理 | 连接日志/NetFlow | 无法验证外联行为 |
|
||||
| 登录/凭据 | 认证日志 | 4624/4625 | 无法验证撞库/横向 |
|
||||
| 文件落地 | 文件系统审计 | Sysmon 11 | 无法验证投放 |
|
||||
|
||||
3. **基线 vs 异常**:
|
||||
- 基线:正常窗口的统计分布(频率/来源/目标特征)——窗口选已知干净时段且覆盖业务周期(见坑 1)
|
||||
- 统计方法:频率分布/百分位基线/环比突变(与上一窗口对比);用 python3 脚本做分布统计
|
||||
- 异常检测:偏离基线的行为(新进程链、非常规时段、异常目标)、规则匹配(已知模式)
|
||||
- 启发式异常示例:首次出现的进程/域名、非工作时间登录、罕见端口外联
|
||||
- 聚类:异常条目按特征聚类(进程名/路径/目标域名/时间窗),减少人工逐个审查
|
||||
- 聚类产出:异常组清单(每组:特征/数量/时间范围/关联假设编号)
|
||||
- 基线产物:按实体的频率分布表(top N 进程/域名/登录源)+ 阈值建议
|
||||
|
||||
4. **验证闭环**:
|
||||
- 命中确认:异常 → 深挖([[re-behavior]] 行为分析、[[re-variant]] 样本关联、[[re-netcap]] 网络侧核对)
|
||||
- 误报排除:白名单核对、环境解释(合法变更/维护窗口)、与业务方确认
|
||||
- 排除后留档:误报判定记录(为什么排除),复查不重复分析
|
||||
- 白名单是动态资产:确认合法后入白名单(附原因),环境变化定期复查
|
||||
- 证据存档:按 [[re-analyze/analysis-contract]] 复核格式(结论/证据/置信度)
|
||||
- 闭环输出:确认命中 → 事件报告(含 IOC 沉淀,可转 [[re-ioc]]);未命中 → 假设归档(可复跑,标注盲区)
|
||||
- 命中后扩大复查:同 TTP/同源再扫一遍(狩猎是迭代不是一次性)
|
||||
- 复盘产出:假设命中率统计(下轮优先级依据)
|
||||
- 交付结构:假设清单(含盲区)→ 命中列表(分级)→ 证据包路径 → 建议(规则/采集补强)
|
||||
- 判定分级与终止条件见 [[decision-tree]](确认/可疑/未证实/未命中四级)
|
||||
|
||||
## 跨域联合
|
||||
|
||||
- [[re-forensics]] 网关:本技能归属
|
||||
- [[re-ti]]:情报输入(假设来源)
|
||||
- [[re-behavior]]:命中深挖(行为证据)
|
||||
- [[re-variant]]:样本关联
|
||||
- [[re-netcap]]:网络遥测深挖
|
||||
- [[re-ioc]]:命中指标沉淀(YARA/规则)
|
||||
- [[re-triage]]:产物存档规范(路径 + sha256)
|
||||
- [[re-analyze/analysis-contract]]:结论按复核格式交付
|
||||
|
||||
## 常见坑与陷阱
|
||||
|
||||
- **基线污染**:现象——异常被视为正常;原因——环境本身已被攻陷(基线含恶意活动);对策——基线窗口选择在已知干净时段,标注基线假设
|
||||
- **遥测缺失盲区**:现象——无异常结论但环境有活动;原因——关键数据源未采集;对策——步骤 2 显式标注盲区,结论限定「在已采集遥测内」
|
||||
- **误报疲劳**:现象——大量命中无人深挖;原因——规则过宽/阈值过低;对策——先聚类再审查,阈值按基线校准
|
||||
- **假设过窄**:现象——只查了一个技术;原因——假设单一;对策——按 ATT&CK 技术族生成多假设(覆盖率声明)
|
||||
- **结论过强**:现象——「环境干净」声明;原因——未标注盲区与假设边界;对策——结论带限定(见坑 2)
|
||||
- **确认偏误**:现象——只找支持假设的证据,忽略反证;原因——先有结论再找证据;对策——每个假设列「若为假应看到什么」,反证同样记录
|
||||
- **时钟偏差/时区**:现象——事件序列对不上;原因——端侧时钟未校准;对策——先归一 UTC,标注时间源
|
||||
- **无告警 ≠ 无活动**:现象——规则匹配全空即宣布安全;原因——监控盲区/规则逃逸/告警系统降级;对策——「已采集+已覆盖技术」与「未覆盖」分开陈述
|
||||
- **只查一遍不复查**:现象——命中处理后不再扩大范围;原因——把狩猎当一次性任务;对策——命中后按同 TTP/同基础设施再查,迭代两轮
|
||||
- **查询权限不足**:现象——结论带盲区但未标注;原因——只拿到部分数据源权限;对策——列出未授权数据源,结论限定在已授权范围
|
||||
- **基线窗口含维护期**:现象——维护窗口的合法大动作被当异常/污染基线;原因——窗口选择粗糙;对策——基线窗口排除维护期并标注
|
||||
- **命中即定性**:现象——单条日志命中即报事件;原因——未做环境解释;对策——过「环境解释」关再定性(决策树分级表)
|
||||
- 任务类型选择、命中分级与归档规则见 [[decision-tree]] / [[gotchas]]
|
||||
@@ -0,0 +1,66 @@
|
||||
# 狩猎决策树与证据分级
|
||||
|
||||
狩猎是「假设 → 验证 → 归档」的闭环,不是日志翻找。本文档与 SKILL.md 步骤 1-4 配套使用。
|
||||
|
||||
## 任务类型决策树
|
||||
|
||||
```
|
||||
狩猎请求
|
||||
├─ 有具体情报线索(新威胁/新技术)→ 假设驱动(情报 → 技术 → 遥测 → 验证)
|
||||
├─ 无线索,想找未知 → 基线驱动(先建基线 → 找偏离 → 解释偏离)
|
||||
└─ 已知环境 + 已知技术清单 → 模型辅助(规则匹配 / ATT&CK 覆盖审查)
|
||||
```
|
||||
|
||||
## 假设生成分支
|
||||
|
||||
```
|
||||
假设输入源
|
||||
├─ 外部情报([[re-ti]])→ 提取技术 X → 映射环境内遥测痕迹 Y
|
||||
├─ 内部事件复盘 → 找同类未发现(假设「还有更多」)
|
||||
└─ 环境特征(暴露面/新技术上线)→ 针对新增攻击面生成
|
||||
|
||||
假设句式必须可证伪:X 技术 → Y 痕迹 → 验证方法 → 反证形态
|
||||
(写不出反证形态的假设不查,见 [[gotchas]] 认知偏差坑)
|
||||
```
|
||||
|
||||
## 遥测可用性分支
|
||||
|
||||
```
|
||||
遥测盘点
|
||||
├─ EDR/进程日志 → 进程链/命令行假设(4688、Sysmon 1)
|
||||
├─ 认证日志 → 登录假设(4624/4625、域认证)
|
||||
├─ 网络流量 → 外联/协议假设([[re-netcap]] 深挖)
|
||||
├─ 文件系统监控 → 文件落地假设(Sysmon 11)
|
||||
└─ 都缺 → 不进入狩猎,输出「采集缺口」清单(见 [[gotchas]] 盲区坑)
|
||||
```
|
||||
|
||||
## 命中判定分级表
|
||||
|
||||
| 级别 | 判据 | 处置 |
|
||||
|---|---|---|
|
||||
| 确认命中 | 多源证据一致 + 恶意特征明确(行为链完整) | 事件报告 + IOC 沉淀([[re-ioc]]) |
|
||||
| 可疑 | 单源异常 + 无法用环境解释 | 深挖([[re-behavior]])后复判;记录但不下结论 |
|
||||
| 未证实 | 异常但可被合法场景解释 | 白名单标注,保留记录(环境变化后可能转可疑) |
|
||||
| 未命中 | 无偏离或偏离全解释 | 假设归档(可复跑),标注盲区 |
|
||||
|
||||
## 验证闭环流程(组合套路)
|
||||
|
||||
1. 命中 → 拉原始证据(时间窗口前后 ±24h 上下文)
|
||||
2. 环境解释:问业务方/查变更记录/对照维护窗口
|
||||
3. 恶意特征核对(行为链、TTP 对齐)
|
||||
4. 定级(上表)→ 处置
|
||||
5. 存档:证据路径 + 结论 + 置信度([[re-analyze/analysis-contract]] 格式)
|
||||
6. 复盘:假设是否可复用(转规则 / 转 [[re-ioc]] 沉淀)
|
||||
|
||||
## 实现教训(内化)
|
||||
|
||||
- 假设的可证伪性是第一质量指标:写不出「若为假应看到什么」的假设不查
|
||||
- 盲区与结论绑定:交付时永远带「在已采集遥测内」限定
|
||||
- 异常先解释再定性:多数异常是环境噪声,确认命中要过「环境解释」关
|
||||
- 归档假设是资产:未命中的假设+查询保留可复跑,下轮狩猎直接复用
|
||||
|
||||
## 使用注意
|
||||
|
||||
- 全部在授权范围内执行(环境/数据源/范围确认先行)
|
||||
- 结论按 [[re-analyze/analysis-contract]] 交付;结论带置信度与盲区
|
||||
- 涉及样本处置转 [[re-behavior]] / [[re-malware]] 流程,本技能不展开样本分析
|
||||
@@ -0,0 +1,34 @@
|
||||
# 狩猎方法论坑与边界
|
||||
|
||||
## 假设与认知偏差坑
|
||||
|
||||
- **确认偏误**:先有了「某活动存在」的结论,检索时只收集支持证据——每个假设强制列「若为假应看到什么」,反证与支持证据同等记录
|
||||
- **假设过窄/过宽**:只查一个技术漏掉家族;或假设太泛(「攻击者可能做了坏事」)无法检索——按 ATT&CK 技术族展开,每假设限定到可观测痕迹
|
||||
- **先狩猎后假设**:没有假设直接翻日志找「奇怪的」,结果被噪声淹没、无法判定——狩猎是验证不是观光,假设先行
|
||||
- **结论外推**:把「未发现 X」说成「环境安全」——未发现 ≠ 不存在(遥测盲区、规则逃逸、样本不落地)
|
||||
|
||||
## 基线构建坑
|
||||
|
||||
- **基线污染**:环境早已被攻陷时,恶意活动混入「正常」分布——基线窗口选已知干净时段;标注基线假设;新环境先声明「无基线」
|
||||
- **窗口代表性**:只取工作日或只取白天,节假日/夜间行为成异常——基线覆盖业务周期(周/月/季节),标注采样窗口
|
||||
- **噪声与阈值**:阈值过低 → 误报疲劳;过高 → 漏报——按基线分布(百分位)校准,先宽后严两轮
|
||||
|
||||
## 遥测与数据坑
|
||||
|
||||
- **盲区沉默**:没有采集的数据源不会报异常——交付时显式列出「已采集」与「未采集」,结论限定在已采集范围
|
||||
- **时钟偏差/时区**:端侧时钟未校准导致事件序列错位(先归一 UTC);NTP 不可达的隔离网段尤其常见
|
||||
- **日志截断/轮转**:日志保留期短导致回溯窗口有限——标注可查窗口;对长期狩猎需求提出采集留存建议
|
||||
- **规则逃逸 ≠ 干净**:攻击者会针对监控规则变体绕过——规则命中率低时要补充基线异常检测,不能只信规则
|
||||
- **告警系统被关闭/降级**:先验证遥测管道本身健康(收一条已知测试事件),再信「无告警」
|
||||
|
||||
## 结论表述边界
|
||||
|
||||
- 概率化表述:确认/可疑/未证实/未命中,禁用「肯定/绝对干净」类断言(措辞规范见 [[decision-tree]] 分级表)
|
||||
- 限定语必备:「在已采集遥测内」「截至查询时间」「基于当前基线」
|
||||
- 反证同样归档:支持证据与反证都进报告,未决项列出原因
|
||||
|
||||
## 使用注意
|
||||
|
||||
- 授权与范围确认先行(环境、数据源、时间窗)
|
||||
- 产物存档(查询、证据、结论,路径 + 时间 + sha256,见 [[re-triage]]);结论按 [[re-analyze/analysis-contract]] 交付
|
||||
- 命中样本深挖转 [[re-behavior]];指标沉淀转 [[re-ioc]]
|
||||
Reference in New Issue
Block a user