当前位置: 首页 > news >正文

【应急响应工具教程】Windows日志快速分析工具——Chainsaw

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

img

特征

  • 🎯 使用 Sigma 检测规则和自定义 Chainsaw 检测规则搜寻威胁

  • 🔍 通过字符串匹配和正则表达式模式搜索和提取法医伪影

  • 📅 通过分析 Shimcache 工件并使用 Amcache 数据丰富它们来创建执行时间表

  • 💡 分析 SRUM 数据库并提供有关它的见解

  • ⬇️ 转储取证伪影的原始内容(MFT、注册表配置单元、ESE 数据库)

  • ⚡ 快如闪电,用 Rust 编写,通过 @OBenamram 包装 EVTX 解析器库

  • 🪶 干净轻量级的执行和输出格式,没有不必要的膨胀

  • 🔥 TAU Engine Library 提供的文档标记(检测逻辑匹配)

  • 📑 以多种格式输出结果,例如 ASCII 表格式、CSV 格式和 JSON 格式

  • 💻 可以在 MacOS、Linux 和 Windows 上运行

github链接:

 https://github.com/WithSecureLabs/chainsaw

Windows 事件日志的搜寻逻辑

Sigma 规则匹配

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

事件类型

事件 ID

进程创建 (Sysmon)

1

网络连接 (Sysmon)

3

映像加载 (Sysmon)

7

文件创建 (Sysmon)

11

注册表事件 (Sysmon)

13

Powershell 脚本块

4104

进程创建

4688

计划任务创建

4698

服务创建

7045

电锯检测规则

除了支持 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,你可以克隆 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 获得。如果你使用的是 NixOS,只需在你的系统配置文件中添加 chainsaw 即可。

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

nix-shell -p chainsaw

您还可以利用此 repo 是 flake 这一事实,您可以运行以下内容:

nix profile install github:WithSecureLabs/chainsaw

但是,如果您想使用 Nix 自己构建 chainsaw,您可以再次使用此存储库中提供的 flake.nix。要构建二进制文件,请在克隆的 repo 的根目录中运行以下命令

nix build .#

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

EDR 和 AV 警告

下载和运行 Chainsaw 时,您可能会发现本地 EDR / AntiVirus 引擎将 Chainsaw 检测为恶意。您可以在以下 GitHub 问题中看到相关示例:Example1、Example2。

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

简单使用

Searching

=  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 informationOPTIONS:--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 providedARGS:<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/

img

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

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

img

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

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

img

Hunting

  USAGE:chainsaw hunt [FLAGS] [OPTIONS] [--] [path]...FLAGS:--csv             Print the output in csv format--full            Print the full values for the tabular output-h, --help            Prints help information--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--log             Print the output in log like format--metadata        Display additional metadata in the tablar output-q                    Suppress informational output--skip-errors     Continue to hunt when an error is encountered-V, --version         Prints version informationOPTIONS:--column-width <column-width>    Set the column width for the tabular output--extension <extension>...       Only hunt through files with the provided extension--from <from>                    The timestamp to hunt from. Drops any documents older than the value provided--kind <kind>...                 Restrict loaded rules to specified kinds--level <level>...               Restrict loaded rules to specified levels-m, --mapping <mapping>...           A mapping file to tell Chainsaw how to use third-party rules-o, --output <output>                A path to output results to-r, --rule <rule>...                 A path containing additional rules to hunt with-s, --sigma <sigma>...               A path containing Sigma rules to hunt with--status <status>...             Restrict loaded rules to specified statuses--timezone <timezone>            Output the timestamp using the timezone provided--to <to>                        The timestamp to hunt up to. Drops any documents newer than the value providedARGS:<rules>      The path to a collection of rules to usefor hunting<path>...    The paths containing eventlogstoloadand hunt through
命令示例

使用检测逻辑的 Sigma 规则搜寻所有 evtx 文件

./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml

sigma规则下载链接:https://github.com/SigmaHQ/sigma

img

使用 Sigma 规则和 Chainsaw 规则搜寻所有 evtx 文件,以获取检测逻辑,并以 CSV 格式输出到结果文件夹

./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml -r rules/ --csv --output results

使用 Sigma 检测逻辑规则搜寻所有 evtx 文件,仅在特定时间戳之间搜索,并以JSON格式输出结果

 ./chainsaw hunt evtx_attack_samples/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml --from "2019-03-17T19:09:39" --to "2019-03-17T19:09:50" --json

Analysing

