3. 数据源与日志采集
聊到威胁狩猎,有个事儿我得先说明白——没有好的数据,你啥也干不了。就像做饭,菜都没洗,你谈什么米其林三星?
这一章,咱们就聊聊那些“食材”。Windows Event Log、Sysmon、ETW、网络流量日志、EDR遥测数据。这五个东西,是我日常工作中打交道最多的数据源。我一个个说,你一个个记。
3.1 Windows Event Log:老牌选手,但别小看它
Windows Event Log,说白了就是Windows自带的日志系统。从Windows NT时代就有了,一直用到现在。很多人觉得它太基础,没啥好看的。嗯,我以前也这么想,直到有一次...
我在一个客户现场,发现攻击者通过RDP暴力破解进来了。当时EDR没报警,Sysmon也没装。但Windows Event Log里的4625(登录失败)和4624(登录成功)记录,清清楚楚地告诉我:这个IP在凌晨3点,试了2000多次密码,最后成功了。你想想看,如果没有这些日志,我连攻击者从哪进来的都不知道。
常用的几个Event ID,我列个表,你记一下:
| Event ID | 描述 | 狩猎价值 |
|---|---|---|
| 4624 | 登录成功 | 高 |
| 4625 | 登录失败 | 高 |
| 4688 | 进程创建 | 极高 |
| 4104 | PowerShell脚本块记录 | 极高 |
| 7045 | 服务安装 | 中 |
3.2 Sysmon:日志采集的“瑞士军刀”
Sysmon是微软Sysinternals工具集里的一个组件。它是个驱动级别的日志采集工具。说白了,它比Windows Event Log看得更深、更细。
举个例子:Windows Event Log能告诉你“进程A创建了进程B”。但Sysmon能告诉你“进程A创建了进程B,而且进程A是从网络上下载的,进程B的哈希值是xxx,进程B的父进程是yyy”。你看,信息量完全不是一个级别。
我个人习惯,在每台Windows服务器上都装Sysmon。配置文件的写法,我分享一个我常用的模板:
<Sysmon>
<EventFiltering>
<!-- 记录所有进程创建 -->
<ProcessCreate onmatch="include">
<!-- 不排除任何进程 -->
</ProcessCreate>
<!-- 记录网络连接 -->
<NetworkConnect onmatch="include">
<!-- 只记录出站连接 -->
<DestinationPort condition="is">443</DestinationPort>
<DestinationPort condition="is">80</DestinationPort>
</NetworkConnect>
<!-- 记录文件创建 -->
<FileCreateTime onmatch="include">
<!-- 监控临时目录 -->
<TargetFilename condition="contains">C:\Windows\Temp</TargetFilename>
</FileCreateTime>
</EventFiltering>
</Sysmon>
3.3 ETW:Windows的“内窥镜”
ETW(Event Tracing for Windows)是Windows内核提供的一套事件追踪机制。它比Sysmon更底层,能捕获到内核级别的行为。比如,你可以用ETW监控到某个进程在调用什么API、读写什么注册表、加载了什么DLL。
说实话,ETW的学习曲线有点陡。我第一次接触时,看了三天文档,还是云里雾里的。但一旦你掌握了它,你会发现它是个宝藏。
举个例子:攻击者常用的“反射式DLL注入”,Sysmon可能抓不到,因为它在用户态。但ETW可以,因为它在内核态。你想想看,这差距有多大?
常用的ETW Provider,我列几个:
- Microsoft-Windows-Kernel-Process:进程创建、终止、线程创建
- Microsoft-Windows-Kernel-Network:网络连接、DNS查询
- Microsoft-Windows-Kernel-File:文件读写、删除
- Microsoft-Windows-DotNETRuntime:.NET程序的行为,比如JIT编译、异常抛出
3.4 网络流量日志:看清“线”上的事
网络流量日志,说白了就是抓包。但抓包也分很多种:全流量抓包、NetFlow、DNS日志、HTTP日志等等。
我个人最看重的是DNS日志。为什么?因为攻击者几乎一定会用DNS。不管是C2通信、数据外传,还是域名生成算法(DGA),都离不开DNS。你想想看,如果一个内网IP,突然频繁解析一个从未见过的域名,而且这个域名的TTL很短,那大概率是有问题了。
我常用的网络流量采集工具:
- Zeek(原名Bro):一个强大的网络分析框架,能生成连接日志、HTTP日志、DNS日志等
- Suricata:一个入侵检测系统,也能做流量采集
- tcpdump:老牌抓包工具,适合临时排查
举个例子,用Zeek采集DNS日志:
# 启动Zeek,监听eth0网卡
zeek -i eth0
# 生成的dns.log文件内容示例
# 时间戳 | 源IP | 目的IP | 查询域名 | 查询类型 | 响应码
2025-03-15 10:30:00 | 192.168.1.100 | 8.8.8.8 | evil.com | A | 0
3.5 EDR遥测数据:最后的“王牌”
EDR(Endpoint Detection and Response)遥测数据,是现在威胁狩猎的“王牌”。它把上面提到的所有数据源,都整合到了一个平台上。而且,它还能提供一些额外的信息,比如进程树、文件血缘关系、注册表变更等。
市面上的EDR产品很多,比如CrowdStrike、SentinelOne、Microsoft Defender for Endpoint等。它们采集的数据大同小异,但各有侧重。
我举个例子,用EDR遥测数据做威胁狩猎:
// 假设你在EDR平台上查询:最近24小时内,有哪些进程创建了计划任务?
// 查询语句(伪代码):
search ProcessCreate | where CommandLine contains "schtasks" | project Timestamp, ProcessName, ParentProcessName, CommandLine
你看,这个查询很简单,但能帮你发现很多问题。比如,一个正常的办公软件,突然创建了一个计划任务,那肯定有问题。
3.6 数据源的整合与取舍
说了这么多,你可能会问:我到底该用哪个?我的建议是:
- 预算有限:Windows Event Log + Sysmon,这是最低配置
- 预算中等:加上ETW和网络流量日志(Zeek或Suricata)
- 预算充足:直接上EDR,但别忘了把ETW和网络流量日志作为补充
我在项目中遇到过很多次,客户只买了EDR,但没开ETW。结果攻击者用了一个内核级别的rootkit,EDR完全没发现。后来我帮他们补上了ETW,才把问题揪出来。所以,数据源的整合,真的很重要。
最后,送你一句话:数据是威胁狩猎的“弹药”。没有弹药,你枪法再好也没用。所以,花点时间,把数据源搞明白,把日志采集做好。这是你成为威胁狩猎专家的第一步。