spyre-project/spyre

GitHub: spyre-project/spyre

一款基于 YARA 的轻量级主机失陷指标扫描器,专为事件响应和入侵调查场景设计。

Stars: 176 | Forks: 31

# Spyre ![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/923fb2f68b135105.svg) **...一个简单、自包含、模块化的基于主机的 IOC 扫描器** _Spyre_ 是一个简单的基于主机的 IOC 扫描器,它围绕 [YARA](https://github.com/VirusTotal/yara) 模式匹配引擎和 其他扫描模块构建。该项目的主要目标是轻松实现 YARA 规则和其他失陷指标(IOC)的实战化。 用户需要自带规则集。 [awesome-yara](https://github.com/InQuest/awesome-yara) 仓库很好地概述了现有的免费 YARA 规则集。 _Spyre_ 旨在作为事件响应人员的调查工具。它 **并非** 旨在演变成任何类型的端点保护服务。 ## 入门指南 使用 _Spyre_ 很简单: 1. 添加 YARA 签名。在默认配置中,Spyre 将分别从 `filescan.yar` 和 `procscan.yar` 读取用于文件和进程扫描的 YARA 规则。以下选项可用于向 _Spyre_ 提供规则文件(并将按此顺序尝试): 1. 将规则文件添加到 ZIP 文件中,并将该 ZIP 文件附加到二进制文件后。 2. 将规则文件添加到一个 ZIP 文件中,该 ZIP 文件的基本名称与扫描器二进制文件的基本名称相同,即如果 Spyre 二进制文件名为 `spyre` 或 `spyre.exe`,则使用 `spyre.zip`。 3. 将规则文件和扫描器二进制文件放入同一目录。 ZIP 文件内容可以使用密码 `infected`(AV 行业标准)进行加密,以防止杀毒软件扫描规则集、将其归类为恶意内容并阻止扫描。 YARA 规则文件可以包含 `include` 语句。 2. 部署并运行扫描器 3. 收集报告和证据 ## 配置 运行时配置通过可选文件 `spyre.yaml` 完成。 如果 ZIP 文件已附加到 _Spyre_ 二进制文件中,则配置和其他文件(如 YARA 规则)将仅从此 ZIP 文件中读取。 否则,它们将从二进制文件所在的目录中读取。 有关示例,请参见 [example-configuration/](example-config/) 子目录。 ### 全局配置 - `hostname` / 命令行开关 `--set-hostname`:显式设置将在日志文件和报告中使用的主机名。通常不需要此项。 - `max-file-size` / 命令行开关 `--max-file-size`:使用昂贵的文件扫描模块(如 YARA)扫描文件的最大大小。默认值:32MB - `proc-ignore-names` / 命令行开关 `--proc-ignore`:将不使用进程内存扫描模块进行扫描的进程名称。 - `paths` / 命令行开关 `--path`:使用文件扫描模块扫描的路径。默认值:`/` (Unix) 或所有固定驱动器。 - `report` / 命令行开关 `--report`:设置一个或多个报告目标。默认值:当前工作目录下的 `spyre_${hostname}_${time}.log`,使用 plain 格式。可以通过附加 `,format=FORMAT` 来指定不同的输出格式。 目前支持以下格式: - `plain`,默认值,一种简单的易读文本格式 - `tsjson`,一个可以导入到 [Timesketch](https://github.com/google/timesketch) 的 JSON 文档 `hostname` 和 `time` 变量仅在目标文件名中展开。 **注意:** 报告目标的配置可能会在接下来的某个版本中更改。 - `high-priority` / 命令行开关 `--high-priority`:在默认配置中(禁用此设置的情况下),_Spyre_ 指示 OS 调度程序降低 CPU 时间和 I/O 操作的优先级,以避免破坏正常的系统运行。 - 命令行开关 `--loglevel=LEVEL`:设置日志级别。有效值:trace, debug, info, notice, warn, error, quiet。 ### 模块特定配置 目前有三个区域可以实现扫描模块:系统级检查、文件扫描和进程扫描。 下面列出了当前实现的模块和支持的配置参数。 - `system` - `eventobj` (Windows) - `iocs` - `registry` (Windows) - `iocs` - `winkernelobj` (Windows) - `iocs` - `conficker`, 布尔值:是否将动态(基于主机/进程)Conficker IOC 添加到 IOC 列表中?(默认值:false) - `findwindow` (Windows) - `iocs` - `file` - `yara` - `rule-files` - `fail-on-warnings` - `proc` - `yara` - `rule-files` - `fail-on-warnings` 请参考示例配置文件 `example-spyre.yaml`,了解有关如何描述每个模块的失陷指标的提示。 ## 关于 YARA 规则的说明 YARA 使用默认设置进行配置,外加以下显式 开关(参见 `3rdparty.mk`): - `--disable-magic` - `--disable-cuckoo` - `--enable-dotnet` - `--enable-macho` - `--enable-dex` 对于文件扫描,定义了以下变量: - `filename`, - `filepath`, - `extension`, - `filetype` (扫描时当前未填充) 对于进程扫描,定义了变量 `pid` 和 `executable`。 `spyre_collect_limit` 元变量可用于限制从匹配文件收集的写入次数,或完全禁止收集文件。这对于限制证据包的大小和避免收集敏感信息非常有用。 ## 构建 可以为 32 位和 64 位 Linux 以及 Windows 目标构建 Spyre。 ### Debian Buster (10.x) 及更高版本 在已安装以下软件包的 Debian/buster 系统(或 chroot)上: - make - gcc - gcc-multilib - gcc-mingw-w64 - autoconf - automake - libtool - pkg-config - wget - patch - sed - golang-_$VERSION_-go,例如 golang-1.8-go。除非设置了 `GOROOT`,否则 Makefile 将自动选择最新版本。 - git-core - ca-certificates - zip 这描述了通过 CI 定期测试的构建环境。 ### Fedora 30 及更高版本 同样的构建也在安装了以下软件包的 Fedora 30 上成功尝试过: - make - gcc - mingw{32,64}-gcc - mingw{32,64}-winpthreads-static - autoconf - automake - libtool - pkgconf-pkg-config - wget - patch - sed - golang - git-core - ca-certificates - zip 安装完所有内容后,只需键入 `make`。这应该会下载 _musl-libc_、_openssl_、_yara_ 的存档,构建它们,然后构建 _spyre_。 纯 _spyre_ 二进制文件创建在 `_build//` 中。 运行 `make release` 会创建一个 ZIP 文件,其中包含所有受支持架构的二进制文件。 ### 生成兼容旧版 Windows XP、Windows Server 2003 的二进制文件 Go 1.11 移除了对这些系统的兼容性,因此需要 Go 1.10 工具链。由于 Go 1.10 不支持 Go modules,必须对第三方 Go 依赖项进行 vendor 处理:使用更新的 Go 版本执行此操作(只需运行 `go vendor`),并在运行 `make` 之前将 `GOROOT` 设置为指向 Go 1.10 工具链。 ### MacOSX 目前不支持交叉编译。 - 来自 Xcode 的 GCC - 来自 [Homebrew](https://brew.sh/) 的构建依赖项: - gnu-make - autoconf - automake - libtool - pkg-config - wget - gpatch - gnu-sed - gnu-tar - go - git - ca-certificates - zip 系统提供的 `make` 太旧了,因为 Apple 决定对 GPLv3 过敏。来自 Homebrew 的 `gmake` 工作正常。 ## 编码 参见 [HACKING.md](HACKING.md) ## 版权 版权所有 2018-2020 DCSO Deutsche Cyber-Sicherheitsorganisation GmbH 版权所有 2020-2021 Spyre Project Authors (见:AUTHORS.txt) ## 许可证 本程序是自由软件:您可以根据 GNU 宽通用公共许可证的条款重新分发和/或修改它,由自由软件基金会发布,许可证版本为 3,或(根据您的选择)任何更高版本。 有关完整的许可证文本,请参阅 LICENSE 文件。
标签:AMSI绕过, DAST, EVTX分析, Gophish, Go语言, IOC扫描器, PB级数据处理, YARA, 主机取证, 云资产可视化, 信标检测, 威胁检测, 安全测试工具, 安全运维, 库, 应急响应, 恶意软件分析, 数字取证, 文件扫描, 日志审计, 模式匹配, 程序破解, 端点安全, 网络安全, 自动化脚本, 自动化资产收集, 补丁管理, 进程扫描, 隐私保护