Chainsaw 是一款使用 Rust 编写的极速、强大的取证神器(Forensic Artefacts)分析工具。它主要用于事件响应(Incident Response)和威胁狩猎(Threat Hunting)场景,能够极快地解析和搜索 Windows 事件日志(EVTX 文件)。 Chainsaw 内置对 Sigma 规则和自定义 Chainsaw 规则的支持,可以通过模式匹配和规则检测快速从海量日志中提取有价值的安全事件,识别潜在的恶意活动。
核心优势:
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 打印版本信息
Chainsaw 常见于以下安全场景:
search 命令全局无视大小写地暴搜异常关键字。在应急响应中最常用的做法,使用官方或开源的 Sigma 规则库对日志样本进行全面扫描。执行此操作时,需要指定字段映射文件(mapping)以便转换规则字段。
Chainsaw 除了支持 Sigma 规则外,自身 rules 目录下也包含多种实用的自定义检测规则,例如:
# 扫描 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"
当已经明确某些 IOC(如恶意域名、特定黑客工具名称如 Mimikatz 等)时,可以通过暴搜进行快速定位。
# 搜索日志中出现的 mimikatz 关键字,使用 -i 参数忽略大小写
./chainsaw search mimikatz -i evtx_attack_samples/
# 搜索指定的正则表达式模式 (如寻找 base64 编码特征的 powershell)
# 官方推荐使用 -e (或 --regex) 参数进行全局正则匹配:
./chainsaw search -e 'powershell\.exe.*-enc' evtx_attack_samples/
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 直接输入字符串即可。
dump 命令用于将难以直接阅读的原生 EVTX 文件快速读取,并转换为直观的文本或机器易读的 JSON 格式。当你在应急响应中不需要按规则扫描,只想对日志进行格式清洗和转换时,此命令非常方便。
# 将目录下的所有 EVTX 日志以人类可读的字符串格式直接输出打印到控制台
./chainsaw dump evtx_attack_samples/
# 将日志提取并转换为纯 JSON 格式,重定向保存到文件中,非常适合后续输入到 jq 工具分析或导入 ELK 平台
./chainsaw dump evtx_attack_samples/ --json > dumped_logs.json
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