spyre-project/spyre
GitHub: spyre-project/spyre
一款基于 YARA 的轻量级主机失陷指标扫描器,专为事件响应和入侵调查场景设计。
Stars: 176 | Forks: 31
# Spyre

**...一个简单、自包含、模块化的基于主机的 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, 主机取证, 云资产可视化, 信标检测, 威胁检测, 安全测试工具, 安全运维, 库, 应急响应, 恶意软件分析, 数字取证, 文件扫描, 日志审计, 模式匹配, 程序破解, 端点安全, 网络安全, 自动化脚本, 自动化资产收集, 补丁管理, 进程扫描, 隐私保护