Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
chainsaw — 快速搜索并追踪 Windows 取证痕迹 | Kitploit
工具/GitHubGitHub/withsecureopensource/chainsaw
防御工具漏洞分析取证分析数字取证威胁情报事件响应日志分析
GitHubwithsecureopensource/chainsaw

chainsaw

快速搜索并追踪 Windows 取证痕迹

查看仓库
3.7k30911010天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

快速搜索和狩猎 Windows 取证痕迹


Chainsaw 提供强大的“第一响应”能力,可快速识别 Windows 取证痕迹(如事件日志和 MFT 文件)中的威胁。Chainsaw 提供了一种通用且快速的方法,通过关键词搜索事件日志,并利用内置的 Sigma 检测规则支持以及自定义 Chainsaw 检测规则来识别威胁。

功能特性

  • 🎯 使用 Sigma 检测规则和自定义 Chainsaw 检测规则狩猎威胁
  • 🔍 通过字符串匹配和正则表达式模式搜索和提取取证痕迹
  • 📅 通过分析 Shimcache 痕迹并用 Amcache 数据丰富它们来创建执行时间线
  • 💡 分析 SRUM 数据库并提供相关见解
  • ⬇️ 转储取证痕迹的原始内容(MFT、注册表配置单元、ESE 数据库)
  • ⚡ 闪电般快速,使用 rust 编写,封装了 @OBenamram 的 EVTX 解析器库
  • 🪶 简洁轻量的执行和输出格式,没有不必要的冗余
  • 🔥 由 TAU Engine 库提供的文档标记(检测逻辑匹配)
  • 📑 以多种格式输出结果,如 ASCII 表格格式、CSV 格式和 JSON 格式
  • 💻 可在 MacOS、Linux 和 Windows 上运行

目录

  • 功能特性
  • 为什么选择 Chainsaw?
  • Windows 事件日志的狩猎逻辑
  • 快速入门指南
    • 下载和运行
    • 使用 Nix 安装/构建
    • EDR 和 AV 警告
    • Chainsaw v2 中的变化
  • 示例
    • 搜索
    • 狩猎
    • 分析
      • Shimcache
      • SRUM(系统资源使用监视器)
      • Gaps(事件日志间隙检测)
    • 转储
  • 致谢

更多信息可在该工具的 Wiki 中找到:https://github.com/WithSecureLabs/chainsaw/wiki

为什么选择 Chainsaw?

在 WithSecure Countercept,我们通过 EDR 代理从端点摄取广泛的遥测源,以提供托管检测和响应服务。然而,在某些情况下,我们需要快速分析 EDR 未捕获的取证痕迹,一个常见的例子是在妥协时未安装 EDR 的环境中进行的的事件响应调查。Chainsaw 的创建是为了给我们的威胁狩猎者和事件响应顾问提供一个工具,在这些情况下对取证痕迹进行快速分类。

Windows 事件日志

Windows 事件日志为威胁狩猎和事件响应调查提供了丰富的取证信息来源。不幸的是,处理和搜索事件日志可能是一个缓慢且耗时的过程,在大多数情况下需要周围基础设施的开销——例如 ELK 堆栈或 Splunk 实例——以高效地狩猎日志数据并应用检测逻辑。这种开销通常意味着蓝队无法快速分类 Windows 事件日志,以提供推进调查所需的方向和结论。Chainsaw 解决了这个问题,因为它允许快速搜索和狩猎 Windows 事件日志。

在撰写本文时,很少有开源、独立的工具能够提供简单快速的方法来分类 Windows 事件日志、识别日志中有趣的元素并应用检测逻辑规则格式(如 Sigma)来检测恶意活动的迹象。在我们的测试中,现有的工具难以有效地将检测逻辑应用于大量事件日志,使其不适合需要快速分类的场景。

Windows 事件日志的狩猎逻辑

Sigma 规则匹配

使用 --sigma 和 --mapping 参数,您可以指定包含 SIGMA 检测规则子集(或整个 SIGMA git 仓库)的目录,chainsaw 将自动加载、转换并针对提供的事件日志运行这些规则。映射文件告诉 chainsaw 在事件日志中使用哪些字段进行规则匹配。默认情况下,Chainsaw 支持广泛的事件日志类型,包括但不限于:

事件类型事件 ID
进程创建 (Sysmon)1
网络连接 (Sysmon)3
映像加载 (Sysmon)7
文件创建 (Sysmon)11
注册表事件 (Sysmon)13
Powershell 脚本块4104
进程创建4688
计划任务创建4698
服务创建7045

有关用于规则检测的完整字段列表,请参阅映射文件,并随时根据您的需求进行扩展。

Chainsaw 检测规则

除了支持 sigma 规则外,Chainsaw 还支持自定义规则格式。在仓库中,您会找到一个 rules 目录,其中包含各种 Chainsaw 规则,允许用户:

  1. 提取和解析 Windows Defender、F-Secure、Sophos 和 Kaspersky AV 警报
  2. 检测关键事件日志被清除,或事件日志服务被停止
  3. 用户被创建或添加到敏感用户组
  4. 远程登录(服务、RDP、网络等)事件。这有助于狩猎者识别横向移动的来源
  5. 本地用户账户的暴力破解

快速入门指南

下载和运行

随着 Chainsaw v2 的发布,我们决定不再将 Sigma Rules 和 EVTX-Attack-Samples 仓库作为 Chainsaw 的子模块包含。我们建议您单独克隆这些仓库,以确保您拥有最新版本。

如果您仍然需要一个包含 Chainsaw 二进制文件、Sigma 规则和示例事件日志的一体化包,您可以从这个 GitHub 仓库的发布部分下载。在发布部分,您还可以找到适用于各种平台和架构的预编译纯二进制版本的 Chainsaw。

