hayabusa 威胁搜寻和事件日志的快速取证工具

hayabusa 威胁搜寻和事件日志的快速取证工具

目录导航

hayabusa简介

Hayabusa 是由日本Yamato 安全小组创建的Windows 事件日志快速取证时间线生成器威胁搜寻工具。Hayabusa 在日语中的意思是“游隼”之所以选中Hayabusa是因为游隼是世界上跑得最快的动物,擅长狩猎且易于训练。它是用Rust编写的,并支持多线程,以便尽可能快。我们提供了一个将Sigma规则转换为 Hayabusa 规则格式的工具。与 Sigma 兼容的 Hayabusa 检测规则是用 YML 编写的,以便尽可能轻松地定制和扩展。

Hayabusa 可以在单个运行系统上运行以进行实时分析,通过从单个或多个系统收集日志进行离线分析,或者通过 Velociraptor 运行Hayabusa工件进行企业范围的威胁搜寻和事件响应。输出将合并到单个 CSV 时间线中,以便在LibreOfficeTimeline ExplorerElastic StackTimesketch等中轻松分析…

配套项目

主要目标

威胁追踪和企业范围的 DFIR

Hayabusa 目前拥有超过 2500 条 Sigma 规则和超过 150 条 Hayabusa 内置检测规则,并且会定期添加更多规则。它可用于企业范围内的主动威胁搜寻以及免费的 DFIR(数字取证和事件响应)以及VelociraptorHayabusa 工件。通过结合这两个开源工具,当环境中没有 SIEM 设置时,您基本上可以追溯地重现 SIEM。您可以通过观看Eric Capuano的 Velociraptor 演练来了解如何执行此操作。

DFIR 是数字取证与响应(Digital Forensics and Incident Response)的缩写。这是一种涉及到计算机系统、网络和数字数据调查的领域,主要目的是发现、分析和应对计算机安全事件,包括数据泄露、网络攻击、恶意软件感染等。

具体来说,DFIR 包括以下两个主要方面:

  1. 数字取证(Digital Forensics): 这部分关注在计算机系统、存储介质和网络中寻找数字证据,以还原或重建事件的过程。数字取证专业人员使用一系列技术和工具来收集、保护、分析和呈现数字证据,以确定发生了什么事件、如何发生以及涉及的相关方。
  2. 事件响应(Incident Response): 这方面关注在发生安全事件时,采取迅速、协调的措施来减轻损害、保护系统和数据。事件响应团队会使用各种技术和方法来检测、隔离和应对潜在的安全威胁。响应措施可能包括隔离受感染的系统、清除恶意软件、修补安全漏洞等。

DFIR 的过程通常包括以下关键步骤:

  1. 准备: 确定并建立一个有效的取证与响应计划,包括人员培训、工具和流程。
  2. 检测: 监视网络和系统,发现潜在的安全事件或异常活动。
  3. 取证: 收集数字证据,包括文件、日志、网络流量等,以了解事件的性质和范围。
  4. 分析: 对收集到的数字证据进行深入分析,以确定攻击方式、攻击者的目标和使用的工具。
  5. 响应: 采取必要的措施,隔离感染的系统,清除恶意软件,修补漏洞,并制定防止类似事件再次发生的计划。
  6. 报告: 生成报告,总结调查的结果、采取的措施和建议,供相关利益方参考。

DFIR 在当今复杂的网络环境中变得越来越重要,对于及时应对和解决安全事件至关重要。

快速取证时间线生成

传统上,Windows 事件日志分析是一个非常漫长且乏味的过程,因为 Windows 事件日志
1) 采用难以分析的数据格式。
2) 大部分数据都是噪音,对调查没有用处。

Hayabusa 的目标是只提取有用的数据,并以尽可能简洁、易于阅读的格式呈现,不仅可供受过专业培训的分析师使用,而且任何 Windows 系统管理员都可以使用。

hayabusa 威胁搜寻和事件日志的快速取证工具

截图

启动

hayabusa 威胁搜寻和事件日志的快速取证工具

DFIR 时间轴终端输出

hayabusa 威胁搜寻和事件日志的快速取证工具

关键字搜索结果

hayabusa 威胁搜寻和事件日志的快速取证工具

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

hayabusa 威胁搜寻和事件日志的快速取证工具

结果总结

hayabusa 威胁搜寻和事件日志的快速取证工具

HTML 结果摘要(-H选项)