COMMAND:analyse shimcache                 Create an execution timeline from the shimcache with optional amcache enrichmentsUSAGE:chainsaw analyse shimcache [OPTIONS] <SHIMCACHE>ARGUMENTS:<SHIMCACHE>                       The pathto the shimcache artefact (SYSTEM registry file)OPTIONS:-e, --regex <pattern>             A string or regular expression for detecting shimcache entries whose timestamp matches their insertion time-r, --regexfile <REGEX_FILE>      The path to a newline delimited file containing regex patterns for detecting shimcache entries whose timestamp matches their insertion time-o, --output <OUTPUT>             The path to output the result csv file-a, --amcache <AMCACHE>           The path to the amcache artefact (Amcache.hve) for timeline enrichment-p, --tspair                      Enable near timestamp pair detection between shimcache and amcache for finding additional insertion timestamps for shimcache entries-h, --help                        Print help
  • --regexfile 参数的示例模式文件包含在 analysis/shimcache_patterns.txt 中。

  • 正则表达式模式在转换为小写的 shimcache 条目中的路径上匹配。

命令示例

使用提供的正则表达式模式分析 shimcache 工件,并在启用时间戳接近对检测的情况下使用 amcache 扩充。输出到 csv 文件。

./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt --amcache ./Amcache.hve --tspair --output ./output.csv

使用提供的正则表达式模式分析 shimcache 工件(无需 amcache 扩充)。输出到终端。

./chainsaw analyse shimcache ./SYSTEM --regexfile ./analysis/shimcache_patterns.txt

SRUM (系统资源使用情况监视器)

在 Chainsaw 中实现的 SRUM 数据库解析器与其他解析器不同,因为它不依赖于有关表的硬编码值。该信息直接从 SOFTWARE 配置单元中提取,这是一个必需参数。目标是避免与未知表相关的错误。

COMMAND:analyse srum                             Analyse the SRUM databaseUSAGE:chainsaw analyse srum [OPTIONS] --software <SOFTWARE_HIVE_PATH> <SRUM_PATH>ARGUMENTS:<SRUM_PATH>                              The path to the SRUM databaseOPTIONS:-s, --software <SOFTWARE_HIVE_PATH>      The path to the SOFTWARE hive--stats-only                         Only output details about the SRUM database-q                                       Suppress informational output-o, --output <OUTPUT>                    Save the output to a file-h, --help                               Print help
命令示例

分析 SRUM 数据库(SOFTWARE 配置单元)

./chainsaw analyse srum --software ./SOFTWARE ./SRUDB.dat --output ./output.json

Dumping

USAGE:chainsaw dump [OPTIONS] <PATH>ARGUMENTS:<PATH>                  The path to an artefact to dumpOPTIONS:-j, --json              Dump in json format--jsonl             Print the output in jsonl format--load-unknown      Allow chainsaw to try and load files it cannot identify-o, --output <OUTPUT>   A path to output results to-q                      Suppress informational output--skip-errors       Continue to hunt when an error is encountered-h, --help              Print help

转储 SOFTWARE 配置单元

命令示例
./chainsaw dump ./SOFTWARE.hve --json --output ./output.json
http://www.xdnf.cn/news/471799.html

相关文章:

  • 数智管理学(九)
  • MySQL 8.0 OCP 1Z0-908 题目解析(4)
  • Process exited with an error: 1 (Exit value: 1) 问题处理
  • Element Plus 取消el-form-item点击触发组件,改为原生表单控件
  • Seata源码—3.全局事务注解扫描器的初始化一
  • 5月15日day26打卡
  • 计量经济学——预测与chow检验
  • 以项目的方式学QT开发(三)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • C++ QT图片查看器
  • 软件设计师考试《综合知识》软件过程模型考点分析——求三连
  • 044-代码味道-数据类
  • 【YOLO 系列】基于YOLO的道路坑洞检测识别系统【python源码+Pyqt5界面+数据集+训练代码】
  • SWMM相关文档共享
  • BUUCTF——shrine
  • 牛客网 NC22167: 多组数据a+b
  • 差分振荡器:支持0.15ps超低抖动的高速时钟核心
  • 腾讯AI军备极速扩张
  • LCD电视LED背光全解析:直下式 vs 侧光式、全局调光 vs 局部调光与HDR体验
  • (6)python开发经验
  • hbit资产收集工具Docker(笔记版)
  • 电商热销榜的5种实现方案
  • [python] Python元组、字典与集合的全面解析
  • Linux常用命令41——passwd修改用户的密码值
  • OpenCV光流估计:原理、实现与应用
  • 深度解析物理机服务器故障修复时间:影响因素与优化策略
  • Linux常用的性能分析工具
  • 加密原理3-代码
  • 可视化图解算法40:二分查找-I
  • HGDB企业版迁移到HGDB安全版
  • fakeroot 在没有超级用户权限的情况下模拟文件系统的超级用户行为