Armin-devhub/yara-malware-portfolio
GitHub: Armin-devhub/yara-malware-portfolio
一套包含 YARA 规则库、桌面规则管理器和命令行扫描器的恶意软件检测工具集,旨在通过文件内容模式匹配并配合 VirusTotal 进行威胁情报分流。
Stars: 0 | Forks: 0
# YARA 恶意软件检测作品集
一个用于检测文件中恶意软件的 **YARA 规则**库 —— 包含一个用于读取、编写、编辑、运行和*浏览*规则的**桌面应用程序**,一个可针对任何文件或文件夹运行规则的扫描器,以及一个内置的**威胁情报交接**功能,可通过配套的 IOC 工具将匹配的文件转化为 VirusTotal 判定结果。
本项目作为 SOC 分析师 / 检测工程作品集的一部分而构建。作为配套的 [Sigma 项目](https://github.com/Armin-devhub/sigma-detection-portfolio)检测**日志事件**的补充,本项目专注于检测**文件内容** —— 共同构成了检测的全貌。

```
┌──────────────┐ ┌──────────────┐ ┌───────────────────┐ ┌──────────────┐
│ Files / │ → │ YARA rules │ → │ matches + SHA256 │ → │ VirusTotal │
│ a download │ │ (this repo) │ │ (GUI or scanner) │ │ (IOC tool) │
└──────────────┘ └──────────────┘ └───────────────────┘ └──────────────┘
```
## 什么是 YARA(以及它与 Sigma 的区别)
YARA 是一个针对**文件和内存**的模式匹配引擎 —— “恶意软件研究人员的模式匹配瑞士军刀”。一条规则表述的是*“如果此文件包含这些字符串 / 字节,则它就是可疑的。”*
| | **Sigma** | **YARA** |
|---|---|---|
| 检查对象 | 日志**事件**(发生了什么) | 文件**内容**(具体字节) |
| 回答问题 | “是否发生了可疑操作?” | “此文件是否为恶意?” |
| 应用场景 | SIEM / EDR | 防病毒软件、恶意软件分析、IR |
两者你都需要:无文件攻击不会留下文件(Sigma 会捕获日志事件);而存在于磁盘上的恶意软件尚未产生日志(YARA 会捕获文件)。
## 两种规则来源 — *审核版* 和 *强化版*
就像真正的 LOKI/THOR 扫描器一样,你可以选择引擎加载哪个规则集:
- **审核版 (Vetted)** — [`rules/`](rules/) 中由我本人编写并理解的纯手写规则,经过调整以实现**低误报**。
- **强化版 (Strong)** — 一个专业的社区规则包(Florian Roth 的 [signature-base](https://github.com/Neo23x0/signature-base),约 5,900 条规则),提供广泛的已知恶意软件覆盖。按需获取;在应用程序中只读浏览。
加载器会**逐个文件**进行编译,声明专业规则所需的外部变量(`filename`, `filepath`, ...),并且**跳过任何无法编译的内容**而不是崩溃 —— 然后报告已加载的内容。
## 审核版规则
每一条规则都是 [`rules/`](rules/) 中的一个 YARA 文件,包含描述、MITRE 映射和严重级别。前四条规则专门针对**审核软件下载**进行了调整(即研究人员在盗版“重打包版”中发现的恶意软件类别):
| 规则 | MITRE | 级别 | 检测内容 |
|------|-------|-------|---------|
| CryptoMiner 指标 | T1496 | high | XMRig / Monero 矿机(加密劫持) |
| Infostealer — 浏览器凭据 | T1555.003, T1539 | high | 窃取浏览器密码、cookies、钱包的盗取软件 |
| Infostealer — Discord Webhook 渗透 | T1567, T1528 | high | Discord token 抓取器 / webhook 渗透 |
| 可疑安装程序 — Defender 篡改 / 持久化 | T1562.001, T1053.005, T1547.001 | high | 禁用 Defender、解码 payload、执行持久化的安装程序 |
| 可疑 PowerShell 下载器 | T1059.001, T1105 | high | 下载并执行型投放器 |
| HackTool — Mimikatz | T1003 | critical | 凭据转储工具字符串 |
| WebShell — 通用 PHP/ASPX | T1505.003 | high | 服务端 web shells |
| EICAR 测试文件 | N/A | informational | 标准的安全 AV 自检 |
## 桌面应用程序 — YARA 规则管理器
```
python -m yara_manager # or double-click Launch-YARA-Manager.bat
```
- **读取 / 浏览** — 选择一条规则以查看易读的摘要及其 YARA 源码。在*强化版*模式下,可浏览整个社区规则包(只读)。
- **创建 / 编辑 / 删除** — 通过模板编写规则;它在**保存前会被编译**,因此损坏的 YARA 无法保存(仅限你自己的规则)。
- **运行** — 针对你的文件运行选定的规则,或选择*运行所有规则*;匹配结果会根据严重程度进行颜色编码。
- **选择文件 / 文件夹** — 扫描磁盘上的任何内容(只读;绝不执行文件)。
- **哈希文件** — 对每个文件计算 SHA256(可选择*仅限可执行文件*,以遵守 API 限制)并将其写出,以便进行 VirusTotal 查询。
## 威胁情报交接 — YARA → 哈希 → VirusTotal
一次干净的 YARA 扫描并不能证明文件是安全的(你的规则了解的信息有限),因此真正的工作流会转向多引擎情报。扫描器会打印出每个匹配文件的 **SHA256**,并将它们写入 `out/`,为配套的 [IOC 富化工具](https://github.com/Armin-devhub/ioc-enrichment-tool) 做好准备:
```
# 在 IOC 工具中:
python -m ioc_enrich.cli --hash # 60+ AV engines vote
```
这将文件层检测(YARA)串联到了威胁情报分流(VirusTotal)中 —— 构成了真实分流 pipeline 的两半。
## 快速开始
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python yara_scan.py # scan samples/ with vetted rules
python yara_scan.py --rules vetted # scan a folder
python fetch_community_rules.py # download the Strong pack (~5,900 rules)
python yara_scan.py --rules community
```
## 试一试 — 模拟的恶意“重打包版”
[`test-repacks/SuperGame-FitGirl-Repack/`](test-repacks/) 是一个**安全**的文件夹,其结构类似于盗版游戏下载,在 `crack/` 文件夹中植入了无害的合成 payload。对其进行扫描可以验证审核版规则能否捕获植入的加密矿机、token 抓取器和篡改 Defender 的安装程序 —— 同时让干净的游戏文件通过。此过程不涉及任何真实的恶意软件。
```
python yara_scan.py "test-repacks/SuperGame-FitGirl-Repack" --rules vetted
```
## 项目结构
```
yara-malware-portfolio/
├── rules/ # the vetted YARA rules (.yar)
├── samples/ # safe synthetic samples that fire the rules
├── test-repacks/ # a simulated malicious game folder (safe)
├── yara_manager.py # desktop GUI (read/write/edit/delete/run/browse)
├── yara_scan.py # CLI scanner (--rules vetted|community)
├── ruleset.py # shared rule loader (vetted / community)
├── fetch_community_rules.py # downloads the Strong community pack
├── make_eicar.py # generates a real EICAR file on demand (git-ignored)
├── Launch-YARA-Manager.bat # double-click launcher
├── requirements.txt
└── README.md
```
## 注意事项
- **设计安全。** 不提交任何真实的恶意软件。样本为合成的文本;EICAR 文件按需生成且被 git 忽略(你的 AV 会将其隔离 —— 这正是目的所在)。社区规则包在本地获取,不进行提交。
- **不是防病毒软件。** 这是一个学习 / 分流工具。真正的防护需要维护良好的引擎和行为检测 —— YARA 只是其中的一个静态层。
- 与配套的 [Sigma](https://github.com/Armin-devhub/sigma-detection-portfolio) 和 [IOC 富化](https://github.com/Armin-devhub/ioc-enrichment-tool) 项目具有相同的检测工程经验。
标签:DNS 反向解析, IP 地址批量处理, SOC分析工具, YARA, 云资产可视化, 威胁情报, 开发者工具, 文件扫描器, 桌面应用, 网页爬虫, 自定义DNS解析器, 逆向工具