目录导航
hayabusa简介
Hayabusa 是由日本Yamato 安全小组创建的Windows 事件日志快速取证时间线生成器和威胁搜寻工具。Hayabusa 在日语中的意思是“游隼”,之所以选中Hayabusa是因为游隼是世界上跑得最快的动物,擅长狩猎且易于训练。它是用Rust编写的,并支持多线程,以便尽可能快。我们提供了一个将Sigma规则转换为 Hayabusa 规则格式的工具。与 Sigma 兼容的 Hayabusa 检测规则是用 YML 编写的,以便尽可能轻松地定制和扩展。
Hayabusa 可以在单个运行系统上运行以进行实时分析,通过从单个或多个系统收集日志进行离线分析,或者通过 Velociraptor 运行Hayabusa工件以进行企业范围的威胁搜寻和事件响应。输出将合并到单个 CSV 时间线中,以便在LibreOffice、Timeline Explorer、Elastic Stack、Timesketch等中轻松分析…
配套项目
- EnableWindowsLogSettings – 用于正确启用 Windows 事件日志的文档和脚本。
- Hayabusa Rules – 隼鸟的检测规则。
- Hayabusa Sample EVTXs – 用于测试 hayabusa/sigma 检测规则的示例 evtx 文件。
- Takajo – hayabusa 结果分析器。
- WELA(Windows 事件日志分析器) – 用 PowerShell 编写的 Windows 事件日志分析器。
主要目标
威胁追踪和企业范围的 DFIR
Hayabusa 目前拥有超过 2500 条 Sigma 规则和超过 150 条 Hayabusa 内置检测规则,并且会定期添加更多规则。它可用于企业范围内的主动威胁搜寻以及免费的 DFIR(数字取证和事件响应)以及Velociraptor的Hayabusa 工件。通过结合这两个开源工具,当环境中没有 SIEM 设置时,您基本上可以追溯地重现 SIEM。您可以通过观看Eric Capuano的 Velociraptor 演练来了解如何执行此操作。
DFIR 是数字取证与响应(Digital Forensics and Incident Response)的缩写。这是一种涉及到计算机系统、网络和数字数据调查的领域,主要目的是发现、分析和应对计算机安全事件,包括数据泄露、网络攻击、恶意软件感染等。
具体来说,DFIR 包括以下两个主要方面:
- 数字取证(Digital Forensics): 这部分关注在计算机系统、存储介质和网络中寻找数字证据,以还原或重建事件的过程。数字取证专业人员使用一系列技术和工具来收集、保护、分析和呈现数字证据,以确定发生了什么事件、如何发生以及涉及的相关方。
- 事件响应(Incident Response): 这方面关注在发生安全事件时,采取迅速、协调的措施来减轻损害、保护系统和数据。事件响应团队会使用各种技术和方法来检测、隔离和应对潜在的安全威胁。响应措施可能包括隔离受感染的系统、清除恶意软件、修补安全漏洞等。
DFIR 的过程通常包括以下关键步骤:
- 准备: 确定并建立一个有效的取证与响应计划,包括人员培训、工具和流程。
- 检测: 监视网络和系统,发现潜在的安全事件或异常活动。
- 取证: 收集数字证据,包括文件、日志、网络流量等,以了解事件的性质和范围。
- 分析: 对收集到的数字证据进行深入分析,以确定攻击方式、攻击者的目标和使用的工具。
- 响应: 采取必要的措施,隔离感染的系统,清除恶意软件,修补漏洞,并制定防止类似事件再次发生的计划。
- 报告: 生成报告,总结调查的结果、采取的措施和建议,供相关利益方参考。
DFIR 在当今复杂的网络环境中变得越来越重要,对于及时应对和解决安全事件至关重要。
快速取证时间线生成
传统上,Windows 事件日志分析是一个非常漫长且乏味的过程,因为 Windows 事件日志
1) 采用难以分析的数据格式。
2) 大部分数据都是噪音,对调查没有用处。
Hayabusa 的目标是只提取有用的数据,并以尽可能简洁、易于阅读的格式呈现,不仅可供受过专业培训的分析师使用,而且任何 Windows 系统管理员都可以使用。
与传统的 Windows 事件日志分析相比,Hayabusa 希望让分析师在 20% 的时间内完成 80% 的工作。

截图
启动

DFIR 时间轴终端输出

关键字搜索结果

检测频率时间线(-T
选项)

结果总结

HTML 结果摘要(-H
选项)



LibreOffice 中的 DFIR 时间线分析(-M
多行输出)

时间线资源管理器中的 DFIR 时间线分析

时间线资源管理器中的关键警报过滤和计算机分组

使用 Elastic Stack 仪表板进行分析


Timesketch 中的分析