hayabusa 威胁搜寻和事件日志的快速取证工具
hayabusa 威胁搜寻和事件日志的快速取证工具
hayabusa 威胁搜寻和事件日志的快速取证工具

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

hayabusa 威胁搜寻和事件日志的快速取证工具

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

hayabusa 威胁搜寻和事件日志的快速取证工具

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

hayabusa 威胁搜寻和事件日志的快速取证工具

使用 Elastic Stack 仪表板进行分析

hayabusa 威胁搜寻和事件日志的快速取证工具
hayabusa 威胁搜寻和事件日志的快速取证工具

Timesketch 中的分析

hayabusa 威胁搜寻和事件日志的快速取证工具

导入和分析时间线结果

您可以在此处了解如何在 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-submoduleshayabusa.exe update-rules

如果更新失败,您可能需要重命名该rules文件夹并重试。

注意:更新时,文件夹中的规则和配置文件将替换为hayabusa-rulesrules存储库中的最新规则和配置文件。您对现有文件所做的任何更改都将被覆盖,因此我们建议您在更新之前对编辑的任何文件进行备份。如果您使用 执行级别调整,请在每次更新后重新调整您的规则文件。如果您在文件夹内添加规则,则更新时它们不会被覆盖或删除level-tuningrules

高级:从源代码编译(可选)

如果安装了 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集启用状态为teststable且级别为high或 的规则critical。这些是具有高置信度和相关性的高质量规则,不应产生许多误报。规则状态为teststable,这意味着超过 6 个月没有报告误报。规则将匹配攻击者技术、一般可疑活动或恶意行为。这与使用选项相同--exclude-status deprecated,unsupported,experimental --min-level high

核心+规则

规则core+集启用状态为teststable且级别为medium或更高的规则。 medium规则通常需要额外调整,因为某些应用程序、合法用户行为或组织的脚本可能会匹配。这与使用选项相同--exclude-status deprecated,unsupported,experimental --min-level medium

核心++规则

规则core++集启用状态为experimentalteststable且级别为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 文件,请务必执行以下操作:

  1. 用双引号将文件或目录路径括起来。
  2. 如果它是目录路径,请确保最后一个字符不包含反斜杠。

Linux

您首先需要使二进制可执行文件。

chmod +x ./hayabusa

然后从 Hayabusa 根目录运行它:

./hayabusa

苹果系统

从终端或 iTerm2,您首先需要使二进制可执行文件。

chmod +x ./hayabusa

然后,尝试从 Hayabusa 根目录运行它:

./hayabusa

在最新版本的 macOS 上,当您尝试运行它时可能会收到以下安全错误:

hayabusa 威胁搜寻和事件日志的快速取证工具

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

hayabusa 威胁搜寻和事件日志的快速取证工具

之后,尝试再次运行它。

./hayabusa

会弹出以下警告,请点击“打开”。

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.txtkeywords-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 将列出SubjectUserNameTargetUserNameUser字段中的所有值。

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关键字mimikatzkali
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-evtxIP 地址:
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.
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)字段。

脚步:

  1. 首先在此处注册 MaxMind 帐户。
  2. 下载页面下载.mmdb这三个文件并将它们保存到一个目录中。文件名应称为GeoLite2-ASN.mmdb、 GeoLite2-City.mmdbGeoLite2-Country.mmdb.
  3. 运行csv-timelinejson-timeline命令时,添加-G选项,后跟 MaxMind 数据库的目录。
  • 使用时csv-timeline,会额外输出以下 6 列:SrcASNSrcCitySrcCountryTgtASNTgtCityTgtCountry
  • json-timeline使用 时,相同的SrcASNSrcCitySrcCountryTgtASNTgtCity,TgtCountry字段将被添加到Details对象中,但前提是它们包含信息。
  • SrcIPorTgtIP是 localhost(127.0.0.1::1等…)时,SrcASNorTgtASN将输出为Local.
  • SrcIPTgtIP是私有 IP 地址(10.0.0.0/8fe80::/10等…)时,SrcASNTgtASN将输出为Private
GeoIP 配置文件

包含在 GeoIP 数据库中查找的源和目标 IP 地址的字段名称在 中定义rules/config/geoip_field_mapping.yaml。如有必要,您可以添加到此列表中。该文件中还有一个过滤器部分,用于确定从哪些事件中提取 IP 地址信息。

GeoIP 数据库自动更新

