2019年某凌晨,一家金融公司的安全团队发现攻击者已在内网潜伏47天。所有告警系统静默,日志完整,只是没人问过那个问题:如果我是黑客,会怎么动?

威胁狩猎(Threat Hunting)的悖论在于:你买的工具越贵,越容易陷入"等告警再响应"的惯性。而真正的狩猎者,专门找告警没覆盖的死角。

第一步:先当黑客,再当猎人

打开Splunk或Elastic之前,先关掉屏幕。微软威胁情报团队的安全工程师Sean Metcalf在实战中发现,90%的无效查询源于"先开工具再想查什么"。

他的固定动作是:用15分钟写下一句话假设。不是"找恶意软件",而是"攻击者窃取域管理员后,会如何维持访问权限"。假设越具体,查询越锋利。

Metcalf的模板很朴素:攻击者目标→所需权限→最可能的技术→会留下的痕迹。四步填完,查询语句自然浮现。他曾凭一条假设在零告警环境下定位到利用黄金票据(Golden Ticket)的攻击者,而对方已在内网横移了11天。

假设的质量决定狩猎的上限。工具只决定下限。

第二步:在垃圾堆里找钻石

第二步:在垃圾堆里找钻石

真实环境从不配合。Sysmon没部署、EDR license到期、云原生日志分散在7个控制台——Metcalf的 playbook 专为这种场景设计。

他的核心策略是"行为锚点":不依赖完整遥测,而是锁定攻击者无法隐藏的行为。比如域控上的敏感权限使用、非工作时间的交互式登录、罕见进程的父子关系。

一个典型案例:某客户环境几乎无终端日志,但Metcalf通过分析DNS查询模式发现异常。攻击者使用了域名前置(Domain Fronting)技术,流量表面上流向Azure CDN,实际指向C2服务器。DNS日志人人都有,只是没人按"查询频率突变+目标域名熵值"的组合去筛。

「你不需要看见恶意软件本身,」Metcalf在2023年BlueHat演讲中解释,「只需要看见它不得不留下的脚印。」

第三步:用时间线逼出真相

第三步:用时间线逼出真相

孤立的事件是噪音,时间线是信号。Metcalf的狩猎习惯是:找到可疑锚点后,向前推72小时,向后拉24小时,画出完整的行为链条。

他曾处理过一起案例:某管理员账户在非工作时间登录了VPN,随后访问了财务系统。单看每一步都合规——该账户有权限,IP属于公司地址段。但时间线显示,登录前6小时,同一源IP曾尝试爆破其他15个账户,全部失败。

攻击者拿到了正确的密码,却没改掉"先大规模试错再精准登录"的行为模式。时间线让这种矛盾无所遁形。

狩猎的本质是找"不应该同时发生的事",而非"已知的坏事"。

第四步:把发现变成防御

第四步:把发现变成防御

Metcalf的 playbook 最后一步常被忽略:每次狩猎结束,必须产出两条交付物。一是检测规则——把这次的手工查询变成自动告警;二是假设更新——攻击者会进化,你的狩猎模板也要迭代。

他的团队维护着一个"失败假设"文档,记录所有查无结果的狩猎方向。不是耻辱柱,而是地图——攻击者还没用到这些路径,但下次可能会。

2022年,某次针对Exchange服务器的狩猎零收获,但Metcalf保留了"利用EWS(Exchange Web Services)进行隐蔽数据渗出"的假设。6个月后,APT29被曝使用相同技术,他的团队成为最早检出该活动的防御方之一。

「狩猎的ROI不体现在抓到了谁,」Metcalf在博客中写道,「体现在你下次能多快发现下一个。」

这套 playbook 的残酷之处在于:它无法被工具替代。再贵的XDR也生成不了假设,再全的日志也画不出时间线。攻击者和防御者的差距,往往只是谁更愿意先站在对方的位置想15分钟。

你的环境里,上一个"应该发生但没发生"的查询是什么时候写的?