返回更新列表
新发布Aug 5, 2026

Zircolite v3.8.1

一款独立的基于 SIGMA 的检测工具,适用于 EVTX、Auditd 和 Sysmon for Linux 日志

分享

用于 EVTX、Auditd、Sysmon for Linux、XML、CSV 或 JSONL/NDJSON 日志的独立 SIGMA 检测工具

python version

Zircolite 是一款使用 Python 3 编写的独立工具,可让你对以下日志应用 SIGMA 规则:

  • MS Windows EVTX(EVTX、XML 和 JSONL 格式)
  • Auditd 日志
  • Sysmon for Linux 日志
  • EVTXtract
  • CSV 和 XML 日志
  • JSON 数组日志

主要特性

  • 自动日志类型检测:使用魔数、内容分析和基于正则表达式的回退机制自动识别日志格式和时间戳字段——在大多数情况下无需指定格式参数。
  • 多种输入格式:支持多种日志格式,包括 EVTX、JSON Lines、JSON 数组、CSV、XML 等。支持压缩或归档日志(gzip、bzip2、ZIP、7-Zip);对于加密的 ZIP/7z,请使用 --archive-password
  • 原生 Sigma 支持:Zircolite 可以通过 pySigma 转换后直接使用原生 Sigma 规则(YAML)。
  • SIGMA 后端:它基于 SIGMA 后端(SQLite),不使用内部 SIGMA 到某格式的转换。
  • 高级日志处理:它可以通过拆分字段和应用转换来处理输入日志,从而实现更灵活、更强大的日志分析。
  • 字段转换:在处理过程中对字段应用自定义 Python 转换(例如 Base64 解码、十六进制转 ASCII)。
  • 灵活导出:Zircolite 可以使用 Jinja 模板 将结果导出为多种格式,包括 JSON、CSV、JSONL、Splunk、Elastic、OpenSearch、Timesketch、SARIF、ATT&CK Navigator 等。
  • 丰富的终端输出:检测结果以按严重程度排序的表格显示,包含 MITRE ATT&CK 技术 ID、ATT&CK 战术热力图、规则覆盖率指标和可点击的输出文件链接。

你可以直接使用 Python 运行 Zircolite。

文档可在此处(专用网站)或此处(仓库目录)获取。

要求 / 安装

该项目已在 Python 3.10 及以上版本中测试。使用以下命令安装依赖:pip3 install -r requirements.txt

依赖项

  • 必需orjsonxxhashrichrich-argparseRestrictedPythonrequestsurllib3pySigmaevtx (pyevtx-rs)、jinja2lxmlchardetpsutilpyyamlpy7zr
  • 仅在打开 .7z 输入时才会导入 py7zr;ZIP、gzip 和 bzip2 使用标准库。

⚠️ 在某些系统(Mac、ARM 等)上,evtx Python 库可能需要安装 Rust 和 Cargo。

快速开始

查看此处由其他人编写的(旧版)教程(英文、西班牙文和法文)。

EVTX 文件

使用以下命令查看帮助:

python3 zircolite.py -h

如果您的 EVTX 文件扩展名为 ".evtx":

# python3 zircolite.py --evtx <EVTX FOLDER or EVTX FILE> --ruleset <SIGMA RULESET> [--ruleset <OTHER RULESET>]
python3 zircolite.py --evtx sysmon.evtx --ruleset rules/rules_windows_merged.json

使用原生 Sigma 规则(YAML)

您可以直接使用原生 Sigma 规则(YAML):

# Single YAML rule
python3 zircolite.py --evtx sample.evtx --ruleset path/to/rule.yml

# Directory of Sigma rules
python3 zircolite.py --evtx sample.evtx --ruleset ./sigma/rules/windows/process_creation

# With pySigma pipelines
python3 zircolite.py --evtx sample.evtx --ruleset rule.yml --pipeline sysmon --pipeline windows-logsources

其他日志格式

Zircolite 在大多数情况下会自动检测日志格式,因此显式格式参数是可选的:

# Auto-detection (recommended) - Zircolite identifies the format automatically
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json
python3 zircolite.py --events sysmon.log --ruleset rules/rules_linux.json
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json

