EVTX日志分析工具-Chainsaw
好的,我现在要帮用户总结这篇文章的内容。用户的要求是用中文总结,控制在100字以内,不需要特定的开头,直接写描述。 首先,我需要通读整篇文章,抓住主要内容。文章主要介绍了Chainsaw这款工具,它用Rust编写,用于取证分析,特别是处理Windows的EVTX日志。它的核心优势包括速度快、支持Sigma规则和灵活的输出格式。 接下来,文章详细说明了工具的使用语法和各种命令,比如dump、hunt、search等。还提到了使用场景,如应急响应、威胁狩猎、日志审计和蓝队安全防护校验。 然后是经典案例和用法部分,包括如何使用Sigma规则进行威胁狩猎、关键字搜索、特定字段过滤、导出数据以及深度分析取证文件如Shimcache和SRUM。 现在我要把这些信息浓缩到100字以内。需要突出Chainsaw的功能、优势和应用场景。同时保持语言简洁明了。 可能会这样组织:Chainsaw是一款基于Rust的取证工具,用于快速解析Windows EVTX日志。支持Sigma规则和自定义规则,具备高亮输出和JSON格式输出功能。适用于应急响应、威胁狩猎及日志分析,并提供多种命令如搜索、导出和深度分析取证数据。 检查一下字数是否在100字以内,并确保没有遗漏关键点。 </think> Chainsaw是一款基于Rust的取证工具,用于快速解析Windows EVTX日志。支持Sigma规则和自定义规则,具备高亮输出和JSON格式输出功能。适用于应急响应、威胁狩猎及日志分析,并提供多种命令如搜索、导出和深度分析取证数据。 2026-2-21 12:38:53 Author: www.freebuf.com(查看原文) 阅读量:2 收藏

1. 概述

Chainsaw 是一款使用 Rust 编写的极速、强大的取证神器(Forensic Artefacts)分析工具。它主要用于事件响应(Incident Response)和威胁狩猎(Threat Hunting)场景,能够极快地解析和搜索 Windows 事件日志(EVTX 文件)。 Chainsaw 内置对 Sigma 规则和自定义 Chainsaw 规则的支持,可以通过模式匹配和规则检测快速从海量日志中提取有价值的安全事件,识别潜在的恶意活动。

核心优势:

  • 速度极快:得益于 Rust 的底层优化,处理庞大数量的 EVTX 文件非常迅速。
  • 规则驱动:原生支持基于 Sigma 规则的威胁狩猎。
  • 灵活输出:支持控制台高亮表格式输出以及 JSON 格式输出,方便集成到其他分析管道。

2. 工具使用语法

Chainsaw 采用命令行交互方式,其基本语法如下:

Usage: chainsaw [OPTIONS] <COMMAND>  

Commands:  
  dump     将事件日志(EVTX)或其他取证数据导出为不同的格式(如 JSON、XML)  
  hunt     使用预定义的检测规则(如 Sigma)对日志进行搜寻,识别潜在威胁或异常活动  
  lint     校验检测规则语法,确保它们能被正确加载和执行  
  search   在日志中快速检索特定的关键词、正则表达式或特定字段模式  
  analyse  对取证数据进行自动化统计和分析,生成调查见解  
help      显示帮助信息  

Options:  
      --no-banner           隐藏软件启动时的 Banner  
      --num-threads <NUM_THREADS>  限制工作线程数 (默认: CPU 核心数)  
  -h, --help                打印帮助信息  
  -V, --version             打印版本信息  

3. 工具使用场景

Chainsaw 常见于以下安全场景:

  • 应急响应 (IR):当企业内网发生入侵事件时,安全人员可以将被攻陷机器的 Windows EVTX 日志拷贝出来,使用 Chainsaw 结合最新的 Sigma 规则进行快速扫描,迅速定位攻击者留下的痕迹(例如:利用漏洞产生的新开机自启服务、可疑的 PowerShell 脚本执行、日志清除行为等)。
  • 威胁狩猎 (Threat Hunting):安全团队针对某些高级持续性威胁(APT),主动在全域收集的日志中搜索 IOC(如特定恶意软件名称、哈希或特定进程调用链)。可以利用 search 命令全局无视大小写地暴搜异常关键字。
  • 日志审计与溯源:对长期积累的审计日志进行过滤和模式匹配,提炼出时间线,帮助分析人员还原完整的攻击路径。
  • 蓝队安全防护校验:红队在进行授权模拟攻击后,蓝队可以使用 Chainsaw 结合日志验证现有的安全策略和日志采集配置是否完善,当前规则是否能够成功命中此次攻击。