导入和分析时间线结果
您可以在此处了解如何在 Excel 和时间线资源管理器中分析 CSV 时间线。
您可以在此处了解如何将 CSV 文件导入 Elastic Stack 。
您可以在此处了解如何将 CSV 文件导入 Timesketch 。
使用 JQ 分析 JSON 格式的结果
jq
您可以在此处了解如何分析 JSON 格式的结果。
特征
- 跨平台支持:Windows、Linux、macOS。
- 用 Rust 开发,内存安全且快速。
- 多线程支持可将速度提高多达 5 倍。
- 为取证调查和事件响应创建单一的易于分析的时间表。
- 基于 IoC 签名的威胁狩猎,这些签名以易于阅读/创建/编辑的基于 YML 的 hayabusa 规则编写。
- Sigma 规则支持将 sigma 规则转换为 hayabusa 规则。
- 目前,与其他类似工具相比,它支持最多的 sigma 规则,甚至支持计数规则和新聚合器,例如
|equalsfield
和|endswithfield
。 - 计算机指标。(对于过滤掉某些具有大量事件的计算机很有用。)
- 事件 ID 指标。(对于了解事件类型以及调整日志设置很有用。)
- 通过排除不需要的或嘈杂的规则来调整规则配置。
- MITRE ATT&CK 战术映射。
- 规则级别调整。
- 创建独特的关键关键字列表,以快速识别异常用户、主机名、进程等……以及关联事件。
- 输出所有字段以进行更彻底的调查。
- 成功和失败的登录摘要。
- 使用Velociraptor在所有端点上进行企业范围的威胁追踪和 DFIR 。
- 输出为 CSV、JSON/JSONL 和 HTML 摘要报告。
- 每日西格玛规则更新。
- 支持JSON格式的日志输入。
- 日志字段标准化。(将具有不同命名约定的多个字段转换为相同的字段名称。)
- 通过将 GeoIP(ASN、城市、国家)信息添加到 IP 地址来丰富日志。
- 在所有事件中搜索关键字或正则表达式。
- 现场数据映射。(例如:
0xc0000234
->ACCOUNT LOCKED
) - 从 evtx 松弛空间雕刻 Evtx 记录。
- 输出时事件去重。(当启用恢复记录或包含备份的 evtx 文件、来自 VSS 的 evtx 文件等时很有用…)
- 扫描设置向导可帮助您更轻松地选择要启用的规则。(为了减少误报等…)
- PowerShell经典日志字段解析和提取。
下载
请下载最新稳定版本的 Hayabusa 及其编译的二进制文件,或从发布页面编译源代码。
Git 克隆
您可以git clone
使用以下命令创建存储库并从源代码编译二进制文件:
警告:存储库的主要分支用于开发目的,因此您可能能够访问尚未正式发布的新功能,但是,可能存在错误,因此请考虑它不稳定。
git clone https://github.com/Yamato-Security/hayabusa.git --recursive
注意:如果您忘记使用 –recursive 选项,则
rules
作为 git 子模块管理的文件夹将不会被克隆。
您可以使用以下命令同步rules
文件夹并获取最新的 Hayabusa 规则:
git pull --recurse-submodules
hayabusa.exe update-rules
如果更新失败,您可能需要重命名该rules
文件夹并重试。
注意:更新时,文件夹中的规则和配置文件将替换为hayabusa-rules
rules
存储库中的最新规则和配置文件。您对现有文件所做的任何更改都将被覆盖,因此我们建议您在更新之前对编辑的任何文件进行备份。如果您使用 执行级别调整,请在每次更新后重新调整您的规则文件。如果您在文件夹内添加新规则,则更新时它们不会被覆盖或删除。level-tuning
rules
高级:从源代码编译(可选)
如果安装了 Rust,则可以使用以下命令从源代码进行编译:
注意:要编译,您通常需要最新版本的 Rust。
cargo build --release
您可以从主分支下载最新的不稳定版本,或者从发布页面下载最新的稳定版本。
请务必定期更新 Rust:
rustup update stable
编译后的二进制文件将输出到该./target/release
文件夹中。
更新 Rust 包
您可以在编译之前更新到最新的 Rust crate:
cargo update
更新后如果出现任何问题,请告诉我们。
交叉编译 32 位 Windows 二进制文件
您可以使用以下命令在 64 位 Windows 系统上创建 32 位二进制文件:
rustup install stable-i686-pc-windows-msvc
rustup target add i686-pc-windows-msvc
rustup run stable-i686-pc-windows-msvc cargo build --release
警告:请务必在 Rust 有新的稳定版本时运行
rustup install stable-i686-pc-windows-msvc
,因为rustup update stable
不会更新编译器以进行交叉编译,并且您可能会收到构建错误。
macOS 编译笔记
如果收到有关 openssl 的编译错误,则需要安装Homebrew,然后安装以下软件包:
brew install pkg-config
brew install openssl
Linux编译笔记
如果收到有关 openssl 的编译错误,则需要安装以下软件包。
基于 Ubuntu 的发行版:
sudo apt install libssl-dev
基于 Fedora 的发行版:
sudo yum install openssl-devel
交叉编译 Linux MUSL 二进制文件
在 Linux 操作系统上,首先安装目标。
rustup install stable-x86_64-unknown-linux-musl
rustup target add x86_64-unknown-linux-musl
编译:
cargo build --release --target=x86_64-unknown-linux-musl
警告:请务必在 Rust 有新的稳定版本时运行
rustup install stable-x86_64-unknown-linux-musl
,因为rustup update stable
不会更新编译器以进行交叉编译,并且您可能会收到构建错误。
MUSL 二进制文件将在该目录中创建./target/x86_64-unknown-linux-musl/release/
。MUSL 二进制文件比 GNU 二进制文件慢大约 15%,但是,它们在 Linux 的不同版本和发行版之间更易于移植。
运行隼鸟
扫描向导
现在,像csv-timeline
和这样的命令json-timeline
默认启用扫描向导。此举旨在帮助用户根据自己的需求和偏好轻松选择想要启用的检测规则。要加载的检测规则集基于 Sigma 项目中的官方列表。这篇博文中解释了详细信息。您可以通过添加选项轻松关闭向导并以传统方式使用 Hayabusa -w, --no-wizard
。
核心规则
规则core
集启用状态为test
或stable
且级别为high
或 的规则critical
。这些是具有高置信度和相关性的高质量规则,不应产生许多误报。规则状态为test
或stable
,这意味着超过 6 个月没有报告误报。规则将匹配攻击者技术、一般可疑活动或恶意行为。这与使用选项相同--exclude-status deprecated,unsupported,experimental --min-level high
。
核心+规则
规则core+
集启用状态为test
或stable
且级别为medium
或更高的规则。 medium
规则通常需要额外调整,因为某些应用程序、合法用户行为或组织的脚本可能会匹配。这与使用选项相同--exclude-status deprecated,unsupported,experimental --min-level medium
。
核心++规则
规则core++
集启用状态为experimental
、test
或stable
且级别为medium
或更高的规则。这些规则是前沿的。它们根据 SigmaHQ 项目中提供的基线 evtx 文件进行验证,并由多名检测工程师进行审核。除此之外,它们一开始几乎未经测试。如果您希望能够尽早检测到威胁,但要以管理更高的误报阈值为代价,请使用这些方法。这与使用选项相同--exclude-status deprecated,unsupported --min-level medium
。
新兴威胁 (ET) 附加规则
规则Emerging Threats (ET)
集启用具有标签 的规则detection.emerging_threats
。这些规则针对特定威胁,对于目前还没有太多信息可用的威胁特别有用。这些规则不应有太多误报,但随着时间的推移,相关性会降低。当这些规则未启用时,与使用该选项相同--exclude-tag detection.emerging_threats
。当传统上在没有向导的情况下运行 Hayabusa 时,默认情况下将包含这些规则。
威胁追踪 (TH) 附加规则
规则Threat Hunting (TH)
集启用具有标签 的规则detection.threat_hunting
。这些规则可以检测未知的恶意活动,但是通常会产生更多误报。当这些规则未启用时,与使用该选项相同--exclude-tag detection.threat_hunting
。当传统上在没有向导的情况下运行 Hayabusa 时,默认情况下将包含这些规则。
注意:防病毒/EDR 警告和运行速度慢
当您尝试运行 hayabusa 时,甚至只是在下载规则时,您可能会收到来自防病毒或 EDR 产品的警报,因为检测签名中.yml
会有诸如 和 可疑 PowerShell 命令之类的关键字。mimikatz
这些都是误报,因此需要在安全产品中配置排除项以允许 hayabusa 运行。如果您担心恶意软件或供应链攻击,请检查 hayabusa 源代码并自行编译二进制文件。
由于 Windows Defender 的实时保护,您可能会遇到运行速度缓慢的情况,尤其是在重新启动后的首次运行时。您可以通过暂时关闭实时保护或向 hayabusa 运行时目录添加排除项来避免这种情况。(在执行这些操作之前请考虑安全风险。)
Windows
在命令/PowerShell 提示符或 Windows 终端中,只需运行适当的 32 位或 64 位 Windows 二进制文件。
尝试扫描路径中包含空格的文件或目录时出错
在 Windows 中使用内置命令或 PowerShell 提示符时,如果文件或目录路径中有空格,您可能会收到一条错误消息,指出 Hayabusa 无法加载任何 .evtx 文件。为了正确加载 .evtx 文件,请务必执行以下操作:
- 用双引号将文件或目录路径括起来。
- 如果它是目录路径,请确保最后一个字符不包含反斜杠。
Linux
您首先需要使二进制可执行文件。
chmod +x ./hayabusa
然后从 Hayabusa 根目录运行它:
./hayabusa
苹果系统
从终端或 iTerm2,您首先需要使二进制可执行文件。
chmod +x ./hayabusa
然后,尝试从 Hayabusa 根目录运行它:
./hayabusa
在最新版本的 macOS 上,当您尝试运行它时可能会收到以下安全错误:

单击“取消”,然后从“系统偏好设置”中打开“安全和隐私”,然后从“常规”选项卡中单击“仍然允许”。

之后,尝试再次运行它。
./hayabusa
会弹出以下警告,请点击“打开”。