# Explicit format flags (override auto-detection)
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json --auditd
python3 zircolite.py --events sysmon.log --ruleset rules/rules_linux.json --sysmon4linux
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --jsononly
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --json-array
python3 zircolite.py --events <CSV_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --csv-input
python3 zircolite.py --events <XML_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --xml-input
  • --events 参数可以是文件或文件夹。如果是文件夹,将选择当前文件夹及子文件夹中的所有日志文件(使用 --no-recursion 可禁用)。
  • 使用 --file-pattern 指定用于文件选择的自定义 glob 模式。
  • 使用 --no-auto-detect 可禁用自动格式检测。

[!TIP] 如果您想试用该工具,可以使用 EVTX-ATTACK-SAMPLES(EVTX 文件)进行测试。

使用 Docker 运行

# Pull the Docker image
docker pull wagga40/zircolite:latest
# If your logs and rules are in a specific directory
docker run --rm --tty \
    -v $PWD:/case/input:ro \
    -v $PWD:/case/output \
    wagga40/zircolite:latest \
    -e /case/input \
    -o /case/output/detected_events.json \
    -r /case/input/a_sigma_rule.yml
  • 请将 $PWD 替换为存储日志和规则/规则集的目录(仅限绝对路径)。

自动处理优化

当有多个文件时,Zircolite 会根据可用 RAM 和 CPU 对它们进行评估,选择数据库模式(一个共享数据库,或每个文件一个),并决定是否值得并行处理——然后在运行过程中根据内存压力调整工作线程数量。

python3 zircolite.py --evtx ./logs/ --ruleset rules/rules_windows_merged.json

可以使用 --no-auto-mode--unified-db(所有文件共用一个数据库,这是跨文件关联规则所必需的)、--no-parallel--parallel-workers N 来覆盖上述任何功能。有关如何做出选择,请参阅自动处理优化

使用 YAML 配置文件

对于复杂或重复的分析工作流程,请使用 YAML 配置文件:

# Generate a fully commented configuration file
python3 zircolite.py --generate-config my_config.yaml

# Run with it
python3 zircolite.py --yaml-config my_config.yaml

# CLI arguments override the file
python3 zircolite.py --yaml-config my_config.yaml --evtx ./other_logs/

生成的文件记录了所有支持的键;config/zircolite_example.yaml 是一个实用示例。有关合并规则和没有 YAML 对应项的选项,请参阅 YAML 配置

更新默认规则集

python3 zircolite.py -U

或者,如果您使用 Task (go-task),请在项目根目录运行 task update-rules 来更新来自 Zircolite-Rules-v2 的规则。其他任务(Docker 构建、清理等)请参阅文档

[!IMPORTANT]
请注意,提供这些规则集是为了让 Zircolite 开箱即用,但您应该生成自己的规则集,因为它们可能会产生噪音或运行缓慢。这些自动更新的规则集可在专用仓库中获取:Zircolite-Rules-v2

字段拆分与转换

config/config.yaml 中有两个配置功能会在事件摄入时对其进行处理:

  • 字段拆分将打包的键值字段转换为可查询的字段。Sysmon 的 Hashes 字段(SHA1=abc123,MD5=def456,SHA256=789xyz)会变成独立的 SHA1MD5SHA256 字段,因此规则可以直接匹配哈希值。
  • 字段转换对字段值运行沙箱化 Python——解码 base64 命令行、提取 IOC、标记 LOLBins——并可将结果写入新字段而不是替换原始字段。Zircolite 内置了 55 个转换,涵盖 11 个类别,除两个 auditd 转换外默认关闭。
split:
  Hashes:
    separator: ","
    equal: "="

有关完整配置、Zircolite 内置的转换以及如何测试您自己的转换,请参阅字段拆分字段转换

文档

完整文档可在此处获取。

迷你 GUI

迷你 GUI 可以完全离线使用。它允许您显示和搜索结果。您可以使用 --package 选项自动生成迷你 GUI“包”。使用 --package-dir 指定输出目录。要了解如何使用迷你 GUI,请查看此处的文档。

按 MITRE ATT&CK® 技术和严重性级别统计的检测事件

检测事件时间线

在矩阵上显示的按 MITRE ATT&CK® 技术统计的检测事件

教程、参考资料和相关项目

教程

参考资料


许可证


分类