MaxMind GeoIP 数据库每两周更新一次。您可以在此处安装 MaxMindgeoipupdate工具,以便自动更新这些数据库。

macOS 上的步骤:

  1. brew install geoipupdate
  2. 编辑/usr/local/etc/GeoIP.conf:输入您登录 MaxMind 网站后创建的内容AccountIDLicenseKey确保该EditionIDs行显示EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country.
  3. 跑步geoipupdate
  4. -G /usr/local/var/GeoIP当您想要添加 GeoIP 信息时添加。

Windows 上的步骤:

  1. geoipupdate_4.10.0_windows_amd64.zip发布页面下载最新的 Windows 二进制文件(例如: ) 。
  2. 编辑\ProgramData\MaxMind/GeoIPUpdate\GeoIP.conf:输入您登录 MaxMind 网站后创建的内容AccountIDLicenseKey确保该EditionIDs行显示EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country.
  3. 运行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

在这种情况下,规则目录中带有idof 的规则的风险级别将被重写为。可能设置的级别为、、和。00000000-0000-0000-0000-000000000000levelinformationalcriticalhighmediumlowinformational

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命令示例

  • 将默认配置文件设置为minimalhayabusa.exe set-default-profile minimal
  • 将默认配置文件设置为super-verbosehayabusa.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

  1. minimal
  2. standard(默认)
  3. verbose
  4. all-field-info
  5. all-field-info-verbose
  6. super-verbose
  7. timesketch-minimal
  8. 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中的所有字段信息将与其原始字段名称一起输出,而不是输出最少的信息。EventDataUserData

%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%detailsYML检测规则中的字段,但是只有hayabusa规则有这个字段。此字段提供有关警报或事件的额外信息,并且可以从事件日志中的字段中提取有用的数据。例如,用户名、命令行信息、进程信息等……当占位符指向不存在的字段或存在不正确的别名映射时,将输出为n/a(不可用)。如果details未指定字段(即 sigma 规则),将输出details提取中定义的字段的默认消息。./rules/config/default_details.txt您可以details通过添加Provider NameEventIDdetails在 中输出的消息来添加更多默认消息default_details.txtdetails当规则和 中都没有定义字段时default_details.txt,所有字段都将输出到该details列。
%ExtraFieldInfo%打印%Details%中未输出的字段信息。
%EventID%<Event><System><EventID>
%EvtxFile%引起警报或事件的 evtx 文件名。
%Level%levelYML检测规则中的字段。( informationallowmediumhighcritical)
%MitreTactics%MITRE ATT&CK策略(例如:初始访问、横向移动等…)。
%MitreTags%MITRE ATT&CK 组 ID、技术 ID 和软件 ID。
%OtherTags%tagsYML检测规则中字段中不包含在MitreTactics或中的任何关键字MitreTags
%Provider%Name字段中的属性<Event><System><Provider>
%RecordID%事件记录 ID<Event><System><EventRecordID>字段。
%RuleAuthor%authorYML检测规则中的字段。
%RuleCreationDate%dateYML检测规则中的字段。
%RuleFile%生成警报或事件的检测规则的文件名。
%RuleModifiedDate%modifiedYML检测规则中的字段。
%RuleTitle%titleYML检测规则中的字段。
%Status%statusYML检测规则中的字段。
%Timestamp%默认为YYYY-MM-DD HH:mm:ss.sss +hh:mm格式。<Event><System><TimeCreated SystemTime>事件日志中的字段。默认时区将是本地时区,但您可以使用该--UTC选项将时区更改为 UTC。

额外的配置文件字段别名

如果需要,您还可以将这些额外的别名添加到输出配置文件中:

别名隼鸟输出信息
%RenderedMessage%WEC转发日志中的字段<Event><RenderingInfo><Message>
%RuleID%idYML检测规则中的字段。

注意:这些包含在任何内置配置文件中,因此您需要手动编辑config/default_profile.yaml文件并添加以下行:

Message: "%RenderedMessage%"
RuleID: "%RuleID%"

您还可以定义事件键别名来输出其他字段。

级别缩写

