3. 调查数据源与日志工程基础

自动化调查的上限,往往不由分析引擎决定,而由数据源覆盖度与日志质量决定。一次“可疑登录”事件,如果只有身份系统的登录成功记录,没有 EDR 的进程树、没有云审计的 API 调用、没有 NDR 的东西向流量,调查就只能停在“谁在什么时候登录了”,无法回答“登录后做了什么、是否横向移动、是否外传数据”。因此,数据源接入不是把日志堆进 SIEM,而是围绕调查问题构建可关联、可追溯、可验证的证据链。

六类核心数据源及其调查价值

EDR 提供端点侧的进程创建、命令行、父子进程关系、文件与注册表改动、网络连接等遥测,是判断“执行了什么”的主干。SIEM 本身不是数据源,而是汇聚与关联层,它把防火墙、代理、DNS、WAF、应用日志等统一检索。NDR 补充网络侧元数据,如五元组、DNS 查询、TLS 指纹、JA3、流量字节数,用于发现 EDR 未覆盖的设备或加密通道中的异常。身份系统(IdP/AD/SSO)提供登录、MFA、令牌签发、权限变更,是“谁进来了”的锚点。云审计(CloudTrail、Activity Log 等)记录控制面 API 调用,是云上权限滥用与资源创建的关键证据。威胁情报提供 IOC、TTP、信誉与上下文,用于把孤立行为映射到已知攻击活动。

六类数据源 → 规范化 → 关联调查 EDR 进程/命令行/文件 NDR 五元组/DNS/JA3 身份系统 登录/MFA/令牌 云审计 控制面 API 调用 威胁情报 IOC/TTP/信誉 SIEM 汇聚层 检索/关联/告警 日志规范化(Normalization) 统一字段:timestamp · host · user · process · src_ip · dst_ip · action · result 统一时间基准(UTC)· 统一实体标识(主机名/账号/进程哈希) 数据质量治理:完整性 · 时效性 · 一致性 · 可关联性 缺失率 · 延迟 · 时钟偏差 · 字段映射错误 · 重复与噪声 可关联调查证据链 时间线重建 · 实体关联 · 行为判定

日志规范化:让不同来源说同一种语言

各数据源字段命名差异极大:EDR 可能用 process_name,Sysmon 用 Image,云审计用 eventName。规范化就是把这些字段映射到统一模式(schema)。实践中建议至少统一以下字段:timestamp(UTC)、host、user、process、parent_process、command_line、src_ip、dst_ip、action、result、data_source。以一条 EDR 进程创建日志为例:

原始: {"EventID":1,"UtcTime":"2024-06-11 08:12:33.421",
       "Image":"C:\\Windows\\System32\\cmd.exe",
       "ParentImage":"C:\\Windows\\System32\\winword.exe",
       "CommandLine":"cmd.exe /c whoami",
       "User":"CORP\\alice"}

规范化: timestamp=2024-06-11T08:12:33.421Z
        host=WIN-0231  user=CORP\alice
        process=cmd.exe  parent_process=winword.exe
        command_line="cmd.exe /c whoami"
        action=process_create  data_source=edr

规范化后,调查引擎才能用同一套查询逻辑跨源检索,例如“查找 alice 在 WIN-0231 上由 Office 进程派生的所有命令行”。

时间同步:时间线可信的前提

多源关联的第一杀手是时钟偏差。若 EDR 与云审计相差 90 秒,攻击者“先登录云控制台、再在端点执行命令”的因果顺序就可能被颠倒。工程上要求:所有采集端启用 NTP,偏差控制在 ±1 秒内;日志写入时保留原始时区并统一转换为 UTC;对无法确认时区的日志标记 tz_unknown,避免误判。可用如下方式快速检查偏差:

# 查看端点与 NTP 服务器偏差
w32tm /stripchart /computer:ntp.corp.local /samples:3

# Linux 侧
chronyc tracking | grep -E "System time|Last offset"

若某源偏差超过阈值,应在规范化阶段记录 clock_skew_ms,并在时间线重建时对该源做偏移校正,而不是直接丢弃。

数据质量治理:四个可量化维度

数据质量不能靠感觉,要落到指标。完整性看关键字段缺失率,例如 command_line 缺失率超过 5% 就应排查采集策略;时效性看从事件发生到可检索的延迟,端点遥测通常要求小于 60 秒;一致性看同一实体在不同源中的标识是否可对齐,如主机名与 IP 的映射是否稳定;可关联性看是否存在可用于 join 的公共键,如 host、user、session_id。建议每日生成一份数据源健康表:

数据源关键字段缺失率平均延迟时钟偏差可关联键
EDRcommand_line 1.2%18s+0.3shost, user, process
身份系统src_ip 0.4%25s-0.1suser, session_id
云审计user_agent 3.8%45s+0.8suser, resource_id
NDRdst_port 0.9%12s+0.2ssrc_ip, dst_ip
接入新数据源时,先做“三问”:它回答哪个调查问题?它和现有源靠什么键关联?它的缺失或延迟会怎样影响结论?答不上来就先不接。

从接入到可用:一个最小闭环

以“云主机异常登录”为例:身份系统给出 user=alice, src_ip=203.0.113.45, result=success;云审计给出同一时段 eventName=CreateAccessKey;EDR 给出该主机上 powershell.exe 的下载行为;NDR 给出到陌生域名的 DNS 查询。四源通过 user 与 host 关联,时间线按 UTC 对齐,才能形成“登录→创建密钥→下载工具→外联”的完整链条。若其中任一源缺失或时间错位,链条就会断裂,自动化调查只能降级为人工猜测。

不要把“日志已接入”等同于“数据可用”。未规范化的字段、未对齐的时间、未验证的关联键,都会让自动化调查在关键时刻给出错误结论。

因此,数据源与日志工程的核心任务可以概括为:以调查问题为牵引选择数据源,以统一 schema 完成规范化,以 UTC 与 NTP 保证时间可信,以可量化指标持续治理质量,最终让多源日志能够被稳定地关联成一条可验证的证据链。