关于 threat-detection
threat-detection 是用于主动威胁狩猎的安全技能,面向分析安全遥测并寻找自动防护未发现活动的团队。它结合假设评分、IOC 扫描和统计异常检测,帮助确定调查优先级。
主要功能
- 01为狩猎假设评分
- 02根据 IOC 生成扫描目标
- 03识别过期 IOC
- 04基于统计基线检测异常
- 05按 MITRE ATT&CK 信号排序
适用场景
- 01根据新威胁情报启动狩猎
- 02扫描日志中的 IOC
- 03调查偏离基线的实体行为
- 04安排周期性异常检测
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alirezarezvani/ claude-skills --skill threat-detection安装后在 Claude Code 中输入/threat-detection确认已加载。
附带文件references/hunt-playbooks.mdscripts/threat_signal_analyzer.py
详细介绍
威胁检测
威胁检测技能用于通过假设驱动的狩猎、IOC 分析和行为异常检测,主动发现攻击者活动。这不是事件响应(参见 incident-response)或红队行动(参见 red-team),而是为了发现已逃过自动化控制的威胁。
目录
概述
本技能的作用
本技能为主动威胁检测提供方法论和工具,通过结构化的狩猎假设、IOC 分析和统计异常检测,在告警触发之前发现攻击者活动。
与其他安全技能的区别
| 技能 | 关注点 | 方式 |
|---|---|---|
| threat-detection(本技能) | 发现隐藏威胁 | 主动——在告警前狩猎 |
| incident-response | 正在发生的事件 | 被动——遏制并调查已declared的事件 |
| red-team | 攻击模拟 | 进攻性——从攻击者视角测试防御 |
| cloud-security | 云配置错误 | 态势——IAM、S3、网络暴露 |
前提条件
需要具备 SIEM/EDR 遥测数据、端点日志和网络流量数据的读取权限。IOC 情报源须在 30 天内更新,以避免误报。狩猎假设在执行前必须结合环境范围进行界定。
威胁信号分析器
threat_signal_analyzer.py 工具支持三种模式:hunt(假设评分)、ioc(扫描生成)和 anomaly(统计检测)。
# Hunt mode: score a hypothesis against MITRE ATT&CK coverage
python3 scripts/threat_signal_analyzer.py --mode hunt \
--hypothesis "Lateral movement via PtH using compromised service account" \
--actor-relevance 3 --control-gap 2 --data-availability 2 --json
# IOC mode: generate sweep targets from an IOC feed file
python3 scripts/threat_signal_analyzer.py --mode ioc \
--ioc-file iocs.json --json
# Anomaly mode: detect statistical outliers in telemetry events
python3 scripts/threat_signal_analyzer.py --mode anomaly \
--events-file telemetry.json \
--baseline-mean 100 --baseline-std 25 --json
# List all supported MITRE ATT&CK techniques
python3 scripts/threat_signal_analyzer.py --list-techniques
IOC 文件格式
{
"ips": ["1.2.3.4", "5.6.7.8"],
"domains": ["malicious.example.com"],
"hashes": ["abc123def456..."]
}
遥测事件文件格式
[
{"timestamp": "2024-01-15T14:32:00Z", "entity": "host-01", "action": "dns_query", "volume": 450},
{"timestamp": "2024-01-15T14:33:00Z", "entity": "host-02", "action": "dns_query", "volume": 95}
]
退出码
| 退出码 | 含义 |
|---|---|
| 0 | 未发现高优先级问题 |
| 1 | 检测到中等优先级信号 |
| 2 | 确认的高优先级发现 |
威胁狩猎方法论
结构化威胁狩猎遵循五步循环:假设 → 数据源识别 → 查询执行 → 发现分诊 → 反馈给检测工程。
假设评分
| 因素 | 权重 | 说明 |
|---|---|---|
| 攻击者相关性 | ×3 | 该 TTP 与你所在行业已知威胁攻击者的匹配程度如何? |
| 控制缺口 | ×2 | 你现有的多少控制措施会漏检该行为? |
| 数据可用性 | ×1 | 你是否拥有检验该假设所需的遥测数据? |
优先级评分 = (攻击者相关性 × 3) + (控制缺口 × 2) + (数据可用性 × 1)
按战术划分的高价值狩猎假设
| 假设 | MITRE ID | 数据源 | 优先信号 |
|---|---|---|---|
| 通过远程执行进行 WMI 横向移动 | T1047 | WMI 日志、EDR 进程遥测 | 由 WINRM 派生的 WMI 进程、异常的父子进程链 |
| 用于防御规避的 LOLBin 执行 | T1218 | 进程创建、命令行参数 | certutil.exe、regsvr32.exe、mshta.exe 伴随网络活动 |
| 使用抖动较大间隔的信标式 C2 | T1071.001 | 代理日志、DNS 日志 | 规律间隔的外联连接,抖动 ±10% |
| 哈希传递横向移动 | T1550.002 | Windows 安全事件 4624 类型 3 | 来自异常源主机、针对管理共享的 NTLM 认证 |
| LSASS 内存访问 | T1003.001 | EDR 内存访问事件 | 非系统进程对 lsass.exe 调用 OpenProcess |
| Kerberoasting | T1558.003 | Windows 事件 4769 | 针对服务账户的大量 TGS 请求 |
| 计划任务持久化 | T1053.005 | Sysmon 事件 1/11、Windows 4698 | 在非标准目录中创建的计划任务 |
IOC 分析
IOC 分析用于判断指标是否仍然有效、将其映射到所需的扫描目标,并过滤会产生误报的陈旧数据。
IOC 类型与扫描优先级
| IOC 类型 | 陈旧阈值 | 扫描目标 | MITRE 覆盖 |
|---|---|---|---|
| IP 地址 | 30 天 | 防火墙日志、NetFlow、代理日志 | T1071, T1105 |
| 域名 | 30 天 | DNS 解析器日志、代理日志 | T1568, T1583 |
| 文件哈希 | 90 天 | EDR 文件创建记录、AV 扫描日志 | T1105, T1027 |
| URL | 14 天 | 代理访问日志、浏览器历史记录 | T1566.002 |
| 互斥体名称 | 180 天 | EDR 运行时工件 | T1055 |
IOC 陈旧性处理
超过阈值的 IOC 会被标记为 stale,并排除在扫描目标生成之外。对陈旧 IOC 执行扫描会抬高误报率,并降低 SOC 的可信度。每个狩猎周期开始前,请从威胁情报平台(MISP、OpenCTI、商业威胁情报)刷新 IOC 数据源。
异常检测
统计异常检测在不依赖已知恶意特征的情况下,识别偏离既定基线的行为。
Z 分数阈值
| Z 分数 | 分类 | 响应 |
|---|---|---|
| < 2.0 | 正常 | 无需采取行动 |
| 2.0–2.9 | 轻度异常 | 记录并监控,提高采样频率 |
| ≥ 3.0 | 严重异常 | 升级给狩猎分析师,调查该实体 |
基线要求
有效的异常检测至少需要 14 天的历史遥测数据来建立有效基线。以下情况发生后必须重新计算基线:
- 安全事件(事件后行为发生变化)
- 重大基础设施变更(云迁移、新的 SaaS 部署)
- 季节性使用模式变化(季度末、节假日期间)
高价值异常监测目标
| 实体类型 | 指标 | 异常特征 |
|---|---|---|
| DNS 解析器 | 每台主机每小时查询数 | 信标通信、隧道、DGA |
| 终端 | 每天唯一进程执行数 | 恶意软件安装、LOLBin 滥用 |
| 服务账户 | 每小时认证事件数 | 凭据填充、横向移动 |
| 邮件网关 | 每小时附件类型数 | 钓鱼活动激增 |
| 云 IAM | 每个身份每小时 API 调用数 | 凭据泄露、数据外泄 |
MITRE ATT&CK 信号优先级排序
每个狩猎假设都会映射到一个或多个 ATT&CK 技术。在您的环境中拥有多个已确认信号的技术,优先级更高。
战术覆盖矩阵
| 战术 | 关键技术 | 主要数据源 |
|---|---|---|
| 初始访问 | T1190, T1566, T1078 | Web 访问日志、邮件网关、认证日志 |
| 执行 | T1059, T1047, T1218 | 进程创建、命令行、脚本执行 |
| 持久化 | T1053, T1543, T1098 | 计划任务、服务、账户变更 |
| 防御规避 | T1027, T1562, T1070 | 进程镂空、日志清除、编码 |
| 凭据访问 | T1003, T1558, T1110 | LSASS、Kerberos、认证失败 |
| 横向移动 | T1550, T1021, T1534 | NTLM 认证、远程服务、内部鱼叉式网络钓鱼 |
| 收集 | T1074, T1560, T1114 | 暂存目录、归档文件创建、邮件访问 |
| 数据外泄 | T1048, T1041, T1567 | 异常出站流量、DNS 隧道、云存储 |
| 命令与控制 | T1071, T1572, T1568 | 信标通信、协议隧道、DNS C2 |
诱饵与蜜罐集成
诱饵资产可产生高保真告警。任何与蜜罐的交互都是明确信号,需要进行调查。
欺骗资产类型与部署
| 资产类型 | 部署位置 | 信号 | ATT&CK 技术 |
|---|---|---|---|
| 密码保险库中的蜜罐凭据 | 保险库密钥存储 | 凭据访问尝试 | T1555 |
| 蜜令牌(伪造的 AWS 访问密钥) | Git 仓库、S3 对象 | 侦察或数据外泄 | T1552.004 |
| 蜜文件(命名为 passwords.xlsx) | 文件共享、终端 | 收集暂存 | T1074 |
| 蜜账户(休眠的 AD 用户) | Active Directory | 横向移动跳板 | T1078.002 |
| 蜜罐网络服务 | DMZ、扁平网络分段 | 网络扫描、服务利用 | T1046、T1190 |
蜜罐告警会绕过标准评分流程,任何命中在被证明无误之前都自动视为 SEV2。
工作流
工作流 1:快速狩猎(30 分钟)
用于响应新的威胁情报报告或 CVE 告警:
# 1. Score hypothesis against environment context
python3 scripts/threat_signal_analyzer.py --mode hunt \
--hypothesis "Exploitation of CVE-YYYY-NNNNN in Apache" \
--actor-relevance 2 --control-gap 3 --data-availability 2 --json
# 2. Build IOC sweep list from threat intel
echo '{"ips": ["1.2.3.4"], "domains": ["malicious.tld"], "hashes": []}' > iocs.json
python3 scripts/threat_signal_analyzer.py --mode ioc --ioc-file iocs.json --json
# 3. Check for anomalies in web server telemetry from last 24h
python3 scripts/threat_signal_analyzer.py --mode anomaly \
--events-file web_events_24h.json --baseline-mean 80 --baseline-std 20 --json
决策:若狩猎优先级 ≥ 7,或任何 IOC 扫描命中,则升级为完整狩猎。
工作流 2:完整威胁狩猎(多日)
第 1 天 — 假设生成:
- 审查威胁情报源中与行业相关的 TTP
- 将过去 30 天的安全告警映射到 ATT&CK 战术,以识别缺口
- 使用 threat_signal_analyzer.py 狩猎模式对前 5 个假设评分
- 按分数排序,从最高分开始
第 2 天 — 数据收集与查询执行:
- 从 SIEM 拉取相关遥测数据(时间范围:过去 14 天)
- 对实体基线运行异常检测
- 对过去 30 天内更新的所有情报源执行 IOC 扫描
- 查阅
references/hunt-playbooks.md中的狩猎手册
第 3 天 — 分诊与报告:
- 对所有异常发现进行分诊,确认或排除
- 将确认的活动升级给事件响应团队
- 根据狩猎发现记录新的检测规则
- 将误报 IOC 提交回威胁情报提供方
工作流 3:持续监控(自动化)
以 6 小时为周期,针对关键实体基线配置定期异常检测:
# Run as cron job every 6 hours — auto-escalate on exit code 2
python3 scripts/threat_signal_analyzer.py --mode anomaly \
--events-file /var/log/telemetry/events_6h.json \
--baseline-mean "${BASELINE_MEAN}" \
--baseline-std "${BASELINE_STD}" \
--json > /var/log/threat-detection/$(date +%Y%m%d_%H%M%S).json
# Alert on exit code 2 (hard anomaly)
if [ $? -eq 2 ]; then
send_alert "Hard anomaly detected — threat_signal_analyzer"
fi
反模式
- 没有假设就开展狩猎 — 在所有遥测数据上运行宽泛查询,只会产生噪声而非信号。每次狩猎都必须从一个可检验、限定于一到两个 ATT&CK 技术的假设开始。
- 使用过期 IOC — 超过 30 天的 IOC 会产生误报,使分析师习惯性忽略告警。扫描前务必检查 IOC 的新鲜度,并将过期指标排除在自动化扫描之外。
- 跳过基线建立 — 没有有效基线的异常检测会在正常的高流量日产生告警。在对任何实体类型启用统计告警前,需要至少 14 天以上的基线数据。
- 只狩猎已知技术 — 只针对已记录的 ATT&CK 技术进行狩猎,会遗漏新型对手行为。应定期加入开放式异常分析,以发现未知 TTP。
- 未将反馈闭环到检测工程 — 证实恶意行为的狩猎发现必须产出新的检测规则。不能提升检测覆盖率的狩猎没有长期价值。
- 把每个异常都当作已确认威胁 — 高 z 分数表示偏离基线,并不等于确认的恶意行为。所有异常在升级之前都需要人工分诊,以确认或排除。
- 忽视蜜罐告警 — 与欺骗资产的任何交互都是高保真信号。把蜜罐告警当作噪声,会让整个欺骗投入失去价值。
交叉引用
| Skill | 关系 |
|---|---|
| incident-response | 威胁狩猎中确认的威胁会升级至 incident-response 进行分诊和遏制 |
| red-team | 红队演练会生成贴近实际的 TTP,用于指导狩猎假设的优先级排序 |
| cloud-security | 云安全态势发现的问题(如公开的 S3、IAM 通配符)会成为针对数据外泄 TTP 的狩猎目标 |
| security-pen-testing | 渗透测试发现的问题会识别出攻击面,威胁狩猎应在修复后持续监控这些攻击面 |