为了节省空间,我们在显示警报时使用以下缩写level

  • critcritical
  • highhigh
  • med medium
  • low low
  • infoinformational

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

  • AppApplication
  • AppLockerMicrosoft-Windows-AppLocker/*
  • BitsCliMicrosoft-Windows-Bits-Client/Operational
  • CodeIntegMicrosoft-Windows-CodeIntegrity/Operational
  • DefenderMicrosoft-Windows-Windows Defender/Operational
  • DHCP-SvrMicrosoft-Windows-DHCP-Server/Operational
  • DNS-SvrDNS Server
  • DvrFmwkMicrosoft-Windows-DriverFrameworks-UserMode/Operational
  • ExchangeMSExchange Management
  • FirewallMicrosoft-Windows-Windows Firewall With Advanced Security/Firewall
  • KeyMgtSvcKey Management Service
  • LDAP-CliMicrosoft-Windows-LDAP-Client/Debug
  • NTLM Microsoft-Windows-NTLM/Operational
  • OpenSSHOpenSSH/Operational
  • PrintAdmMicrosoft-Windows-PrintService/Admin
  • PrintOpMicrosoft-Windows-PrintService/Operational
  • PwShMicrosoft-Windows-PowerShell/Operational
  • PwShClassicWindows PowerShell
  • RDP-ClientMicrosoft-Windows-TerminalServices-RDPClient/Operational
  • SecSecurity
  • SecMitigMicrosoft-Windows-Security-Mitigations/*
  • SmbCliSecMicrosoft-Windows-SmbClient/Security
  • SvcBusCliMicrosoft-ServiceBus-Client
  • SysSystem
  • SysmonMicrosoft-Windows-Sysmon/Operational
  • TaskSchMicrosoft-Windows-TaskScheduler/Operational
  • WinRMMicrosoft-Windows-WinRM/Operational
  • WMIMicrosoft-Windows-WMI-Activity/Operational

其他缩写

规则中使用以下缩写以使输出尽可能简洁:

  • Acct-> 账户
  • Addr-> 地址
  • Auth-> 身份验证
  • Cli-> 客户端
  • Chan-> 频道
  • Cmd-> 命令
  • Cnt-> 计数
  • Comp-> 电脑
  • Conn-> 连接/已连接
  • Creds-> 凭证
  • Crit-> 关键
  • Disconn-> 断开连接/断开连接
  • Dir-> 目录
  • Drv-> 驱动
  • Dst-> 目的地
  • EID-> 事件ID
  • Err-> 错误
  • Exec-> 执行
  • FW-> 防火墙
  • Grp-> 组
  • Img-> 图片
  • Inj-> 注射
  • Krb-> Kerberos
  • LID-> 登录ID
  • Med-> 中等
  • 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-> 进程ID
  • PGUID-> 进程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文件夹中。 informationallevel 规则会被考虑events,而任何具有leveloflow和更高级别的规则都会被考虑alerts

hayabusa 规则目录结构分为 2 个目录:

  • builtin:可由 Windows 内置功能生成的日志。
  • sysmon:由sysmon生成的日志。

规则按日志类型进一步分为目录(例如:安全、系统等),并按以下格式命名:

请查看当前规则,以用作创建新规则或检查检测逻辑的模板。

Sigma vs Hayabusa(内置 Sigma 兼容)规则

Hayabusa 本身支持 Sigma 规则,但内部处理字段有一个例外logsource。为了减少误报,西格玛规则应该通过我们此处解释的转换器运行。这将添加适当的ChannelEventID,并为某些类别(例如 )执行字段映射process_creation

几乎所有 Hayabusa 规则都与 Sigma 格式兼容,因此您可以像 Sigma 规则一样使用它们来转换为其他 SIEM 格式。Hayabusa 规则专为 Windows 事件日志分析而设计,具有以下优点:

  1. 一个额外details字段,用于显示仅从日志中的有用字段获取的附加信息。
  2. 它们都经过样本日志测试,并且可以正常工作。
  3. sigma 中未找到的额外聚合器,例如|equalsfield|endswithfield

据我们所知,hayabusa 为 sigma 规则提供了所有开源 Windows 事件日志分析工具中最好的本机支持。

其他 Windows 事件日志分析器和相关资源

Windows 日志记录建议

为了正确检测 Windows 计算机上的恶意活动,您需要改进默认日志设置。我们创建了一个单独的项目来记录需要启用哪些日志设置以及自动启用正确设置的脚本,网址为https://github.com/Yamato-Security/EnableWindowsLogSettings

我们还推荐以下网站作为指导:

Sysmon 相关项目

要创建最具取证性的证据并以最高精度进行检测,您需要安装 sysmon。我们推荐以下站点和配置文件:

社区文档

英语

项目地址

github.com/Yamato-Security/hayabusa

下载地址

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注