您现在应该能够运行 hayabusa。
命令列表
分析命令:
computer-metrics
:根据计算机名称打印事件数。eid-metrics
:根据事件ID打印事件的数量和百分比。logon-summary
:打印登录事件的摘要。pivot-keywords-list
:打印可疑关键字列表以进行分析。search
:通过关键字或正则表达式搜索所有事件
DFIR 时间线命令:
csv-timeline
:将时间线保存为 CSV 格式。json-timeline
:将时间线保存为JSON/JSONL格式。level-tuning
:自定义调整警报’level
。list-profiles
:列出可用的输出配置文件。set-default-profile
:更改默认配置文件。update-rules
:将规则同步到hayabusa-rules GitHub 存储库中的最新规则。
通用命令:
help
:打印此消息或给定子命令的帮助list-contributors
:打印贡献者列表
命令用法
分析命令
computer-metrics
命令
您可以使用该computer-metrics
命令打印出按通道分隔的事件 ID 的总数和百分比。
用法: computer-metrics <输入> [选项]
输入:
-d, --directory <DIR> 包含多个 .evtx 文件的目录
-f, --file <FILE> 单个 .evtx 文件的文件路径
-l, --live-analysis 分析本地 C:\Windows\System32\winevt\Logs 文件夹
-J, --JSON-input 扫描 JSON 格式的日志而不是 .evtx (.json 或 .jsonl)
-x, --recover-records 从空隙空间中提取 evtx 记录(默认: 禁用)
过滤:
--timeline-offset <OFFSET> 基于偏移扫描最近的事件(例如: 1y, 3M, 30d, 24h, 30m)
输出:
-o, --output <FILE> 以 CSV 格式保存结果(例如: computer-metrics.csv)
显示设置:
--no-color 禁用彩色输出
-q, --quiet 安静模式: 不显示启动横幅
-v, --verbose 输出详细信息
常规选项:
-C, --clobber 保存时覆盖文件
-Q, --quiet-errors 安静错误模式: 不保存错误日志
-c, --rules-config <DIR> 指定自定义规则配置目录(默认: ./rules/config)
--target-file-ext <FILE-EXT...> 指定附加的 evtx 文件扩展名(例如: evtx_data)
-t, --threads <NUMBER> 线程数(默认: 优化性能的最佳数)
computer-metrics
命令示例
- 从目录打印计算机名称指标:
hayabusa.exe computer-metrics -d ../logs
- 将结果保存到 CSV 文件:
hayabusa.exe computer-metrics -d ../logs -o computer-metrics.csv
eid-metrics
命令
您可以使用该eid-metrics
命令打印出按通道分隔的事件 ID 的总数和百分比。
用法: eid-metrics <输入> [选项]
输入:
-d, --directory <DIR> 包含多个 .evtx 文件的目录
-f, --file <FILE> 单个 .evtx 文件的文件路径
-l, --live-analysis 分析本地 C:\Windows\System32\winevt\Logs 文件夹
-J, --JSON-input 扫描 JSON 格式的日志而不是 .evtx (.json 或 .jsonl)
-x, --recover-records 从空隙空间中提取 evtx 记录(默认: 禁用)
过滤:
--exclude-computer <COMPUTER...> 不扫描指定的计算机名称(例如: ComputerA)(例如: ComputerA,ComputerB)
--include-computer <COMPUTER...> 仅扫描指定的计算机名称(例如: ComputerA)(例如: ComputerA,ComputerB)
--timeline-offset <OFFSET> 基于偏移扫描最近的事件(例如: 1y, 3M, 30d, 24h, 30m)
输出:
-o, --output <FILE> 以 CSV 格式保存指标(例如: metrics.csv)
显示设置:
--no-color 禁用彩色输出
-q, --quiet 安静模式: 不显示启动横幅
-v, --verbose 输出详细信息
常规选项:
-C, --clobber 保存时覆盖文件
-Q, --quiet-errors 安静错误模式: 不保存错误日志
-c, --rules-config <DIR> 指定自定义规则配置目录(默认: ./rules/config)
--target-file-ext <FILE-EXT...> 指定附加的 evtx 文件扩展名(例如: evtx_data)
-t, --threads <NUMBER> 线程数(默认: 优化性能的最佳数)
时间格式:
--European-time 以欧洲时间格式输出时间戳(例如: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 以 ISO-8601 格式输出时间戳(例如: 2022-02-22T10:10:10.1234567Z)(始终为 UTC)
--RFC-2822 以 RFC 2822 格式输出时间戳(例如: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 以 RFC 3339 格式输出时间戳(例如: 2022-02-22 22:00:00.123456-06:00)
--US-military-time 以美国军事时间格式输出时间戳(例如: 02-22-2022 22:00:00.123 -06:00)
--US-time 以美国时间格式输出时间戳(例如: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC 以 UTC 格式输出时间(默认: 本地时间)
eid-metrics
命令示例
- 从单个文件打印事件 ID 指标:
hayabusa.exe eid-metrics -f Security.evtx
- 从目录打印事件 ID 指标:
hayabusa.exe eid-metrics -d ../logs
- 将结果保存到 CSV 文件:
hayabusa.exe eid-metrics -f Security.evtx -o eid-metrics.csv
eid-metrics
命令配置文件
频道、事件 ID 和事件标题在 中定义rules/config/channel_eid_info.txt
。
例子:
Channel,EventID,EventTitle
Microsoft-Windows-Sysmon/Operational,1,Process Creation.
Microsoft-Windows-Sysmon/Operational,2,File Creation Timestamp Changed. (Possible Timestomping)
Microsoft-Windows-Sysmon/Operational,3,Network Connection.
Microsoft-Windows-Sysmon/Operational,4,Sysmon Service State Changed.
logon-summary
命令
您可以使用该logon-summary
命令输出登录信息摘要(登录用户名以及成功和失败登录计数)。-f
您可以使用该选项显示一个或多个 evtx 文件的登录信息-d
。
用法: logon-summary <输入> [选项]
输入:
-d, --directory <DIR> 包含多个 .evtx 文件的目录
-f, --file <FILE> 单个 .evtx 文件的文件路径
-l, --live-analysis 分析本地 C:\Windows\System32\winevt\Logs 文件夹
-J, --JSON-input 扫描 JSON 格式的日志而不是 .evtx (.json 或 .jsonl)
-x, --recover-records 从空隙空间中提取 evtx 记录(默认: 禁用)
过滤:
--exclude-computer <COMPUTER...> 不扫描指定的计算机名称(例如: ComputerA)(例如: ComputerA,ComputerB)
--include-computer <COMPUTER...> 仅扫描指定的计算机名称(例如: ComputerA)(例如: ComputerA,ComputerB)
--timeline-end <DATE> 事件日志加载的结束时间(例如: "2022-02-22 23:59:59 +09:00")
--timeline-offset <OFFSET> 基于偏移扫描最近的事件(例如: 1y, 3M, 30d, 24h, 30m)
--timeline-start <DATE> 事件日志加载的开始时间(例如: "2020-02-22 00:00:00 +09:00")
输出:
-o, --output <FILENAME-PREFIX> 将登录摘要保存到两个 CSV 文件中 (例如: -o logon-summary)
显示设置:
--no-color 禁用彩色输出
-q, --quiet 安静模式: 不显示启动横幅
-v, --verbose 输出详细信息
常规选项:
-C, --clobber 保存时覆盖文件
-Q, --quiet-errors 安静错误模式: 不保存错误日志
-c, --rules-config <DIR> 指定自定义规则配置目录(默认: ./rules/config)
--target-file-ext <FILE-EXT...> 指定附加的 evtx 文件扩展名(例如: evtx_data)
-t, --threads <NUMBER> 线程数(默认: 优化性能的最佳数)
时间格式:
--European-time 以欧洲时间格式输出时间戳(例如: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 以 ISO-8601 格式输出时间戳(例如: 2022-02-22T10:10:10.1234567Z)(始终为 UTC)
--RFC-2822 以 RFC 2822 格式输出时间戳(例如: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 以 RFC 3339 格式输出时间戳(例如: 2022-02-22 22:00:00.123456-06:00)
--US-military-time 以美国军事时间格式输出时间戳(例如: 02-22-2022 22:00:00.123 -06:00)
--US-time 以美国时间格式输出时间戳(例如: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC 以 UTC 格式输出时间(默认: 本地时间)
logon-summary
命令示例
- 打印登录摘要:
hayabusa.exe logon-summary -f Security.evtx
- 保存登录摘要结果:
hayabusa.exe logon-summary -d ../logs -o logon-summary.csv
pivot-keywords-list
命令
您可以使用该pivot-keywords-list
命令创建唯一的关键关键字列表,以快速识别异常用户、主机名、进程等……以及关联事件。
重要提示:默认情况下,hayabusa 将返回所有事件的结果(信息性事件和更高级别的事件),因此我们强烈建议将该pivot-keywords-list
命令与该-m, --min-level
选项结合使用。例如,首先仅从critical
警报中创建关键字-m critical
,然后继续使用-m high
、-m medium
等…结果中很可能存在与许多正常事件相匹配的常见关键字,因此在手动检查结果并创建列表后单个文件中的唯一关键字,然后您可以使用诸如 之类的命令创建可疑活动的缩小时间线grep -f keywords.txt timeline.csv
。
用法: pivot-keywords-list <输入> [选项]
输入:
-d, --directory <DIR> 包含多个 .evtx 文件的目录
-f, --file <FILE> 单个 .evtx 文件的文件路径
-l, --live-analysis 分析本地 C:\Windows\System32\winevt\Logs 文件夹
-J, --JSON-input 扫描 JSON 格式的日志而不是 .evtx (.json 或 .jsonl)
-x, --recover-records 从空隙空间中提取 evtx 记录(默认: 禁用)
过滤:
-E, --EID-filter 仅扫描常见 EID 以提高速度 (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules 启用状态为过时的规则
-n, --enable-noisy-rules 启用状态为喧闹的规则 (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules 启用状态为不受支持的规则
-e, --exact-level <LEVEL> 仅加载具有特定级别的规则(信息,低,中,高,危急)
--exclude-computer <COMPUTER...> 不扫描指定的计算机名称(例如: ComputerA)(例如: ComputerA,ComputerB)
--exclude-eid <EID...> 为提高速度而不扫描特定的 EID (例如: 1) (例如: 1,4688)
--exclude-status <STATUS...> 根据状态不加载规则 (例如: experimental) (例如: stable,test)
--exclude-tag <TAG...> 不加载具有特定标签的规则 (例如: sysmon)
--include-computer <COMPUTER...> 仅扫描指定的计算机名称(例如: ComputerA)(例如: ComputerA,ComputerB)
--include-eid <EID...> 仅扫描指定的 EID 以提高速度 (例如: 1) (例如: 1,4688)
--include-tag <TAG...> 仅加载具有特定标签的规则 (例如: attack.execution,attack.discovery)
-m, --min-level <LEVEL> 规则加载的最低级别 (默认: 信息)
--timeline-end <DATE> 事件日志加载的结束时间(例如: "2022-02-22 23:59:59 +09:00")
--timeline-offset <OFFSET> 基于偏移扫描最近的事件(例如: 1y, 3M, 30d, 24h, 30m)
--timeline-start <DATE> 事件日志加载的开始时间(例如: "2020-02-22 00:00:00 +09:00")
输出:
-o, --output <FILENAME-PREFIX> 将关键词列表保存到单独的文件中 (例如: PivotKeywords)
显示设置:
--no-color 禁用彩色输出
-q, --quiet 安静模式: 不显示启动横幅
-v, --verbose 输出详细信息
常规选项:
-C, --clobber 保存时覆盖文件
-Q, --quiet-errors 安静错误模式: 不保存错误日志
-c, --rules-config <DIR> 指定自定义规则配置目录(默认: ./rules/config)
--target-file-ext <FILE-EXT...> 指定附加的 evtx 文件扩展名(例如: evtx_data)
-t, --threads <NUMBER> 线程数(默认: 优化性能的最佳数)
pivot-keywords-list
命令示例
- 将枢纽关键字输出到屏幕:
hayabusa.exe pivot-keywords-list -d ../logs -m critical
- 根据关键警报创建关键关键字列表并保存结果。(结果将保存到
keywords-Ip Addresses.txt
、keywords-Users.txt
等…):
hayabusa.exe pivot-keywords-list -d ../logs -m critical -o keywords`
pivot-keywords-list
配置文件
您可以通过编辑自定义要搜索的关键字./rules/config/pivot_keywords.txt
。 此页面为默认设置。
格式为KeywordName.FieldName
. 例如,当创建 列表时Users
,hayabusa 将列出SubjectUserName
、TargetUserName
和User
字段中的所有值。
search
命令
该search
命令将允许您对所有事件进行关键字搜索。(不仅仅是隼鸟检测结果。)这对于确定隼鸟未检测到的事件中是否存在任何证据非常有用。
用法:hayabusa.exe search <INPUT> <--keywords "<KEYWORDS>" OR --regex "<REGEX>"> [OPTIONS]
显示设置:
--no-color 禁用彩色输出
-q, --quiet 静默模式:不显示启动横幅
-v, --verbose 输出详细信息
输入:
-d, --directory <DIR> 包含多个 .evtx 文件的目录
-f, --file <FILE> 单个 .evtx 文件的文件路径
-l, --live-analysis 分析本地 C:\Windows\System32\winevt\Logs 文件夹
-x, --recover-records 从空闲空间刻录 evtx 记录(默认:禁用)
过滤:
-a, --and-logic 使用 AND 逻辑搜索关键字(默认:OR)
-F, --filter <FILTER...> 按特定字段过滤
-i, --ignore-case 不区分大小写进行关键字搜索
-k, --keyword <KEYWORD...> 按关键字搜索
-r, --regex <REGEX> 按正则表达式搜索
--timeline-offset <OFFSET> 基于偏移量扫描最近的事件(例如:1y、3M、30d、24h、30m)
输出:
-J, --JSON-output 以 JSON 格式保存搜索结果(例如:-J -o results.json)
-L, --JSONL-output 以 JSONL 格式保存搜索结果(例如:-L -o results.jsonl)
-M, --multiline 在多行中输出事件字段信息
-o, --output <FILE> 以 CSV 格式保存搜索结果(例如:search.csv)
常规选项:
-C, --clobber 保存时覆盖文件
-Q, --quiet-errors 静默错误模式:不保存错误日志
-c, --rules-config <DIR> 指定自定义规则配置目录(默认:./rules/config)
--target-file-ext <FILE-EXT...> 指定额外的 evtx 文件扩展名(例如:evtx_data)
-t, --threads <NUMBER> 线程数(默认:性能的最佳数量)
时间格式:
--European-time 以欧洲时间格式输出时间戳(例如:22-02-2022 22:00:00.123 +02:00)
--ISO-8601 以 ISO-8601 格式输出时间戳(例如:2022-02-22T10:10:10.1234567Z)(始终为 UTC)
--RFC-2822 以 RFC 2822 格式输出时间戳(例如:Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 以 RFC 3339 格式输出时间戳(例如:2022-02-22 22:00:00.123456-06:00)
--US-military-time 以美国军事时间格式输出时间戳(例如:02-22-2022 22:00:00.123 -06:00)
--US-time 以美国时间格式输出时间戳(例如:02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC 以 UTC 格式输出时间(默认:本地时间)
search
命令示例
- 在目录中搜索
../hayabusa-sample-evtx
关键字mimikatz
:
hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz"
mimikatz
注意:如果在数据中的任何位置找到关键字,则该关键字将匹配。这不是完全匹配。
- 在目录中搜索
../hayabusa-sample-evtx
关键字mimikatz
或kali
:
hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz" -k "kali"
- 在目录中搜索
../hayabusa-sample-evtx
关键字mimikatz
并忽略大小写:
hayabusa.exe search -d ../hayabusa-sample-evtx -k "mimikatz" -i
- 使用正则表达式在目录中搜索
../hayabusa-sample-evtx
IP 地址:
hayabusa.exe search -d ../hayabusa-sample-evtx -r "(?:[0-9]{1,3}\.){3}[0-9]{1,3}"
- 搜索
../hayabusa-sample-evtx
目录并显示该WorkstationName
字段所在的所有事件kali
:
hayabusa.exe search -d ../hayabusa-sample-evtx -r ".*" -F WorkstationName:"kali"
注意:
.*
是匹配每个事件的正则表达式。
search
命令配置文件
./rules/config/channel_abbreviations.txt
:通道名称及其缩写的映射。
DFIR 时间轴命令
csv-timeline
命令
该csv-timeline
命令将以 CSV 格式创建事件的取证时间线。
用法:csv-timeline <INPUT> [OPTIONS]
输入:
-d, --directory <DIR> 包含多个 .evtx 文件的目录
-f, --file <FILE> 单个 .evtx 文件的文件路径
-l, --live-analysis 分析本地 C:\Windows\System32\winevt\Logs 文件夹
-J, --JSON-input 扫描 JSON 格式的日志而不是 .evtx(.json 或 .jsonl)
-x, --recover-records 从空闲空间刻录 evtx 记录(默认:禁用)
过滤:
-E, --EID-filter 仅扫描常见的 EID 以提高速度(./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules 启用状态为已弃用的规则
-n, --enable-noisy-rules 启用标记为喧闹的规则(./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules 启用状态为不支持的规则
-e, --exact-level <LEVEL> 仅加载具有特定级别的规则(信息,低,中,高,关键)
--exclude-category <CATEGORY...> 不加载具有指定的日志源类别的规则(例如:process_creation,pipe_created)
--exclude-computer <COMPUTER...> 不扫描指定的计算机名(例如:ComputerA)(例如:ComputerA,ComputerB)
--exclude-eid <EID...> 不扫描特定的 EID 以提高速度(例如:1)(例如:1,4688)
--exclude-status <STATUS...> 根据状态不加载规则(例如:experimental)(例如:stable,test)
--exclude-tag <TAG...> 不加载具有特定标签的规则(例如:sysmon)
--include-category <CATEGORY...> 仅加载具有指定的日志源类别的规则(例如:process_creation,pipe_created)
--include-computer <COMPUTER...> 仅扫描指定的计算机名(例如:ComputerA)(例如:ComputerA,ComputerB)
--include-eid <EID...> 仅扫描指定的 EID 以提高速度(例如:1)(例如:1,4688)
--include-tag <TAG...> 仅加载具有特定标签的规则(例如:attack.execution,attack.discovery)
-m, --min-level <LEVEL> 规则加载的最小级别(默认:信息)
-P, --proven-rules 仅扫描经验证的规则以提高速度(./rules/config/proven_rules.txt)
--timeline-end <DATE> 要加载的事件日志的结束时间(例如:"2022-02-22 23:59:59 +09:00")
--timeline-offset <OFFSET> 基于偏移量扫描最近的事件(例如:1y,3M,30d,24h,30m)
--timeline-start <DATE> 要加载的事件日志的开始时间(例如:"2020-02-22 00:00:00 +09:00")
输出:
-G, --GeoIP <MAXMIND-DB-DIR> 将 GeoIP(ASN、城市、国家)信息添加到 IP 地址
-H, --HTML-report <FILE> 将结果摘要详细信息保存到 HTML 报告中(例如:results.html)
-M, --multiline 在多行中输出事件字段信息
-F, --no-field-data-mapping 禁用字段数据映射
--no-pwsh-field-extraction 禁用 PowerShell 经典日志的字段提取
-o, --output <FILE> 以 CSV 格式保存时间轴(例如:results.csv)
-p, --profile <PROFILE> 指定输出配置文件
-R, --remove-duplicate-data 重复的字段数据将被替换为 "DUP"
-X, --remove-duplicate-detections 删除重复的检测(默认:禁用)
显示设置:
--no-color 禁用彩色输出
-N, --no-summary 不显示结果摘要以提高速度
-q, --quiet 静默模式:不显示启动横幅
-v, --verbose 输出详细信息
-T, --visualize-timeline 输出事件频率时间轴(终端需要支持 Unicode)
常规选项:
-C, --clobber 保存时覆盖文件
-w, --no-wizard 不提问。扫描所有事件和警报
-Q, --quiet-errors 静默错误模式:不保存错误日志
-r, --rules <DIR/FILE> 指定自定义规则目录或文件(默认:./rules)
-c, --rules-config <DIR> 指定自定义规则配置目录(默认:./rules/config)
--target-file-ext <FILE-EXT...> 指定额外的 evtx 文件扩展名(例如:evtx_data)
-t, --threads <NUMBER> 线程数(默认:性能的最佳数量)
时间格式:
--European-time 以欧洲时间格式输出时间戳(例如:22-02-2022 22:00:00.123 +02:00)
--ISO-8601 以 ISO-8601 格式输出时间戳(例如:2022-02-22T10:10:10.1234567Z)(始终为 UTC)
--RFC-2822 以 RFC 2822 格式输出时间戳(例如:Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 以 RFC 3339 格式输出时间戳(例如:2022-02-22 22:00:00.123456-06:00)
--US-military-time 以美国军事时间格式输出时间戳(例如:02-22-2022 22:00:
00.123 -06:00)
--US-time 以美国时间格式输出时间戳(例如:02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC 以 UTC 格式输出时间(默认:本地时间)
csv-timeline
命令示例
- 使用默认配置文件针对一个 Windows 事件日志文件运行 hayabusa
standard
:
hayabusa.exe csv-timeline -f eventlog.evtx
- 针对具有详细配置文件的多个 Windows 事件日志文件的 Sample-evtx 目录运行 hayabusa:
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -p verbose
- 导出到单个 CSV 文件,以便使用 LibreOffice、Timeline Explorer、Elastic Stack 等进行进一步分析…并包含所有字段信息(警告:您的文件输出大小将随着配置文件变得更大
super-verbose
!):
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -o results.csv -p super-verbose
- 启用 EID(事件 ID)过滤器:
注意:在我们的测试中,启用 EID 过滤器将使分析速度加快约 10-15%,但可能会丢失警报。
hayabusa.exe csv-timeline -E -d .\hayabusa-sample-evtx -o results.csv
- 只运行hayabusa规则(默认是运行 中的所有规则
-r .\rules
):
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -r .\rules\hayabusa -o results.csv -w
- 仅对 Windows 上默认启用的日志运行 hayabusa 规则:
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -r .\rules\hayabusa\builtin -o results.csv -w
- 仅对 sysmon 日志运行 hayabusa 规则:
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -r .\rules\hayabusa\sysmon -o results.csv -w
- 仅运行 sigma 规则:
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -r .\rules\sigma -o results.csv -w
- 启用已弃用的规则(标记
status
为 的规则deprecated
)和嘈杂的规则(规则 ID 在 中列出的规则.\rules\config\noisy_rules.txt
):
注意:最近,已弃用的规则现在位于 sigma 存储库中的单独目录中,因此默认情况下不再包含在 Hayabusa 中。因此,您可能不需要启用已弃用的规则。
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx --enable-noisy-rules --enable-deprecated-rules -o results.csv -w
- 仅运行规则来分析 UTC 时区的登录和输出:
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -r .\rules\hayabusa\builtin\Security\LogonLogoff\Logon -U -o results.csv -w
- 在实时 Windows 计算机上运行(需要管理员权限)并且仅检测警报(潜在的恶意行为):
hayabusa.exe csv-timeline -l -m low
- 打印详细信息(可用于确定哪些文件需要较长时间处理、解析错误等……):
hayabusa.exe csv-timeline -d .\hayabusa-sample-evtx -v
- 详细输出示例:
加载规则:
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_run_folder.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_execution_mssql_xp_cmdshell_stored_procedure.yml
Loaded rule: rules/sigma/builtin/deprecated/proc_creation_win_susp_squirrel_lolbin.yml
Loaded rule: rules/sigma/builtin/win_alert_mimikatz_keywords.yml
扫描过程中出现错误:
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58471
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Rdms-UI%4Operational.evtx
Error: Failed to parse record number 58470
[ERROR] Failed to parse event file.
EventFile: ../logs/Microsoft-Windows-AppxPackaging%4Operational.evtx
Error: An error occurred while trying to serialize binary xml to output.
- 输出为兼容导入Timesketch 的CSV 格式:
hayabusa.exe csv-timeline -d ../hayabusa-sample-evtx --RFC-3339 -o timesketch-import.csv -p timesketch -U
- 安静错误模式:默认情况下,hayabusa 会将错误消息保存到错误日志文件中。如果您不想保存错误消息,请添加
-Q
.
高级 – GeoIP 日志丰富
您可以使用免费的 GeoLite2 地理定位数据将 GeoIP(ASN 组织、城市和国家)信息添加到 SrcIP(源 IP)字段和 TgtIP(目标 IP)字段。
脚步:
- 首先在此处注册 MaxMind 帐户。
- 从下载页面下载
.mmdb
这三个文件并将它们保存到一个目录中。文件名应称为GeoLite2-ASN.mmdb
、GeoLite2-City.mmdb
和GeoLite2-Country.mmdb
. - 运行
csv-timeline
或json-timeline
命令时,添加-G
选项,后跟 MaxMind 数据库的目录。
- 使用时
csv-timeline
,会额外输出以下 6 列:SrcASN
,SrcCity
,SrcCountry
,TgtASN
,TgtCity
,TgtCountry
。 - 当
json-timeline
使用 时,相同的SrcASN
,SrcCity
,SrcCountry
,TgtASN
,TgtCity
,TgtCountry
字段将被添加到Details
对象中,但前提是它们包含信息。 - 当
SrcIP
orTgtIP
是 localhost(127.0.0.1
、::1
等…)时,SrcASN
orTgtASN
将输出为Local
. - 当
SrcIP
或TgtIP
是私有 IP 地址(10.0.0.0/8
、fe80::/10
等…)时,SrcASN
或TgtASN
将输出为Private
。
GeoIP 配置文件
包含在 GeoIP 数据库中查找的源和目标 IP 地址的字段名称在 中定义rules/config/geoip_field_mapping.yaml
。如有必要,您可以添加到此列表中。该文件中还有一个过滤器部分,用于确定从哪些事件中提取 IP 地址信息。
GeoIP 数据库自动更新
MaxMind GeoIP 数据库每两周更新一次。您可以在此处安装 MaxMindgeoipupdate
工具,以便自动更新这些数据库。
macOS 上的步骤:
brew install geoipupdate
- 编辑
/usr/local/etc/GeoIP.conf
:输入您登录 MaxMind 网站后创建的内容AccountID
。LicenseKey
确保该EditionIDs
行显示EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
. - 跑步
geoipupdate
。 -G /usr/local/var/GeoIP
当您想要添加 GeoIP 信息时添加。
Windows 上的步骤:
geoipupdate_4.10.0_windows_amd64.zip
从发布页面下载最新的 Windows 二进制文件(例如: ) 。- 编辑
\ProgramData\MaxMind/GeoIPUpdate\GeoIP.conf
:输入您登录 MaxMind 网站后创建的内容AccountID
。LicenseKey
确保该EditionIDs
行显示EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
. - 运行
geoipupdate
可执行文件。
csv-timeline
命令配置文件
./rules/config/channel_abbreviations.txt
:通道名称及其缩写的映射。
./rules/config/default_details.txt
:如果规则中%Details%
没有指定行,则应输出哪些默认字段信息(field)的配置文件。details:
这基于提供商名称和事件 ID。
./rules/config/eventkey_alias.txt
:该文件具有字段的短名称别名与其原始较长字段名称的映射。
例子:
InstanceID,Event.UserData.UMDFHostDeviceArrivalBegin.InstanceId
IntegrityLevel,Event.EventData.IntegrityLevel
IpAddress,Event.EventData.IpAddress
如果此处未定义字段,Hayabusa 将自动检查Event.EventData
该字段。
./rules/config/exclude_rules.txt
:此文件包含将被排除使用的规则 ID 列表。通常这是因为一条规则取代了另一条规则,或者该规则一开始就无法使用。与防火墙和 IDS 一样,任何基于签名的工具都需要进行一些调整以适应您的环境,因此您可能需要永久或暂时排除某些规则。您可以添加规则 ID(示例:4fe151c2-ecf9-4fae-95ae-b88ec9c2fca6
)以./rules/config/exclude_rules.txt
忽略任何不需要或无法使用的规则。
./rules/config/noisy_rules.txt
:此文件列出了默认情况下禁用的规则 ID 列表,但可以通过使用选项启用嘈杂规则来启用-n, --enable-noisy-rules
。这些规则通常本质上是嘈杂的或由于误报而产生的。
./rules/config/target_event_IDs.txt
:如果启用了 EID 过滤器,则仅扫描此文件中指定的事件 ID。默认情况下,Hayabusa 将扫描所有事件,但如果您想提高性能,请使用该-E, --EID-filter
选项。这通常会导致速度提高 10~25%。
json-timeline
命令
该json-timeline
命令将以 JSON 或 JSONL 格式创建事件的取证时间线。输出到 JSONL 比 JSON 更快、文件大小更小,因此如果您打算将结果导入到 Elastic Stack 等其他工具中,那么输出到 JSONL 会很好。如果您要使用文本编辑器手动分析结果,JSON 会更好。CSV 输出非常适合将较小的时间线(通常小于 2GB)导入到 LibreOffice 或 Timeline Explorer 等工具中。JSON 最适合使用诸如分隔字段以便于分析之类的工具对数据(包括大型结果文件)进行更详细的jq
分析Details
。(在 CSV 输出中,所有事件日志字段都位于一大Details
列中,这使得数据排序等变得更加困难。)
用法:json-timeline <INPUT> [OPTIONS]
输入:
-d, --directory <DIR> 包含多个 .evtx 文件的目录
-f, --file <FILE> 单个 .evtx 文件的文件路径
-l, --live-analysis 分析本地 C:\Windows\System32\winevt\Logs 文件夹
-J, --JSON-input 扫描 JSON 格式的日志而不是 .evtx(.json 或 .jsonl)
-x, --recover-records 从空闲空间刻录 evtx 记录(默认:禁用)
过滤:
-E, --EID-filter 仅扫描常见的 EID 以提高速度(./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules 启用状态为已弃用的规则
-n, --enable-noisy-rules 启用标记为喧闹的规则(./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules 启用状态为不支持的规则
-e, --exact-level <LEVEL> 仅加载具有特定级别的规则(信息,低,中,高,关键)
--exclude-category <CATEGORY...> 不加载具有指定的日志源类别的规则(例如:process_creation,pipe_created)
--exclude-computer <COMPUTER...> 不扫描指定的计算机名(例如:ComputerA)(例如:ComputerA,ComputerB)
--exclude-eid <EID...> 不扫描特定的 EID 以提高速度(例如:1)(例如:1,4688)
--exclude-status <STATUS...> 根据状态不加载规则(例如:experimental)(例如:stable,test)
--exclude-tag <TAG...> 不加载具有特定标签的规则(例如:sysmon)
--include-category <CATEGORY...> 仅加载具有指定的日志源类别的规则(例如:process_creation,pipe_created)
--include-computer <COMPUTER...> 仅扫描指定的计算机名(例如:ComputerA)(例如:ComputerA,ComputerB)
--include-eid <EID...> 仅扫描指定的 EID 以提高速度(例如:1)(例如:1,4688)
--include-tag <TAG...> 仅加载具有特定标签的规则(例如:attack.execution,attack.discovery)
-m, --min-level <LEVEL> 规则加载的最小级别(默认:信息)
-P, --proven-rules 仅扫描经验证的规则以提高速度(./rules/config/proven_rules.txt)
--timeline-end <DATE> 要加载的事件日志的结束时间(例如:"2022-02-22 23:59:59 +09:00")
--timeline-offset <OFFSET> 基于偏移量扫描最近的事件(例如:1y,3M,30d,24h,30m)
--timeline-start <DATE> 要加载的事件日志的开始时间(例如:"2020-02-22 00:00:00 +09:00")
输出:
-G, --GeoIP <MAXMIND-DB-DIR> 将 GeoIP(ASN、城市、国家)信息添加到 IP 地址
-H, --HTML-report <FILE> 将结果摘要详细信息保存到 HTML 报告中(例如:results.html)
-L, --JSONL-output 以 JSONL 格式保存时间轴(例如:-L -o results.jsonl)
-F, --no-field-data-mapping 禁用字段数据映射
--no-pwsh-field-extraction 禁用 PowerShell 经典日志的字段提取
-o, --output <FILE> 以 JSON 格式保存时间轴(例如:results.json)
-p, --profile <PROFILE> 指定输出配置文件
-R, --remove-duplicate-data 重复的字段数据将被替换为 "DUP"
-X, --remove-duplicate-detections 删除重复的检测(默认:禁用)
显示设置:
--no-color 禁用彩色输出
-N, --no-summary 不显示结果摘要以提高速度
-q, --quiet 静默模式:不显示启动横幅
-v, --verbose 输出详细信息
-T, --visualize-timeline 输出事件频率时间轴(终端需要支持 Unicode)
常规选项:
-C, --clobber 保存时覆盖文件
-w, --no-wizard 不提问。扫描所有事件和警报
-Q, --quiet-errors 静默错误模式:不保存错误日志
-r, --rules <DIR/FILE> 指定自定义规则目录或文件(默认:./rules)
-c, --rules-config <DIR> 指定自定义规则配置目录(默认:./rules/config)
--target-file-ext <FILE-EXT...> 指定额外的 evtx 文件扩展名(例如:evtx_data)
-t, --threads <NUMBER> 线程数(默认:性能的最佳数量)
时间格式:
--European-time 以欧洲时间格式输出时间戳(例如:22-02-2022 22:00:00.123 +02:00)
--ISO-8601 以 ISO-8601 格式输出时间戳(例如:2022-02-22T10:10:10.1234567Z)(始终为 UTC)
--RFC-2822 以 RFC 2822 格式输出时间戳(例如:Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 以 RFC 3339 格式输出时间戳(例如:2022-02-22 22:00:00.123456-06:00)
--US-military-time 以美国军事时间格式输出时间
戳(例如:02-22-2022 22:00:00.123 -06:00)
--US-time 以美国时间格式输出时间戳(例如:02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC 以 UTC 格式输出时间(默认:本地时间)
json-timeline
命令示例和配置文件
的选项和配置文件与json-timeline
相同,但多了一个用于输出为 JSONL 格式的csv-timeline
选项。-L, --JSONL-output
level-tuning
命令
该level-tuning
命令将允许您调整规则的警报级别,根据您的环境提高或降低风险级别。
Usage: level-tuning [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-f, --file <FILE> Tune alert levels (default: ./rules/config/level_tuning.txt)
level-tuning
命令示例
- 正常使用:
hayabusa.exe level-tuning
- 根据您的自定义配置文件调整规则警报级别:
hayabusa.exe level-tuning -f my_level_tuning.txt
level-tuning
配置文件
Hayabusa 和 Sigma 规则作者将在编写规则时确定警报的风险级别。然而,实际风险级别可能会根据环境而有所不同。您可以通过将规则添加到./rules/config/level_tuning.txt
并执行来调整规则的风险级别hayabusa.exe level-tuning
,这将更新level
规则文件中的行。请注意,规则文件将直接更新。
警告:每次运行时,原始警报级别都会覆盖您更改的任何设置,因此如果您想更改级别,则
update-rules
需要level-tuning
在每次运行后运行该命令。update-rules
./rules/config/level_tuning.txt
样品线:
id,new_level
00000000-0000-0000-0000-000000000000,informational # sample level tuning line
在这种情况下,规则目录中带有id
of 的规则的风险级别将被重写为。可能设置的级别为、、和。00000000-0000-0000-0000-000000000000
level
informational
critical
high
medium
low
informational
list-profiles
命令
用法:list-profiles [OPTIONS]
显示设置:
--no-color 禁用彩色输出
-q, --quiet 静默模式:不显示启动横幅
set-default-profile
命令
用法:set-default-profile [OPTIONS]
显示设置:
--no-color 禁用彩色输出
-q, --quiet 静默模式:不显示启动横幅
常规选项:
-p, --profile <PROFILE> 指定输出配置文件
set-default-profile
命令示例
- 将默认配置文件设置为
minimal
:hayabusa.exe set-default-profile minimal
- 将默认配置文件设置为
super-verbose
:hayabusa.exe set-default-profile super-verbose
update-rules
命令
该update-rules
命令会将rules
文件夹与Hayabusa 规则 github 存储库同步,更新规则和配置文件。
用法:update-rules [OPTIONS]
显示设置:
--no-color 禁用彩色输出
-q, --quiet 静默模式:不显示启动横幅
常规选项:
-r, --rules <DIR/FILE> 指定自定义规则目录或文件(默认:./rules)
update-rules
命令示例
您通常只需执行以下命令:hayabusa.exe update-rules
时间轴输出
输出配置文件
Hayabusa 有 5 个预定义的输出配置文件可用于config/profiles.yaml
:
minimal
standard
(默认)verbose
all-field-info
all-field-info-verbose
super-verbose
timesketch-minimal
timesketch-verbose
您可以通过编辑此文件轻松自定义或添加您自己的配置文件。您还可以使用 轻松更改默认配置文件set-default-profile --profile <profile>
。使用该list-profiles
命令显示可用的配置文件及其字段信息。
1.minimal
配置文件输出
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%
2.standard
配置文件输出
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%
3.verbose
配置文件输出
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
4.all-field-info
配置文件输出
和部分details
中的所有字段信息将与其原始字段名称一起输出,而不是输出最少的信息。EventData
UserData
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
5.all-field-info-verbose
配置文件输出
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
6.super-verbose
配置文件输出
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RuleTitle%, %RuleAuthor%, %RuleModifiedDate%, %Status%, %RecordID%, %Details%, %ExtraFieldInfo%, %MitreTactics%, %MitreTags%, %OtherTags%, %Provider%, %RuleCreationDate%, %RuleFile%, %EvtxFile%
7.timesketch-minimal
配置文件输出
输出为与导入Timesketch兼容的格式。
%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %RuleFile%, %EvtxFile%
8.timesketch-verbose
配置文件输出
%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
简单比较
以下基准测试是在 2018 Lenovo P51(Xeon 4 核 CPU / 64GB RAM)上进行的,启用了 3GB evtx 数据和 3891 条规则。(2023/06/01)
轮廓 | 处理时间 | 输出文件大小 | 文件大小增加 |
---|---|---|---|
最小的 | 8分50秒 | 770MB | -30% |
标准(默认) | 9分00秒 | 1.1GB | 没有任何 |
冗长的 | 9分10秒 | 1.3GB | +20% |
全字段信息 | 9分3秒 | 1.2GB | +10% |
所有字段详细信息 | 9分10秒 | 1.3GB | +20% |
超级冗长 | 9分12秒 | 1.5GB | +35% |
配置文件字段别名
可以使用内置输出配置文件输出以下信息:
别名 | 隼鸟输出信息 |
---|---|
%AllFieldInfo% | 所有字段信息。 |
%Channel% | 日志的名称。<Event><System><Channel> 场地。 |
%Computer% | 场<Event><System><Computer> 。 |
%Details% | details YML检测规则中的字段,但是只有hayabusa规则有这个字段。此字段提供有关警报或事件的额外信息,并且可以从事件日志中的字段中提取有用的数据。例如,用户名、命令行信息、进程信息等……当占位符指向不存在的字段或存在不正确的别名映射时,将输出为n/a (不可用)。如果details 未指定字段(即 sigma 规则),将输出details 提取中定义的字段的默认消息。./rules/config/default_details.txt 您可以details 通过添加Provider Name 和EventID 要details 在 中输出的消息来添加更多默认消息default_details.txt 。details 当规则和 中都没有定义字段时default_details.txt ,所有字段都将输出到该details 列。 |
%ExtraFieldInfo% | 打印%Details%中未输出的字段信息。 |
%EventID% | 场<Event><System><EventID> 。 |
%EvtxFile% | 引起警报或事件的 evtx 文件名。 |
%Level% | level YML检测规则中的字段。( informational , low , medium , high , critical ) |
%MitreTactics% | MITRE ATT&CK策略(例如:初始访问、横向移动等…)。 |
%MitreTags% | MITRE ATT&CK 组 ID、技术 ID 和软件 ID。 |
%OtherTags% | tags YML检测规则中字段中不包含在MitreTactics 或中的任何关键字MitreTags 。 |
%Provider% | Name 字段中的属性<Event><System><Provider> 。 |
%RecordID% | 事件记录 ID<Event><System><EventRecordID> 字段。 |
%RuleAuthor% | author YML检测规则中的字段。 |
%RuleCreationDate% | date YML检测规则中的字段。 |
%RuleFile% | 生成警报或事件的检测规则的文件名。 |
%RuleModifiedDate% | modified YML检测规则中的字段。 |
%RuleTitle% | title YML检测规则中的字段。 |
%Status% | status YML检测规则中的字段。 |
%Timestamp% | 默认为YYYY-MM-DD HH:mm:ss.sss +hh:mm 格式。<Event><System><TimeCreated SystemTime> 事件日志中的字段。默认时区将是本地时区,但您可以使用该--UTC 选项将时区更改为 UTC。 |
额外的配置文件字段别名
如果需要,您还可以将这些额外的别名添加到输出配置文件中:
别名 | 隼鸟输出信息 |
---|---|
%RenderedMessage% | WEC转发日志中的字段<Event><RenderingInfo><Message> 。 |
%RuleID% | id YML检测规则中的字段。 |
注意:这些不包含在任何内置配置文件中,因此您需要手动编辑config/default_profile.yaml
文件并添加以下行:
Message: "%RenderedMessage%"
RuleID: "%RuleID%"
您还可以定义事件键别名来输出其他字段。
级别缩写
为了节省空间,我们在显示警报时使用以下缩写level
。
crit
:critical
high
:high
med
:medium
low
:low
info
:informational
MITRE ATT&CK 战术缩写
为了节省空间,我们在显示 MITRE ATT&CK 战术标签时使用以下缩写。您可以在配置文件中自由编辑这些缩写./config/mitre_tactics.txt
。
Recon
:侦察ResDev
:资源开发InitAccess
:初始访问Exec
: 执行Persis
:坚持PrivEsc
:权限提升Evas
:防御回避CredAccess
:凭证访问Disc
:发现LatMov
:横向运动Collect
: 收藏C2
: 命令与控制Exfil
:渗漏Impact
: 影响
频道缩写
为了节省空间,我们在显示 Channel 时使用以下缩写。您可以在配置文件中自由编辑这些缩写./rules/config/channel_abbreviations.txt
。
App
:Application
AppLocker
:Microsoft-Windows-AppLocker/*
BitsCli
:Microsoft-Windows-Bits-Client/Operational
CodeInteg
:Microsoft-Windows-CodeIntegrity/Operational
Defender
:Microsoft-Windows-Windows Defender/Operational
DHCP-Svr
:Microsoft-Windows-DHCP-Server/Operational
DNS-Svr
:DNS Server
DvrFmwk
:Microsoft-Windows-DriverFrameworks-UserMode/Operational
Exchange
:MSExchange Management
Firewall
:Microsoft-Windows-Windows Firewall With Advanced Security/Firewall
KeyMgtSvc
:Key Management Service
LDAP-Cli
:Microsoft-Windows-LDAP-Client/Debug
NTLM
Microsoft-Windows-NTLM/Operational
OpenSSH
:OpenSSH/Operational
PrintAdm
:Microsoft-Windows-PrintService/Admin
PrintOp
:Microsoft-Windows-PrintService/Operational
PwSh
:Microsoft-Windows-PowerShell/Operational
PwShClassic
:Windows PowerShell
RDP-Client
:Microsoft-Windows-TerminalServices-RDPClient/Operational
Sec
:Security
SecMitig
:Microsoft-Windows-Security-Mitigations/*
SmbCliSec
:Microsoft-Windows-SmbClient/Security
SvcBusCli
:Microsoft-ServiceBus-Client
Sys
:System
Sysmon
:Microsoft-Windows-Sysmon/Operational
TaskSch
:Microsoft-Windows-TaskScheduler/Operational
WinRM
:Microsoft-Windows-WinRM/Operational
WMI
:Microsoft-Windows-WMI-Activity/Operational
其他缩写
规则中使用以下缩写以使输出尽可能简洁:
Acct
-> 账户Addr
-> 地址Auth
-> 身份验证Cli
-> 客户端Chan
-> 频道Cmd
-> 命令Cnt
-> 计数Comp
-> 电脑Conn
-> 连接/已连接Creds
-> 凭证Crit
-> 关键Disconn
-> 断开连接/断开连接Dir
-> 目录Drv
-> 驱动Dst
-> 目的地EID
-> 事件IDErr
-> 错误Exec
-> 执行FW
-> 防火墙Grp
-> 组Img
-> 图片Inj
-> 注射Krb
-> KerberosLID
-> 登录IDMed
-> 中等Net
-> 网络Obj
-> 对象Op
-> 运营/运营Proto
-> 协议PW
-> 密码Reconn
-> 重新连接Req
-> 请求Rsp
-> 回应Sess
-> 会话Sig
-> 签名Susp
-> 可疑Src
-> 来源Svc
-> 服务Svr
-> 服务器Temp
-> 临时Term
-> 终止/终止Tkt
-> 门票Tgt
-> 目标Unkwn
-> 未知Usr
-> 用户Perm
-> 永久Pkg
-> 套餐Priv
-> 特权Proc
-> 流程PID
-> 进程IDPGUID
-> 进程GUID(全局唯一ID)Ver
-> 版本
进度条
进度条仅适用于多个 evtx 文件。它将实时显示已完成分析的 evtx 文件的数量和百分比。
颜色输出
警报将根据警报以颜色输出level
。您可以更改配置文件中的默认颜色,./config/level_color.txt
格式为level,(RGB 6-digit ColorHex)
. 如果你想禁用颜色输出,你可以使用--no-color
选项。
结果总结
每次扫描后都会显示事件总数、命中事件数、数据缩减指标、检测总数和唯一检测、检测次数最多的日期、检测次数最多的计算机以及排名靠前的警报。
检测频率时间线
如果添加该-T, --visualize-timeline
选项,事件频率时间线功能将显示检测到的事件的迷你图频率时间线。注意:需要有5个以上的事件。此外,字符在默认命令提示符或 PowerShell 提示符下无法正确呈现,因此请使用 Windows 终端、iTerm2 等终端…
隼鸟规则
Hayabusa 检测规则以类似 sigma 的 YML 格式编写,位于该rules
文件夹中。这些规则托管在https://github.com/Yamato-Security/hayabusa-rules,因此请在那里发送任何问题并拉取规则请求,而不是发送到主 Hayabusa 存储库。
请阅读hayabusa-rules 存储库自述文件以了解规则格式以及如何创建规则。
hayabusa-rules 存储库中的所有规则都应放置在该rules
文件夹中。 informational
level 规则会被考虑events
,而任何具有level
oflow
和更高级别的规则都会被考虑alerts
。
hayabusa 规则目录结构分为 2 个目录:
builtin
:可由 Windows 内置功能生成的日志。sysmon
:由sysmon生成的日志。
规则按日志类型进一步分为目录(例如:安全、系统等),并按以下格式命名:
请查看当前规则,以用作创建新规则或检查检测逻辑的模板。
Sigma vs Hayabusa(内置 Sigma 兼容)规则
Hayabusa 本身支持 Sigma 规则,但内部处理字段有一个例外logsource
。为了减少误报,西格玛规则应该通过我们此处解释的转换器运行。这将添加适当的Channel
和EventID
,并为某些类别(例如 )执行字段映射process_creation
。
几乎所有 Hayabusa 规则都与 Sigma 格式兼容,因此您可以像 Sigma 规则一样使用它们来转换为其他 SIEM 格式。Hayabusa 规则专为 Windows 事件日志分析而设计,具有以下优点:
- 一个额外
details
字段,用于显示仅从日志中的有用字段获取的附加信息。 - 它们都经过样本日志测试,并且可以正常工作。
- sigma 中未找到的额外聚合器,例如
|equalsfield
和|endswithfield
。
据我们所知,hayabusa 为 sigma 规则提供了所有开源 Windows 事件日志分析工具中最好的本机支持。
其他 Windows 事件日志分析器和相关资源
- AllthingsTimesketch – 将 Plaso 和 Hayabusa 结果导入 Timesketch 的 NodeRED 工作流程.
- APT-Hunter – 用 Python 编写的攻击检测工具。
- Awesome Event IDs – 对数字取证和事件响应有用的事件 ID 资源集合
- Chainsaw – 另一种用 Rust 编写的基于 sigma 的攻击检测工具。
- DeepBlueCLI – 由Eric Conrad用 Powershell 编写的攻击检测工具。
- Epagneul – Windows 事件日志的图形可视化。
- EventList – 将安全基线事件 ID 映射到Miriam Wiesner的 MITRE ATT&CK .
- 使用窗口事件日志 ID 映射 MITRE ATT&CK – 作者:Michel de CREVOISIER
- EvtxECmd -Eric Zimmerman的 Evtx 解析器.
- EVTXtract – 从未分配的空间和内存映像中恢复 EVTX 日志文件。
- EvtxToElk – 用于将 Evtx 数据发送到 Elastic Stack 的 Python 工具。
- EVTX 攻击样本- SBousseaden提供的 EVTX 攻击样本事件日志文件。
- EVTX-to-MITRE-Attack – 由Michel de CREVOISIER映射到 ATT&CK 的 EVTX 攻击示例事件日志文件
- EVTX 解析器– 我们使用的 Rust evtx 库,由@OBenamram编写。
- Grafiki – Sysmon 和 PowerShell 日志可视化工具。
- LogonTracer – 一个图形界面,用于可视化登录以检测JPCERTCC的横向移动。
- NSA Windows 事件监控指南– NSA 关于监控内容的指南。
- RustyBlue – Yamato Security 的 DeepBlueCLI Rust 端口.
- Sigma – 基于社区的通用 SIEM 规则。
- SOF-ELK – 带有 Elastic Stack 的预打包虚拟机,用于导入数据以进行 DFIR 分析,作者:Phil Hagen
- so-import-evtx – 将 evtx 文件导入 Security Onion。
- SysmonTools – Sysmon 的配置和离线日志可视化工具。
- Timeline Explorer – Eric Zimmerman提供的最佳 CSV 时间线分析器。
- Windows 事件日志分析 – 分析师参考– 由 Forward Defense 的 Steve Anson 撰写。
- WELA(Windows 事件日志分析器) – Yamato Security提供的用于 Windows 事件日志的利器
- Zircolite – 用 Python 编写的基于 Sigma 的攻击检测工具。
Windows 日志记录建议
为了正确检测 Windows 计算机上的恶意活动,您需要改进默认日志设置。我们创建了一个单独的项目来记录需要启用哪些日志设置以及自动启用正确设置的脚本,网址为https://github.com/Yamato-Security/EnableWindowsLogSettings。
我们还推荐以下网站作为指导:
Sysmon 相关项目
要创建最具取证性的证据并以最高精度进行检测,您需要安装 sysmon。我们推荐以下站点和配置文件:
- TrustedSec Sysmon 社区指南
- 系统监控模块
- SwiftOnSecurity Sysmon 配置
- Neo23x0 的 SwiftOnSecurity Sysmon 配置分支
- SwiftOnSecurity Sysmon Config 由 ion-storm 分叉
社区文档
英语
- 2023/03/21使用Hayabusa 在事件日志中查找威胁 作者:Eric Capuano
- 2023/03/14 Hayabusa 开发者 Rust 性能指南作者:Fukusuke Takahashi
- 2022/06/19 Velociraptor 演练和 Hayabusa 集成作者:Eric Capuano
- 2022/01/24在 neo4j 中绘制 Hayabusa 结果,作者:Matthew Seyer ( @forensic_matt )
项目地址
github.com/Yamato-Security/hayabusa
下载地址
- hayabusa-2.11.0-all-platforms.zip 48.4 MB
- hayabusa-2.11.0-win-64-bit.zip 26.2 MB
- hayabusa-2.11.0-win-all.zip 29.4 MB
- README-2.11.0-English.pdf
- README-2.11.0-Japanese.pdf
转载请注明出处及链接