Log4Shell 调查剧本 — 基于证据的分流
一份针对 Log4Shell(CVE-2021-44228)的分步调查剧本:理解漏洞、查找受影响系统、收集指标、验证暴露面、检测利用并规划缓解——附真实工具与调查路径。
快速解答
要调查 Log4Shell,先在 NVD 上确认 CVE-2021-44228 的记录与 CVSS,检查 CISA KEV,识别每个运行受影响 Log4j 版本的系统,在日志与网络流量中查找 JNDI 查询指标,验证暴露面,并在认为风险降低前应用厂商补丁或缓解措施。
定义
Log4Shell 调查是对 Log4j JNDI 远程代码执行漏洞(CVE-2021-44228)暴露面进行基于证据的分流,涵盖受影响版本发现、指标收集、利用验证与缓解规划。
先给答案
分五步分流 Log4Shell:确认 CVE → 查找受影响系统 → 收集指标 → 验证利用 → 规划修复。
1. Log4Shell 是什么,为什么重要
CVE-2021-44228 是 Apache Log4j 2 的 JNDI 消息查询功能中的远程代码执行漏洞。能控制受影响版本记录的任何字符串的攻击者,可触发出站 JNDI 查询,并在条件允许时实现远程代码执行。由于 Log4j 内嵌于数千种产品,爆炸半径(blast radius)很广——这正是该漏洞拥有自己的 CISA 公告与利用浪潮的原因。
2. 受影响系统与版本
从你的资产清单开始,并将其映射到已知受影响版本:
- Log4j 2.0-beta9 至 2.14.1(以及若干 2.15.x 构建版本)受 CVE-2021-44228 影响。
- CVE-2021-45046 影响 2.16.0 之前的 Log4j 2.x,并单独计分。
- 内嵌 Log4j 的产品(应用服务器、安全设备、SDK)即使你没有直接安装 Log4j 也受影响。
在确定优先级前,使用 CVE 查询 获取每个 CVE 的严重性、CVSS 向量、受影响产品与 CISA KEV 状态。
3. 要收集的指标
追踪利用时,收集——而不是删除——以下信号:
- 包含
${jndi:ldap://、${jndi:rmi://、${jndi:dns://或 base64 编码 JNDI 模式的日志行。 - 应用主机到未知 LDAP/RMI/HTTP 主机、端口异常的出站连接。
- 将用户输入回显到日志的 HTTP 头部或参数(User-Agent、Referer、X-Forwarded-For、表单字段)。
- 主机上
exec()跟踪或进程命令行中观察到的命令片段。 - 厂商及 CISA/NCSC 公告发布的 IOC:攻击者 IP、通过 JNDI 查询的域名,以及载荷哈希。
用 IOC 查询 规范化并失效化(defang)每个指标,并在 OpenTrojan 情报中检查规范化后的值。在失效化之前记录原始值。
4. 调查工作流
- 确认记录:阅读 CVE 详情与针对你确切产品和版本的厂商公告。
- 界定范围:列出每个运行受影响 Log4j 的主机与服务,包括内嵌副本。
- 收集:从你正在调查的时间窗口拉取日志与数据包捕获(先不要修改文件)。
- 验证:通过将 JNDI 查询与后续出站请求或进程执行关联,区分良性扫描/蜜罐交互与真实利用。
- 遏制:隔离已确认主机,然后在更广泛的修复之前应用厂商补丁或官方缓解措施。
发起一项新调查,按主机跟踪范围、证据与修复——记录每个收集发现及其来源与时间戳。
5. 收集什么(证据纪律)
对每项发现记录:主机、服务、Log4j 版本、确切日志行(失效化后)、观察时间戳、记录来源,以及确认它的分析人员。保持原始日志不可变,供日后验证。
6. 如何验证
已确认信号意味着来自攻击者控制输入的入站 JNDI 查询且匹配的出站交互,或命令执行标记。单一日志模板匹配是疑似,而非确认——攻击者与扫描器都会触发查询。绝不要单独将工具命中视为判定。
7. 检测与缓解
- 检测:搜索上述指标,再加上 Web 访问日志中的 JNDI 字符串,以及到异常 LDAP/HTTP 目的地的出口连接。
- 缓解:升级到厂商修复的 Log4j 版本,对无法升级的版本启用官方缓解措施,阻断到不受信任 LDAP/RMI 的出口,若该 CVE 在 KEV 上则应用 CISA 要求的行动。