Mlkias-B-H/YARA-auto-scanner
GitHub: Mlkias-B-H/YARA-auto-scanner
一个基于 Python 和 YARA 的威胁扫描学习项目,用于在 Windows 系统上运行自定义检测规则并对常见恶意软件文件夹进行批量扫描与匹配报告。
Stars: 0 | Forks: 0
# YARA 威胁狩猎扫描器
一个基于 Python 的扫描器,可运行自定义 YARA 规则来扫描常见的恶意软件目标文件夹,并输出清晰的匹配报告。我开发这个项目是为了从零开始学习 YARA 检测工程,包括了解真实规则在实际运行的 Windows 系统中的行为表现。
**展示的技能:** YARA 规则编写、检测工程、误报调优、Python 自动化、Windows 恶意软件目标分析。
## 功能说明
示例输出:
```
Folders to scan: [...]
[!] MATCH: C:\...\file.dll -> [Detect_Process_Injection]
Done. Scanned 1368 files. Threats found: 4.
```
## 项目结构
```
yara-threat-scanner/
├── README.md
├── scan_yara.py # main scanner
├── targetlib.py # reusable list of common malware target folders
├── rules/ # the YARA detection rules
│ ├── Detect_EICAR.yar
│ └── Detect_Process_Injection_Suspicious.yar
└── test_samples/ # harmless files to test detection
└── fake_malware.com (EICAR test file)
```
## 设置说明(逐步操作)
此扫描器是在 **Windows 11 虚拟机**上构建和测试的。您需要先安装 **Python** 和 **pip**,然后安装适用于 Python 的 YARA 库。
**1. 安装 Python**(包含 pip)
从 https://www.python.org/downloads 下载,并在安装过程中勾选 **"Add python.exe to PATH"**。
在新终端中验证:
```
python --version
pip --version
```
**2. 安装适用于 Python 的 YARA 库**
```
pip install yara-python
```
这就是您所需的全部内容。`yara-python` 已经包含了 YARA 引擎,因此您无需为了运行此脚本而单独安装 `yara.exe` 工具。
**3. 获取项目**
下载或克隆此代码库,然后在该文件夹中打开终端。
**4. 运行扫描器**
```
python scan_yara.py
```
它将扫描 `targetlib.py` 中列出的文件夹,并输出所有匹配项及摘要信息。
## 自定义设置
- **更改扫描文件夹:** 编辑 `targetlib.py` 中的列表。它会自动检测当前用户,因此默认路径在大多数 Windows 系统上均可运行,但您仍然可以添加或删除文件夹。
- **更改使用的规则:** 编辑 `scan_yara.py` 顶部的规则路径,将其指向 `rules/` 文件夹中的任何 `.yar` 文件。
- **测试功能是否正常:** 使用 EICAR 规则针对 `test_samples/` 文件夹运行扫描。它应该会报告与 `fake_malware.com` 匹配。
## 规则说明
**Detect_EICAR** — 同时以 ASCII 和宽字符编码匹配标准的 EICAR 防病毒测试字符串。这是一条精确且零误报的规则,因为该字符串仅出现在测试文件中。
**Detect_Process_Injection_Suspicious** — 搜索进程注入相关的 Windows API(`CreateRemoteThread`、`WriteProcessMemory`、`VirtualAllocEx`),并结合可疑的上下文环境(文件体积小,或包含 `cmd.exe /c`、`http://`、`.onion` 等字符串)。它使用了分组字符串和组合条件:
```
condition:
(3 of ($pI*) and filesize < 500KB)
or
(2 of ($pI*) and 1 of ($sus*))
```
## 学习心得
最大的收获来自于将注入规则在整个系统中运行:它匹配到了**合法软件**(Microsoft Edge、Windows Defender)。这些程序确实使用了与恶意软件相同的进程注入 API,因此仅基于 API 名称的规则会标记出许多正常文件。
这就是检测工程的核心现实:**合法软件和恶意软件在 API 层面往往看起来很相似。** 添加文件大小限制和可疑上下文字符串大大减少了误报,但仍有一些残留,因为像 Windows Defender 这样的安全工具合理地包含了这些 API 和网络字符串。
结论是:可靠的检测需要的不仅仅是常见的 API 名称。它需要结合多种指标、上下文以及 YARA 之外的其他信号(例如代码签名校验和文件信誉)。而 EICAR 规则展示了另一个极端,一个独特的字符串能提供精确且无误报的检测。
## 关于测试样本的说明
`test_samples/fake_malware.com` 是无害的 **EICAR 测试文件**,这是一个被防病毒和检测工具识别为测试“威胁”的标准字符串。它不包含真实的恶意代码,也不会对系统造成任何损害。防病毒软件可能仍会在下载时将其隔离,这是预期行为,并证实检测功能正在正常工作。
**作者:** Mlkias
*网络安全学习项目。从规则编写到扫描器开发再到误报调优,每一个环节都是一次学习的过程。在 Windows 11 虚拟机上构建并测试,针对 EICAR 测试文件和实际运行的系统进行检测。*
标签:逆向工具