4. 经典案例与用法

4.1 使用 Sigma 规则与自定义规则进行威胁狩猎 (Hunt)

在应急响应中最常用的做法,使用官方或开源的 Sigma 规则库对日志样本进行全面扫描。执行此操作时,需要指定字段映射文件(mapping)以便转换规则字段。 Chainsaw 除了支持 Sigma 规则外,自身 rules 目录下也包含多种实用的自定义检测规则,例如:

  1. 提取和解析 Windows Defender, F-Secure, Sophos 和 Kaspersky 等杀软的告警。
  2. 检测关键事件日志被清除,或事件日志服务被停止的行为。
  3. 用户被创建或被添加到敏感用户组的行为。
  4. 远程登录 (服务, RDP, 网络等) 事件,帮助狩猎横向移动源头。
  5. 本地用户账户的暴力破解。
# 扫描 evtx_attack_samples 目录,同时使用 sigma 规则和 Chainsaw 自带规则,并加载映射文件  
./chainsaw hunt evtx_attack_samples/ \  
  -s sigma/ \  
  --mapping mappings/sigma-event-logs-all.yml \  
  -r rules/
# 以 JSON 格式输出狩猎结果,适合重定向到文件以供后续 jq 或 Python 脚本处理  
./chainsaw hunt evtx_attack_samples/ \  
  -s sigma/ \  
  --mapping mappings/sigma-event-logs-all.yml \  
  --json > result.json  

# 【高级过滤】限制检测级别 (Level):仅匹配 high 或 critical 级别的高危告警规则  
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml --level high critical  

# 【高级过滤】时间线过滤 (Time):仅搜索在指定时间范围内的日志 (例如应急响应中已确认被入侵的时间段)  
# 使用 --from 和 --to 参数  
./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml --from "2023-01-01T00:00:00" --to "2023-01-02T23:59:59"  

4.2 关键字暴搜 (Search)

当已经明确某些 IOC(如恶意域名、特定黑客工具名称如 Mimikatz 等)时,可以通过暴搜进行快速定位。

# 搜索日志中出现的 mimikatz 关键字,使用 -i 参数忽略大小写  
./chainsaw search mimikatz -i evtx_attack_samples/  

# 搜索指定的正则表达式模式 (如寻找 base64 编码特征的 powershell)  
# 官方推荐使用 -e (或 --regex) 参数进行全局正则匹配:  
./chainsaw search -e 'powershell\.exe.*-enc' evtx_attack_samples/

4.3 特定字段过滤搜索

Chainsaw 可以针对 EVTX 日志的具体结构字段进行精确匹配,过滤出无关干扰。使用 -t--tag 指定过滤条件。

# 1. 常见系统与执行分析  

# 搜索 Powershell 面板脚本块日志 (EventID: 4104)  
./chainsaw search -t 'Event.System.EventID: =4104' evtx_attack_samples/  

# 进程执行分析:搜索 cmd.exe 等可疑命令行的进程启动事件 (EventID: 4688)  
# 这里使用 '~' 进行正则表达式匹配  
./chainsaw search -t 'Event.System.EventID: =4688' -t 'Event.EventData.NewProcessName: ~.*cmd\.exe' evtx_attack_samples/  

# 服务安装监控:查找最新安装的系统服务 (EventID: 7045),以发现恶意服务/驱动持久化后门  
./chainsaw search -t 'Event.System.EventID: =7045' evtx_attack_samples/  

# 隐匿破坏行为:查找安全日志被恶意清除的事件 (EventID: 1102 为安全日志被清,104 为系统日志被清)  
./chainsaw search -t 'Event.System.EventID: =1102' evtx_attack_samples/  