如果您想自己编译 Chainsaw,可以克隆 Chainsaw 仓库:

git clone https://github.com/WithSecureLabs/chainsaw.git

并通过运行以下命令自行编译代码: cargo build --release。构建完成后,您将在 target/release 文件夹中找到编译后的二进制文件副本。

确保使用 --release 标志进行构建,因为这将确保显著更快的执行时间。

如果您想快速了解 Chainsaw 运行时的样子,可以克隆 Sigma Rules 和 EVTX-Attack-Samples 仓库:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git

然后使用以下参数运行 Chainsaw:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml

使用 Nix 安装/构建```

├───devShells │ └───x86_64-linux │ └───default: development environment 'nix-shell' ├───formatter │ └───x86_64-linux: package 'alejandra-3.1.0' └───packages └───x86_64-linux ├───chainsaw: package 'chainsaw-2.10.1' └───default: package 'chainsaw-2.10.1'

Chainsaw 作为一个软件包,可通过 [nixpkgs](https://search.nixos.org/packages?query=chainsaw) 获取。
如果你使用的是 NixOS,只需将 `chainsaw` 添加到你的系统配置文件中即可。

不过,如果你没有使用 NixOS,你仍然可以通过 Nix 安装 Chainsaw。推荐的方式是使用 `nix-shell`,它会临时修改你的 $PATH 环境变量。
为此,请运行以下命令:```
nix-shell -p chainsaw

你也可以利用这个仓库是一个 flake 这一事实,并运行以下命令:``` nix profile install github:WithSecureLabs/chainsaw

不过,如果你想自己构建 chainsaw,使用 Nix,你可以再次利用本仓库提供的 `flake.nix`。
要构建二进制文件,请在克隆仓库的根目录下运行以下命令```
nix build .#

这将创建 ./result 目录,chainsaw 二进制文件位于 ./result/bin/chainsaw 下。

EDR 和 AV 警告

在下载和运行 chainsaw 时,您可能会发现本地 EDR / 防病毒引擎将 Chainsaw 检测为恶意软件。您可以在以下 GitHub issue 中看到相关示例:示例1、示例2。

这些警告通常是由于示例事件日志和/或 Sigma 规则中包含对恶意字符串(例如 "mimikatz")的引用。我们还看到过 Chainsaw 二进制文件被少数防病毒引擎检测到的情况,这可能是由于某种形式的启发式检测。

Chainsaw v2 有哪些变化?

2022 年 7 月,我们发布了 Chainsaw 的第 2 版,这是对 Chainsaw 运行方式的重大改造。Chainsaw v2 包含多项重大改进,包括以下亮点列表:

  • 改进的 Sigma 规则映射方法,显著增加了支持的 Chainsaw 规则数量和事件日志事件类型。
  • 改进的 CLI 输出,显示包含检测结果的事件日志的所有事件数据快照。
  • 支持以 JSON 和 XML 格式加载和解析事件日志。
  • Hunt 和 Search 功能的命令行参数更简洁、更简单。
  • 额外的可选输出信息,例如规则作者、规则状态、规则级别等。
  • 能够按状态、类型和严重性级别过滤已加载的规则。
  • 内置的 Chainsaw 检测规则已拆分为专用的 Chainsaw 规则文件
  • 对 Chainsaw 代码进行了清理和重写,以提高可读性并减少社区贡献的开销。

如果您仍希望使用 Chainsaw 第 1 版,可以在 releases 部分找到编译好的二进制文件,或者您可以在 v1.x.x 分支中访问源代码。请注意,Chainsaw v1 已不再维护,所有用户都应考虑迁移到 Chainsaw v2。

非常感谢 @AlexKornitzer,他将 Chainsaw v1 的 "Christmas Project" 代码库打造成了 v2 中的精良产品。

示例

搜索

  USAGE:
      chainsaw search [FLAGS] [OPTIONS] <pattern> [--] [path]...

  FLAGS:
      -h, --help            Prints help information
      -i, --ignore-case     Ignore the case when searching patterns
          --json            Print the output in json format
          --load-unknown    Allow chainsaw to try and load files it cannot identify
          --local           Output the timestamp using the local machine's timestamp
      -q                    Suppress informational output
          --skip-errors     Continue to search when an error is encountered
      -V, --version         Prints version information

  OPTIONS:
          --extension <extension>...    Only search through files with the provided extension
          --from <from>                 The timestamp to search from. Drops any documents older than the value provided
      -o, --output <output>             The path to output results to
      -e, --regex <pattern>...          A string or regular expression pattern to search for
      -t, --tau <tau>...                Tau expressions to search with. e.g. 'Event.System.EventID: =4104'
          --timestamp <timestamp>       The field that contains the timestamp
          --timezone <timezone>         Output the timestamp using the timezone provided
          --to <to>                     The timestamp to search up to. Drops any documents newer than the value provided

  ARGS:
      <pattern>    A string or regular expression pattern to search for. Not used when -e or -t is specified
      <path>...    The paths containing event logs to load and hunt through

命令示例

在所有 .evtx 文件中搜索不区分大小写的字符串 "mimikatz"

./chainsaw search mimikatz -i evtx_attack_samples/

*在所有 .evtx 文件中搜索 powershell 脚本块事件(事件 ID 4014)

./chainsaw search -t 'Event.System.EventID: =4104' evtx_attack_samples/

在特定 evtx 日志中搜索登录事件,使用匹配的正则表达式模式,以 JSON 格式输出

./chainsaw search -e "DC[0-9].insecurebank.local" evtx_attack_samples --json

狩猎

下载工具