Hayabusa 是由日本 Yamato 安全小组创建的Windows 事件日志快速取证时间线生成器和威胁搜寻工具。 Hayabusa 在日语中的意思是“游隼”,之所以被选中是因为游隼是世界上跑得最快的动物,擅长狩猎且易于训练。它是用 Rust 编写的,并支持多线程,以便尽可能快。我们提供了一个将 Sigma 规则转换为 Hayabusa 规则格式的工具。与 Sigma 兼容的 Hayabusa 检测规则是用 YML 编写的,以便尽可能轻松地定制和扩展。 Hayabusa 可以在单个运行系统上运行以进行实时分析,通过从单个或多个系统收集日志进行离线分析,或者通过 Velociraptor 运行 Hayabusa 工件以进行企业范围的威胁搜寻和事件响应。输出将合并到单个 CSV 时间线中,以便在 LibreOffice、Timeline Explorer、Elastic Stack、Timesketch 等中轻松分析...
evtx
箱的一个维护得更好的分支。-T
选项)-H
选项)-M
多行输出)computer-metrics
命令computer-metrics
命令示例computer-metrics
截图eid-metrics
命令eid-metrics
命令示例eid-metrics
命令配置文件eid-metrics
截图logon-summary
命令logon-summary
命令示例logon-summary
pivot-keywords-list
命令pivot-keywords-list
命令示例pivot-keywords-list
配置文件search
命令search
命令示例search
命令配置文件csv-timeline
命令csv-timeline
命令示例csv-timeline
命令配置文件json-timeline
命令json-timeline
命令示例和配置文件level-tuning
命令level-tuning
命令示例level-tuning
配置文件list-profiles
命令set-default-profile
命令set-default-profile
命令示例update-rules
命令update-rules
命令示例minimal
文件输出standard
文件输出verbose
文件输出all-field-info
配置文件输出all-field-info-verbose
配置文件输出super-verbose
文件输出timesketch-minimal
轮廓输出timesketch-verbose
配置文件输出Hayabusa 目前拥有超过 4000 条 Sigma 规则和超过 170 条 Hayabusa 内置检测规则,并且会定期添加更多规则。它可用于企业范围内的主动威胁搜寻以及免费的 DFIR(数字取证和事件响应)以及 Velociraptor 的 Hayabusa 工件。通过结合这两个开源工具,当环境中没有 SIEM 设置时,您基本上可以追溯性地重现 SIEM。您可以在此处观看 Eric Capuano 的 Velociraptor 演练,了解如何执行此操作。
传统上,Windows 事件日志分析是一个非常漫长且乏味的过程,因为 Windows 事件日志 1) 采用难以分析的数据格式,2) 大部分数据都是噪音,对调查无用。 Hayabusa 的目标是只提取有用的数据,并以尽可能简洁、易于阅读的格式呈现,不仅可供受过专业培训的分析师使用,而且任何 Windows 系统管理员都可以使用。与传统的 Windows 事件日志分析相比,Hayabusa 希望让分析师在 20% 的时间内完成 80% 的工作。
-T
选项) -H
选项) -M
多行输出) 您可以在此处了解如何在 Excel 和时间线资源管理器中分析 CSV 时间线。
您可以在此处了解如何将 CSV 文件导入 Elastic Stack。
您可以在此处了解如何将 CSV 文件导入 Timesketch。
您可以在此处了解如何使用jq
分析 JSON 格式的结果。
|equalsfield
和|endswithfield
。0xc0000234
-> ACCOUNT LOCKED
)请下载最新稳定版本的 Hayabusa 及其编译的二进制文件,或从发布页面编译源代码。
我们为以下架构提供二进制文件:
hayabusa-xxx-lin-aarch64-gnu
)hayabusa-xxx-lin-x64-gnu
)hayabusa-xxx-lin-x64-musl
)hayabusa-xxx-mac-aarch64
)hayabusa-xxx-mac-x64
)hayabusa-xxx-win-aarch64.exe
)hayabusa-xxx-win-x64.exe
)hayabusa-xxx-win-x86.exe
)由于某种原因,Linux ARM MUSL 二进制文件无法正常运行,因此我们不提供该二进制文件。这是我们无法控制的,因此我们计划在将来修复后提供它。
从 v2.18.0 开始,我们提供了特殊的 Windows 包,这些包使用单个文件中提供的 XOR 编码规则以及组合到单个文件中的所有配置文件(托管在 hayabusa-encoded-rules 存储库中)。只需下载名称中带有live-response
zip 包即可。 zip 文件仅包含三个文件:Hayabusa 二进制文件、XOR 编码的规则文件和配置文件。这些实时响应包的目的是在客户端端点上运行 Hayabusa 时,我们希望确保 Windows Defender 等防病毒扫描程序不会对.yml
规则文件给出误报。此外,我们希望最大限度地减少写入系统的文件量,以便像 USN Journal 这样的取证工件不会被覆盖。
您可以使用以下命令git clone
存储库并从源代码编译二进制文件:
警告:存储库的主要分支用于开发目的,因此您可能能够访问尚未正式发布的新功能,但是,可能存在错误,因此请考虑它不稳定。
git clone https://github.com/Yamato-Security/hayabusa.git --recursive
注意:如果您忘记使用 --recursive 选项,则作为 git 子模块管理的
rules
文件夹将不会被克隆。
您可以使用git pull --recurse-submodules
同步rules
夹并获取最新的 Hayabusa 规则或使用以下命令:
hayabusa.exe update-rules
如果更新失败,您可能需要重命名rules
文件夹并重试。
注意:更新时,
rules
文件夹中的规则和配置文件将替换为 hayabusa-rules 存储库中的最新规则和配置文件。您对现有文件所做的任何更改都将被覆盖,因此我们建议您在更新之前对编辑的任何文件进行备份。如果您使用level-tuning
执行级别调整,请在每次更新后重新调整您的规则文件。如果您在rules
文件夹内添加新规则,则更新时它们不会被覆盖或删除。
如果安装了 Rust,则可以使用以下命令从源代码进行编译:
注意:要编译,您通常需要最新版本的 Rust。
cargo build --release
您可以从主分支下载最新的不稳定版本,或者从发布页面下载最新的稳定版本。
请务必定期更新 Rust:
rustup update stable
编译后的二进制文件将输出到./target/release
文件夹中。
您可以在编译之前更新到最新的 Rust crate:
cargo update
更新后如果出现任何问题,请告诉我们。
您可以使用以下命令在 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
不会更新编译器以进行交叉编译,并且您可能会收到构建错误。
如果收到有关 openssl 的编译错误,则需要安装 Homebrew,然后安装以下软件包:
brew install pkg-config
brew install openssl
如果收到有关 openssl 的编译错误,则需要安装以下软件包。
基于 Ubuntu 的发行版:
sudo apt install libssl-dev
基于 Fedora 的发行版:
sudo yum install openssl-devel
在 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 的不同版本和发行版之间更易于移植。
当尝试运行 hayabusa 时,甚至只是在下载.yml
规则时,您可能会收到来自防病毒或 EDR 产品的警报,因为检测签名中会有mimikatz
和可疑 PowerShell 命令等关键字。这些都是误报,因此需要在安全产品中配置排除项以允许 hayabusa 运行。如果您担心恶意软件或供应链攻击,请检查 hayabusa 源代码并自行编译二进制文件。
由于 Windows Defender 的实时保护,您可能会遇到运行速度缓慢的情况,尤其是在重新启动后的首次运行时。您可以通过暂时关闭实时保护或向 hayabusa 运行时目录添加排除项来避免这种情况。 (在执行这些操作之前请考虑安全风险。)
在命令/PowerShell 提示符或 Windows 终端中,只需运行适当的 32 位或 64 位 Windows 二进制文件。
在 Windows 中使用内置命令或 PowerShell 提示符时,如果文件或目录路径中有空格,您可能会收到一条错误消息,指出 Hayabusa 无法加载任何 .evtx 文件。为了正确加载 .evtx 文件,请务必执行以下操作:
您首先需要使二进制可执行文件。
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
:通过关键字或正则表达式搜索所有事件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
命令来检查根据
字段中定义的每台计算机有多少个事件。请注意,您不能完全依赖Computer
字段来按事件的原始计算机来分隔事件。保存到事件日志时,Windows 11 有时会使用完全不同的Computer
名称。此外,Windows 10 有时会以全小写形式记录Computer
名称。该命令不使用任何检测规则,因此将分析所有事件。这是一个很好的命令,可以运行它来快速查看哪些计算机拥有最多的日志。有了这些信息,您就可以在创建时间线时使用--include-computer
或--exclude-computer
选项,通过根据计算机创建多个时间线或排除来自某些计算机的事件来提高时间线生成的效率。
Usage: computer-metrics [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-o, --output Save the results in CSV format (ex: computer-metrics.csv)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
computer-metrics
命令示例hayabusa.exe computer-metrics -d ../logs
hayabusa.exe computer-metrics -d ../logs -o computer-metrics.csv
computer-metrics
截图eid-metrics
命令您可以使用eid-metrics
命令打印出按通道分隔的事件 ID(
字段)的总数和百分比。此命令不使用任何检测规则,因此将扫描所有事件。
Usage: eid-metrics [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-o, --output Save the Metrics in CSV format (ex: metrics.csv)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
eid-metrics
命令示例hayabusa.exe eid-metrics -f Security.evtx
hayabusa.exe eid-metrics -d ../logs
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.
eid-metrics
截图logon-summary
命令您可以使用logon-summary
命令输出登录信息摘要(登录用户名以及成功和失败登录计数)。您可以使用-f
显示一个 evtx 文件的登录信息,或使用-d
选项显示多个 evtx 文件的登录信息。
Usage: logon-summary [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-o, --output Save the logon summary to two CSV files (ex: -o logon-summary)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
logon-summary
命令示例hayabusa.exe logon-summary -f Security.evtx
hayabusa.exe logon-summary -d ../logs -o logon-summary.csv
logon-summary
pivot-keywords-list
命令您可以使用pivot-keywords-list
命令创建唯一的pivot关键字列表,以快速识别异常用户、主机名、进程等......以及关联事件。
重要提示:默认情况下,hayabusa 将返回所有事件的结果(信息性事件和更高级别的事件),因此我们强烈建议将pivot-keywords-list
命令与-m, --min-level
选项结合使用。例如,首先使用-m critical
只从critical
警报中创建关键字,然后继续使用-m high
、 -m medium
等...结果中很可能存在与许多正常事件相匹配的常见关键字,因此,在手动检查结果并在单个文件中创建唯一关键字列表后,您可以使用grep -f keywords.txt timeline.csv
等命令创建可疑活动的缩小时间线。
Usage: pivot-keywords-list [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-o, --output Save pivot words to separate files (ex: PivotKeywords)
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
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
命令将允许您对所有事件进行关键字搜索。 (不仅仅是隼鸟检测结果。)这对于确定隼鸟未检测到的事件中是否存在任何证据非常有用。
Usage: hayabusa.exe search <--keywords "" OR --regex ""> [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
Filtering:
-a, --and-logic Search keywords with AND logic (default: OR)
-F, --filter Filter by specific field(s)
-i, --ignore-case Case-insensitive keyword search
-k, --keyword Search by keyword(s)
-r, --regex Search by regular expression
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
Output:
-J, --JSON-output Save the search results in JSON format (ex: -J -o results.json)
-L, --JSONL-output Save the search results in JSONL format (ex: -L -o results.jsonl)
-M, --multiline Output event field information in multiple rows for CSV output
-o, --output Save the search results in CSV format (ex: search.csv)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
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
:通道名称及其缩写的映射。
csv-timeline
和json-timeline
命令现在默认启用扫描向导。此举旨在帮助用户根据自己的需求和偏好轻松选择想要启用的检测规则。要加载的检测规则集基于 Sigma 项目中的官方列表。这篇博文中解释了详细信息。您可以通过添加-w, --no-wizard
选项轻松关闭向导并以传统方式使用 Hayabusa。
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
选项相同。
Emerging Threats (ET)
规则集启用具有detection.emerging_threats
。这些规则针对特定威胁,对于目前还没有太多信息可用的威胁特别有用。这些规则不应有太多误报,但随着时间的推移,相关性会降低。当这些规则未启用时,与使用--exclude-tag detection.emerging_threats
选项相同。当传统上在没有向导的情况下运行 Hayabusa 时,默认情况下将包含这些规则。
Threat Hunting (TH)
规则集启用具有detection.threat_hunting
标签的规则。这些规则可以检测未知的恶意活动,但是通常会产生更多误报。当这些规则未启用时,与使用--exclude-tag detection.threat_hunting
选项相同。当传统上在没有向导的情况下运行 Hayabusa 时,默认情况下将包含这些规则。
从 Hayabusa v2.16.0 开始,我们在加载.evtx
文件和.yml
规则时启用基于通道的过滤器。目的是通过仅加载必要的内容来使扫描尽可能高效。虽然单个事件日志中可能有多个提供程序,但单个 evtx 文件中具有多个通道的情况并不常见。 (我们唯一一次看到这种情况是有人为 example-evtx 项目人为地将两个不同的 evtx 文件合并在一起。)我们可以通过首先检查指定的每个.evtx
文件的第一个记录中的Channel
字段来利用这一点进行扫描。我们还检查哪些.yml
规则使用规则的Channel
字段中指定的通道。通过这两个列表,我们仅加载使用.evtx
文件中实际存在的通道的规则。
例如,如果用户想要扫描Security.evtx
,则仅使用指定Channel: Security
的规则。加载其他检测规则是没有意义的,例如仅在Application
日志中查找事件的规则等...请注意,原始 Sigma 规则中未明确定义通道字段(例如: Channel: Security
)。对于 Sigma 规则,通道和事件 ID 字段是通过logsource
下的service
和category
字段隐式定义的。 (例如: service: security
)在 hayabusa-rules 存储库中策划 Sigma 规则时,我们对logsource
字段进行去抽象,并显式定义通道和事件 ID 字段。我们在此深入解释如何以及为何这样做。
目前,只有两个未定义Channel
且旨在扫描所有.evtx
文件的检测规则如下:
如果您想使用这两个规则并针对加载的.evtx
文件扫描所有规则,则需要在csv-timeline
和json-timeline
命令中添加-A, --enable-all-rules
选项。在我们的基准测试中,规则过滤通常可以将速度提高 20% 到 10 倍,具体取决于扫描的文件,当然使用的内存也更少。
加载.evtx
文件时也会使用通道过滤。例如,如果您指定一个规则来查找具有Security
通道的事件,则加载不是来自Security
日志的.evtx
文件是没有意义的。在我们的基准测试中,正常扫描的速度提高了约 10%,使用单个规则扫描时的性能提高了 60% 以上。如果您确定在单个.evtx
文件中使用多个通道,例如有人使用工具将多个.evtx
文件合并在一起,则您可以使用-a, --scan-all-evtx-files
禁用此过滤csv-timeline
和json-timeline
命令中的选项。
注意:通道过滤仅适用于
.evtx
文件,如果您尝试使用-J, --json-input
从 JSON 文件加载事件日志并指定-A
或-a
,您将收到错误。
csv-timeline
命令csv-timeline
命令将以 CSV 格式创建事件的取证时间线。
Usage: csv-timeline [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-s, --sort-events Sort events before saving the file. (warning: this uses much more memory!)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules Specify a custom rule directory or file (default: ./rules)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-category Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-G, --GeoIP Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report Save Results Summary details to an HTML report (ex: results.html)
-M, --multiline Output event field information in multiple rows
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output Save the timeline in CSV format (ex: results.csv)
-p, --profile Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
Display Settings:
--no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
csv-timeline
命令示例standard
配置文件针对一个 Windows 事件日志文件运行 hayabusa: hayabusa.exe csv-timeline -f eventlog.evtx
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -p verbose
super-verbose
文件,您的文件输出大小将变得更大!): hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -o results.csv -p super-verbose
注意:在我们的测试中,启用 EID 过滤器将使分析速度加快约 10-15%,但可能会丢失警报。
hayabusa.exe csv-timeline -E -d .hayabusa-sample-evtx -o results.csv
-r .rules
中的所有规则): hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusa -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusabuiltin -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusasysmon -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .rulessigma -o results.csv -w
status
标记为deprecated
规则)和噪音规则(其规则 ID 在.rulesconfignoisy_rules.txt
中列出的规则):注意:最近,已弃用的规则现在位于 sigma 存储库中的单独目录中,因此默认情况下不再包含在 Hayabusa 中。因此,您可能不需要启用已弃用的规则。
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx --enable-noisy-rules --enable-deprecated-rules -o results.csv -w
hayabusa.exe csv-timeline -d .hayabusa-sample-evtx -r .ruleshayabusabuiltinSecurityLogonLogoffLogon -U -o results.csv -w
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
-Q
。 您可以使用免费的 GeoLite2 地理定位数据将 GeoIP(ASN 组织、城市和国家)信息添加到 SrcIP(源 IP)字段和 TgtIP(目标 IP)字段。
步骤:
.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
或TgtIP
为 localhost ( 127.0.0.1
、 ::1
等)时, SrcASN
或TgtASN
将输出为Local
。
当SrcIP
或TgtIP
是私有 IP 地址( 10.0.0.0/8
、 fe80::/10
等)时, SrcASN
或TgtASN
将输出为Private
。
包含在 GeoIP 数据库中查找的源和目标 IP 地址的字段名称在rules/config/geoip_field_mapping.yaml
中定义。如有必要,您可以添加到此列表中。该文件中还有一个过滤器部分,用于确定从哪些事件中提取 IP 地址信息。
MaxMind GeoIP数据库每2周更新一次。您可以在此处安装MaxMind geoipupdate
工具,以自动更新这些数据库。
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
。Windows上的步骤:
geoipupdate_4.10.0_windows_amd64.zip
)。ProgramDataMaxMind/GeoIPUpdateGeoIP.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%
字段)的配置文件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之类的另一个工具中,则很好。如果您要用文本编辑器手动分析结果,JSON会更好。 CSV输出非常适合将较小的时间表(通常小于2GB)导入Libreoffice或Timeline Explorer等工具。 JSON最适合使用jq
等工具对数据进行更详细的分析(包括大型结果文件),因为Details
字段是分开的,以便于分析。 (在CSV输出中,所有事件日志字段均在一个大Details
中,列出数据排序等...更困难。)
Usage: json-timeline [OPTIONS]
Input:
-d, --directory Directory of multiple .evtx files
-f, --file File path to one .evtx file
-l, --live-analysis Analyze the local C:WindowsSystem32winevtLogs folder
General Options:
-C, --clobber Overwrite files when saving
-h, --help Show the help menu
-J, --JSON-input Scan JSON formatted logs instead of .evtx (.json or .jsonl)
-s, --sort-events Sort events before saving the file. (warning: this uses much more memory!)
-w, --no-wizard Do not ask questions. Scan for all events and alerts
-Q, --quiet-errors Quiet errors mode: do not save error logs
-x, --recover-records Carve evtx records from slack space (default: disabled)
-r, --rules Specify a custom rule directory or file (default: ./rules)
-c, --rules-config Specify custom rule config directory (default: ./rules/config)
--target-file-ext Specify additional evtx file extensions (ex: evtx_data)
-t, --threads Number of threads (default: optimal number for performance)
Filtering:
-E, --EID-filter Scan only common EIDs for faster speed (./rules/config/target_event_IDs.txt)
-D, --enable-deprecated-rules Enable rules with a status of deprecated
-n, --enable-noisy-rules Enable rules set to noisy (./rules/config/noisy_rules.txt)
-u, --enable-unsupported-rules Enable rules with a status of unsupported
-e, --exact-level Only load rules with a specific level (informational, low, medium, high, critical)
--exclude-category Do not load rules with specified logsource categories (ex: process_creation,pipe_created)
--exclude-computer Do not scan specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--exclude-eid Do not scan specific EIDs for faster speed (ex: 1) (ex: 1,4688)
--exclude-status Do not load rules according to status (ex: experimental) (ex: stable,test)
--exclude-tag Do not load rules with specific tags (ex: sysmon)
--include-category Only load rules with specified logsource categories (ex: process_creation,pipe_created)
--include-computer Scan only specified computer names (ex: ComputerA) (ex: ComputerA,ComputerB)
--include-eid Scan only specified EIDs for faster speed (ex: 1) (ex: 1,4688)
--include-status Only load rules with specific status (ex: experimental) (ex: stable,test)
--include-tag Only load rules with specific tags (ex: attack.execution,attack.discovery)
-m, --min-level Minimum level for rules to load (default: informational)
-P, --proven-rules Scan with only proven rules for faster speed (./rules/config/proven_rules.txt)
--timeline-end End time of the event logs to load (ex: "2022-02-22 23:59:59 +09:00")
--timeline-offset Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--timeline-start Start time of the event logs to load (ex: "2020-02-22 00:00:00 +09:00")
Output:
-G, --GeoIP Add GeoIP (ASN, city, country) info to IP addresses
-H, --HTML-report Save Results Summary details to an HTML report (ex: results.html)
-L, --JSONL-output Save the timeline in JSONL format (ex: -L -o results.jsonl)
-F, --no-field-data-mapping Disable field data mapping
--no-pwsh-field-extraction Disable field extraction of PowerShell classic logs
-o, --output Save the timeline in JSON format (ex: results.json)
-p, --profile Specify output profile
-R, --remove-duplicate-data Duplicate field data will be replaced with "DUP"
-X, --remove-duplicate-detections Remove duplicate detections (default: disabled)
Display Settings:
--no-color Disable color output
-N, --no-summary Do not display Results Summary for faster speed
-q, --quiet Quiet mode: do not display the launch banner
-v, --verbose Output verbose information
-T, --visualize-timeline Output event frequency timeline (terminal needs to support unicode)
Time Format:
--European-time Output timestamp in European time format (ex: 22-02-2022 22:00:00.123 +02:00)
--ISO-8601 Output timestamp in ISO-8601 format (ex: 2022-02-22T10:10:10.1234567Z) (Always UTC)
--RFC-2822 Output timestamp in RFC 2822 format (ex: Fri, 22 Feb 2022 22:00:00 -0600)
--RFC-3339 Output timestamp in RFC 3339 format (ex: 2022-02-22 22:00:00.123456-06:00)
--US-military-time Output timestamp in US military time format (ex: 02-22-2022 22:00:00.123 -06:00)
--US-time Output timestamp in US time format (ex: 02-22-2022 10:00:00.123 PM -06:00)
-U, --UTC Output time in UTC format (default: local time)
json-timeline
命令示例和配置文件json-timeline
的选项和配置文件与csv-timeline
相同,但一个额外的选项-L, --JSONL-output
,用于输出到JSONL格式。
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 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
时,原始警报级别都会覆盖您更改的任何设置,因此,如果您想更改级别,则每次运行update-rules
时都需要运行level-tuning
命令。
./rules/config/level_tuning.txt
样本行:
id,new_level
00000000-0000-0000-0000-000000000000,informational # sample level tuning line
在这种情况下,规则目录中的id
为00000000-0000-0000-0000-000000000000
的规则的风险水平将其level
重写为informational
。可能设定的可能级别是critical
, high
, medium
, low
和informational
。
list-profiles
命令 Usage: list-profiles [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
set-default-profile
命令命令 Usage: set-default-profile [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-p, --profile Specify output 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存储库同步,从而更新规则和配置文件。
Usage: update-rules [OPTIONS]
Display Settings:
--no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
General Options:
-r, --rules Specify a custom rule directory or file (default: ./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
轻松更改默认配置文件。使用list-profiles
命令显示可用的配置文件及其字段信息。
minimal
轮廓输出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%
standard
配置文件输出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%
verbose
概况输出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
all-field-info
文件输出EventData
和UserData
部分中的所有字段信息与其输出最小的details
信息,而不是输出其原始字段名称。
%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
all-field-info-verbose
腔剖面输出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %RuleTitle%, %AllFieldInfo%, %RuleFile%, %EvtxFile%
super-verbose
输出%Timestamp%, %Computer%, %Channel%, %EventID%, %Level%, %RuleTitle%, %RuleAuthor%, %RuleModifiedDate%, %Status%, %RecordID%, %Details%, %ExtraFieldInfo%, %MitreTactics%, %MitreTags%, %OtherTags%, %Provider%, %RuleCreationDate%, %RuleFile%, %EvtxFile%
timesketch-minimal
档案输出输出到与导入到时口字的格式。
%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %RuleFile%, %EvtxFile%
timesketch-verbose
曲线输出%Timestamp%, hayabusa, %RuleTitle%, %Computer%, %Channel%, %EventID%, %Level%, %MitreTactics%, %MitreTags%, %OtherTags%, %RecordID%, %Details%, %ExtraFieldInfo%, %RuleFile%, %EvtxFile%
在2018年联想P51(Xeon 4 Core 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% |
可以使用内置输出配置文件输出以下信息:
别名 | Hayabusa输出信息 |
---|---|
%allfieldinfo% | 所有现场信息。 |
%渠道% | 日志的名称。 字段。 |
%电脑% | 字段。 |
%细节% | 但是,YML检测规则中的details 字段,只有Hayabusa规则具有此字段。该字段提供有关警报或事件的额外信息,并可以从事件日志中的字段中提取有用的数据。例如,用户名,命令行信息,过程信息等...当占位符指向不存在或存在不正确的别名映射的字段时,它将输出为n/a (不可用)。如果未指定details 字段(即Sigma规则),则将输出./rules/config/default_details.txt 中定义的字段的默认details 信息。您可以通过在default_details.txt 中添加Provider Name , EventID 和details 消息来添加更多默认details 消息。当在规则中或在default_details.txt 中未定义详细details 字段时,所有字段将输出到details 列。 |
%extrefieldinfo% | 打印在%详细信息%中未输出的现场信息。 |
%entid% | 字段。 |
%evtxfile% | 引起警报或事件的EVTX文件名。 |
%等级% | YML检测规则中的level 字段。 ( informational , low , medium , high , critical ) |
%mitretactics% | MITER ATT&CK策略(例如:初始访问,横向运动等)。 |
%mitretags% | MITER ATT&CK组ID,技术ID和软件ID。 |
%其他标签% | YML检测规则中tags 字段中的任何关键字,该字段未包含在MitreTactics 或MitreTags 中。 |
%提供商% | 字段中的Name 属性。 |
%recordID% | 事件记录ID来自 字段。 |
%leaeAuthor% | YML检测规则中的author 字段。 |
%lecrecreationdate% | YML检测规则中的date 字段。 |
%uludfile% | 生成警报或事件的检测规则的文件名。 |
%rulemedifieddate% | YML检测规则中的modified 字段。 |
%ruletitle% | YML检测规则中的title 字段。 |
%地位% | YML检测规则中的status 字段。 |
%时间戳% | 默认值为YYYY-MM-DD HH:mm:ss.sss +hh:mm 格式。 事件日志中的字段。默认时区将是本地时区,但您可以使用--UTC 选项更改为UTC的时区。 |
如果需要,也可以将这些额外的别名添加到您的输出配置文件中:
别名 | Hayabusa输出信息 |
---|---|
%renderedMessage% | WEC转发日志中的 字段。 |
%ruleId% | YML检测规则中的id 字段。 |
注意:这些都不包含在内置的配置文件中,因此您需要手动编辑config/default_profile.yaml
文件并添加以下行:
Message: "%RenderedMessage%"
RuleID: "%RuleID%"
您还可以将事件密钥别名定义为输出其他字段。
为了节省空间,我们在显示警报level
时使用以下缩写。
crit
: critical
high
: high
med
: medium
low
: low
info
: informational
为了节省空间,我们在显示MITER ATT&CK策略标签时使用以下缩写。您可以在./config/mitre_tactics.txt
配置文件中自由编辑这些缩写。
Recon
:侦察ResDev
:资源开发InitAccess
:初始访问Exec
:执行Persis
:持久性PrivEsc
:特权升级Evas
:防御逃避CredAccess
:凭证访问Disc
:发现LatMov
:横向运动Collect
:收集C2
:命令和控制Exfil
:渗透Impact
:影响为了节省空间,我们在显示通道时使用以下缩写。您可以在./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
> PROCES GUID(全局唯一ID)Ver
>版本进度栏只能与多个EVTX文件一起使用。它将实时显示其完成分析的EVTX文件的数量和百分比。
警报将根据警报level
以颜色输出。您可以以level,(RGB 6-digit ColorHex)
以./config/level_color.txt
的形式更改配置文件中的默认颜色。如果要禁用颜色输出,则可以使用--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
级规则被视为events
,而low
和更高level
的任何事件都被视为alerts
。
Hayabusa规则目录结构分为两个目录:
builtin
:可以通过Windows内置功能生成的日志。sysmon
:由Sysmon生成的日志。按日志类型(示例:安全性,系统等)将规则进一步分为目录,并以以下格式命名:
请查看当前规则,以创建新的模板或检查检测逻辑。
Hayabusa在内部处理logsource
字段的单个例外,支持Sigma规则。为了减少误报,应该通过在此处解释的转换器来运行Sigma规则。这将添加适当的Channel
和EventID
,并对process_creation
等某些类别执行字段映射。
几乎所有的Hayabusa规则都与Sigma格式兼容,因此您可以像Sigma规则一样使用它们将其转换为其他SIEM格式。 Hayabusa规则仅用于Windows事件日志分析,并具有以下好处:
details
字段,显示仅从日志中的有用字段获取的其他信息。|equalsfield
和|endswithfield
。据我们所知,Hayabusa从任何开源Windows事件日志分析工具中为Sigma规则提供了最大的本机支持。
为了正确检测Windows机器上的恶意活动,您需要改进默认日志设置。我们创建了一个单独的项目,以记录需要启用哪些日志设置以及脚本,以自动启用适当的设置,请访问https://github.com/yamato-security/enablewindowslogsettings。
我们还建议以下网站以进行指导:
要创建最大的法医证据并以最高的精度检测,您需要安装Sysmon。我们建议以下网站和配置文件:
我们会喜欢任何形式的贡献。拉动请求,规则创建和示例EVTX日志是最好的,但功能请求是非常欢迎的。
至少,如果您喜欢我们的工具,请在Github上给我们一颗星星,并表示您的支持!
请提交您在此处找到的任何错误。该项目目前已积极维护,我们很乐意修复报告的任何错误。
如果您使用Hayabusa规则找到任何问题(误报,错误等),请在此处将其报告给Hayabusa-Rules GitHub问题页面。
如果您发现有任何Sigma规则的任何问题(误报,错误等),请在此处将其报告给上游Sigmahq GitHub问题页面。
Hayabusa根据AGPLV3发布,所有规则均根据检测规则许可(DRL)1.1发布。
Hayabusa使用MaxMind创建的Geolite2数据,可从https://www.maxmind.com获得。
您可以收到有关Hayabusa,规则更新,其他Yamato安全工具等的最新消息...通过在Twitter上关注我们的@Securityyamato。