# 2. 用户身份与身份验证分析  

# 暴力破解与非法登录分析:搜索 RDP / SMB 登录失败事件 (EventID: 4625)  
./chainsaw search -t 'Event.System.EventID: =4625' evtx_attack_samples/  

# 搜索特定用户的相关活动 (例如目标用户名为 administrator 的相关操作)  
./chainsaw search -t 'Event.EventData.TargetUserName: administrator' evtx_attack_samples/  

# 异常横向移动分析:查找特定来源 IP 的登录成功事件 (EventID: 4624)  
./chainsaw search -t 'Event.System.EventID: =4624' -t 'Event.EventData.IpAddress: 10.10.10.50' evtx_attack_samples/  

# 3. 恶意 IP 过滤分析  

# 基础 IP 匹配:直接搜索包含特定恶意 IP 的所有日志记录(不限字段)  
./chainsaw search '192.168.1.100' evtx_attack_samples/  

# 精确字段匹配:仅搜索 Event.EventData.IpAddress 字段为指定恶意 IP 的记录(如网络连接、登录记录等)  
./chainsaw search -t 'Event.EventData.IpAddress: 192.168.1.100' evtx_attack_samples/  

# 多 IP 匹配或网段匹配:推荐使用官方的 `-e` 参数进行原生正则表达式全局匹配  
./chainsaw search -e '172\.16\.66\.\d{1,3}' evtx_attack_samples/  

# 结合关键事件分析恶意 IP 行为:例如,特定恶意 IP 尝试进行 RDP 登录 (网络级别的身份验证,通常是登录成功 4624 或登录失败 4625)  
./chainsaw search -t 'Event.System.EventID: =4624' -t 'Event.EventData.IpAddress: 192.168.1.100' evtx_attack_samples/  
# 注意:EventID 的匹配必须使用 '=' (因为在 EVTX 结构中它是整型),而对于 IpAddress 直接输入字符串即可。  

4.4 导出取证数据 (Dump)

dump 命令用于将难以直接阅读的原生 EVTX 文件快速读取,并转换为直观的文本或机器易读的 JSON 格式。当你在应急响应中不需要按规则扫描,只想对日志进行格式清洗和转换时,此命令非常方便。

# 将目录下的所有 EVTX 日志以人类可读的字符串格式直接输出打印到控制台  
./chainsaw dump evtx_attack_samples/  

# 将日志提取并转换为纯 JSON 格式,重定向保存到文件中,非常适合后续输入到 jq 工具分析或导入 ELK 平台  
./chainsaw dump evtx_attack_samples/ --json > dumped_logs.json  

4.5 取证数据深度分析 (Analyse)

analyse 命令并非用于 EVTX 宏观统计,而是专门用于对 Windows 系统中的特定取证文件(Artefacts) 进行深度解析。目前主要支持提取程序历史执行记录(Shimcache / Amcache)以及系统资源监控数据库(SRUM)。

# 1. Shimcache (AppCompatCache)  

# 提取并解析系统的 Shimcache(SYSTEM 注册表配置单元),生成程序执行时间线。  
# Shimcache 是极具价值的取证来源,即使恶意程序执行后被删除,痕迹仍可能遗留。  
./chainsaw analyse shimcache /path/to/SYSTEM  

# 结合 Amcache 数据进行强化补充(Amcache 能提供已执行文件的 SHA1 哈希等更多细节)  
./chainsaw analyse shimcache /path/to/SYSTEM -a /path/to/Amcache.hve  

# 2. SRUM (System Resource Usage Monitor)  

# 解析 SRUM 数据库(原文件通常位于 C:\Windows\System32\sru\SRUDB.dat)。  
# SRUM 会记录至少 30 天的网络使用量、程序运行时长等。在应急响应中,这常被用来发现异常的数据外传程序或潜伏的后门进程。  
./chainsaw analyse srum /path/to/SRUDB.dat  

文章来源: https://www.freebuf.com/articles/sectool/471198.html
如有侵权请联系:admin#unsafe.sh