用途
该技能面向主动式对手检测:假设攻击者已经潜入但尚未触发告警,通过假设驱动的搜索在 SIEM、EDR 和日志中发现其痕迹。它与事件分诊(被动响应已触发的告警)和 SIEM 检测工程(编写规则让未来告警触发)不同,属于主动层。
狩猎必须是假设驱动的,而非漫无目的地浏览。“在 SIEM 里随便看看”不是狩猎;“检查 Office 进程启动 PowerShell(T1059.001)的特定模式”才是。
方法论:PEAK 框架
采用 Splunk SURGe 提出的 PEAK(Prepare、Execute、Act、Knowledge)框架。
第一步:准备
形成假设。强假设具备三个属性:具体(指明技术、日志源和预期痕迹)、可测试(描述何种证据可确认或否定)、有边界(有明确的时间窗口和范围)。
坏假设:“在 SIEM 中查找异常”。 好假设:“过去 30 天内,任何服务账户都不应使用 -encodedCommand 标志运行交互式 PowerShell(T1059.001 + T1027)。搜索 Sysmon 事件 1,父进程为服务账户启动的计划任务,子进程为 powershell.exe,命令行包含 -enc 或 -encodedcommand。”
假设来源按产出排序:近期事件(高产出、低投入)、breach-patterns 技能目录(高产出、低投入)、尚无检测的 MITRE ATT&CK 技术(中产出、中投入)、威胁情报报告(中产出、中投入)、异常(“这个数字上升了——为什么”,低产出、低投入)。
第二步:执行
三种执行模式:
模式 A——从指标转向。从具体 IOC(IP、哈希、域名)出发,查找接触过它的主机或用户。示例(Sentinel):
union *
| where TimeGenerated > ago(90d)
| where contains("198.51.100.42")
| project TimeGenerated, Type, Computer, _ResourceId
模式 B——从技术转向。从 ATT&CK 技术出发,查找执行该技术的主机。示例(Splunk,T1547.001 注册表 Run 键持久化):
index=sysmon EventCode=13
TargetObject="*\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\*"
| stats values(Details) by Computer, User
| where len(values(Details)) > 1
模式 C——异常狩猎。建立基线,查找离群值。示例(Sentinel,服务账户从新地理位置认证):
SigninLogs
| where TimeGenerated > ago(30d)
| where UserType == "Service"
| summarize Countries = make_set(Location) by UserPrincipalName
| where array_length(Countries) > 1
第三步:行动
每个命中结果有三种可能:确认恶意(立即升级至 incident-triage)、确认良性(记录并继续)、未知/无法确认(深入调查主机痕迹、网络流量、用户访谈)。不要将命中结果留在“未知”状态,要么解决,要么带着有记录的下一步移交。
第四步:知识
狩猎的价值不在单次命中,而在产出的工件:若发现威胁,编写检测规则让未来自动告警;若未发现,记录狩猎过程(查询、范围、时间窗口、结论),避免未来重复;若因日志覆盖缺失导致狩猎困难,记录缺口并创建修复日志摄入的待办项。不产出工件的狩猎没有复利回报。
高产出狩猎目录
持久化:非工作时间创建的计划任务(schtasks.exe /create,Sysmon 事件 1 + Windows 安全事件 4698);Run 键持久化(HKCU...\Run、HKLM...\Run、HKCU...\RunOnce);已知软件安装窗口外的服务安装(事件 7045);WMI 持久化(__EventFilter 和 CommandLineEventConsumer 订阅);macOS 登录项/启动守护进程(/Library/LaunchDaemons/.plist、~/Library/LaunchAgents/.plist);Linux cron/systemd 定时器(/etc/cron.、/etc/systemd/system/.timer、用户 crontab)。
防御规避:带 -EncodedCommand 的 PowerShell(base64 编码脚本 80% 是规避);certutil.exe -decode(用于解码投放载荷的 LOLBin);Sysmon 事件 7(Image loaded)中来自非标准路径的已知恶意 DLL;从 %TEMP%、%APPDATA%、\Users\Public 执行进程;命令行混淆模式(大量 ^、反引号、cmd /c echo y | ...)。
凭据访问:意外进程访问 LSASS(Sysmon 事件 10,TargetImage = lsass.exe 且 SourceImage 不在白名单);procdump.exe 或 comsvcs.dll 使用(进程转储 LOLBin);备份窗口外访问 NTDS.dit;来自新 IP 的 AWS GetSessionToken 或 AssumeRole;高权限应用的 OAuth 同意授权(参见 iam-audit)。
发现:net group "Domain Admins" 或类似枚举命令;高价值 SPN 的 AD 服务票据请求(Kerberoasting 准备,事件 4769 使用 RC4 加密);服务账户运行 whoami /all、quser、nltest /domain_trusts(人类很少运行这些);异常主体的云 API 列举(ListBuckets、ListUsers、DescribeInstances)。
横向移动:WMI 远程执行(Sysmon 事件 1 含 wmic.exe 或 Invoke-WmiMethod);PsExec/远程服务创建模式(事件 7045 随机服务名);到异常主机的远程注册表连接;SSH 密钥复用(一个私钥在短窗口内认证多台主机);跨账户的 AWS/GCP AssumeRole 链。
收集/暂存/外传:单一主体从云存储大量读取(异常 S3/GCS 访问模式);归档创建模式(Compress-Archive、7z.exe、tar、zip 操作用户主目录外的目录);对近期注册域名的 DNS 查询(DNS 外传或 C2 信标解析);到高风险地理位置的出站 TLS;信标模式(固定间隔 ± 抖动连接同一目的地数小时)。
云特定:IAM 凭据外泄模式(异常主体调用 GetCredentialReport、GenerateCredentialReport);异常进程/容器访问 IMDS(非云 SDK 访问 169.254.169.254);CloudTrail/审计日志篡改尝试(StopLogging、DeleteTrail、非日志主体访问日志桶);单一主体短窗口内跨区域创建资源。
身份提供商特定:高权限 OAuth 应用授权(Google Workspace、M365);新设备注册 MFA 方法(攻击者窃取会话后注册自己的 MFA);不可能地理位置登录;服务账户从新客户端/新 IP 认证。
工具
SIEM:Splunk、Sentinel、Elastic、Chronicle、Sumo、Wazuh。EDR:CrowdStrike(RTR)、SentinelOne(deep visibility)、Microsoft Defender(advanced hunting)、Carbon Black。Sysmon:Windows 开源端点日志,输出到 SIEM。osquery:跨平台端点状态 SQL 查询。Velociraptor:开源实时响应与狩猎框架。Zeek:网络元数据流量分析。MITRE ATT&CK Navigator:覆盖可视化。Hunt-Evil:狩猎剧本内容。MaxMind GeoIP:基于 IP 的地理位置查询。
输出格式
# Threat Hunt Report
## Hunt name: [descriptive — e.g., "Office process → encoded PowerShell"]
## Hypothesis: [specific, testable, bounded]
## Date range: [from - to]
## Hunter: [name]
### Methodology
- ATT&CK technique(s): [TXXXX.NNN]
- Data sources queried: [list]
- Query / queries:
[the actual SIEM query]
### Findings
| Hit ID | Host / User / Resource | Outcome | Notes |
|--------|------------------------|---------|-------|
### Conclusion
- [Confirmed malicious / All benign / Inconclusive]
- [Confidence level — Low / Medium / High]
### Artifacts produced
- [ ] Detection rule added (link)
- [ ] Coverage gap documented (link)
- [ ] Negative-result documentation filed (link)
### Recommended follow-up
[Anything that needs deeper investigation, escalation, or future hunts]
适用场景
适用于已授权环境中的主动威胁狩猎,包括:基于近期事件或公开泄露模式构建假设;针对尚无检测的 ATT&CK 技术设计狩猎;利用威胁情报报告中的当前模式;对异常指标进行基线偏离调查。
限制与边界
仅限用户有授权的环境;不得查询用户权限之外的 SIEM/EDR 数据;确认恶意后立即升级至 incident-triage,不要继续狩猎以免惊动对手;实时响应操作(主机隔离、账户禁用)属于事件响应而非狩猎,应升级处理;拒绝使用威胁狩猎技术对员工进行超出 HR/法律授权的监控;负面狩猎结果是有价值的证据而非失败,应记录并给予认可。
参考
PEAK 威胁狩猎框架(Splunk SURGe);TaHiTI(整合威胁情报的目标狩猎,荷兰模型);MITRE ATT&CK;“The ThreatHunter Playbook”(Cyb3rWard0g);Sigma 规则仓库;“Practical Threat Intelligence and Data-Driven Threat Hunting”(Valentina Costa-Gazcón);David Bianco 的“Pyramid of Pain”;SANS FOR508 / FOR578 课程材料;Velociraptor 社区狩猎内容。