dimaskaje/Malware-Detector-using-YARA-Rules
GitHub: dimaskaje/Malware-Detector-using-YARA-Rules
该项目是一个基于 YARA 规则的恶意软件静态检测工具包,通过预置的十大类威胁规则和 Python 扫描脚本实现批量样本分析与威胁等级评估。
Stars: 0 | Forks: 0
# 🛡️ YARA 恶意软件检测器
一个基于 YARA 的静态分析工具包,用于检测跨多个威胁类别的恶意行为模式。在 [REMnux](https://remnux.org/)(一个用于恶意软件分析的 Linux 发行版)上构建并测试。
## 📋 目录
- [概述](#overview)
- [项目结构](#project-structure)
- [检测类别](#detection-categories)
- [环境要求](#requirements)
- [安装说明](#installation)
- [使用方法](#usage)
- [输出结果](#output)
- [结果示例](#sample-results)
- [运行环境](#environment)
- [免责声明](#disclaimer)
## 概述
该项目提供了一套包含 **10 个 YARA 规则文件**的集合,涵盖常见的恶意软件行为,并配有一个 Python 扫描程序,可自动化执行批量扫描、记录规则的匹配与未命中情况、评估威胁等级,并支持导出为多种格式。
## 项目结构
```
malware-detector/
│
├── results/ # Scan output — auto-generated
│
├── rules/ # YARA rule files (one per category)
│ ├── rule_01.yar # Suspicious PowerShell
│ ├── rule_02.yar # Macro Behavior
│ ├── rule_03.yar # Downloader Clues
│ ├── rule_04.yar # Packed Binary Hints
│ ├── rule_05.yar # Credential Theft
│ ├── rule_06.yar # Ransom Note Strings
│ ├── rule_07.yar # Suspicious URLs
│ ├── rule_08.yar # Persistence Clues
│ ├── rule_09.yar # Obfuscation Patterns
│ └── rule_10.yar # Remote Access Tool (RAT)
│
├── sample_name.md
├── scan.py # Main scanner harness
├── Sample_scan_results.PNG
├── Rule_Effectiveness.PNG
├── Summary_statistics.PNG
└── README.md
```
## 检测类别
| # | 规则文件 | 类别 | 检测内容 |
|---|-----------|----------|---------|
| 1 | `rule_01.yar` | **PowerShell** | 执行策略绕过、编码命令、AMSI 绕过、下载诱饵 |
| 2 | `rule_02.yar` | **宏** | AutoOpen/AutoClose, Shell(), XMLHTTP, ADODB.Stream, VBA 安全设置篡改 |
| 3 | `rule_03.yar` | **Downloader** | URLDownloadToFile, WinHTTP, BITS 滥用, certutil, 可疑临时路径 |
| 4 | `rule_04.yar` | **加壳二进制文件** | UPX, ASPack, Themida, VMProtect, Obsidium, 可疑节名 |
| 5 | `rule_05.yar` | **凭据窃取** | Mimikatz/sekurlsa, LSASS 转储, SAM/SYSTEM 配置单元, 浏览器凭据存储 |
| 6 | `rule_06.yar` | **勒索软件** | 勒索信文本, Bitcoin/Tor 支付说明, 加密 API 调用 |
| 7 | `rule_07.yar` | **可疑 URL** | 原始 IP URL, 挂马粘贴站点 C2, 动态 DNS, ngrok 隧道, .onion 域名 |
| 8 | `rule_08.yar` | **持久化** | 注册表 Run 键, 计划任务, 服务安装, WMI, 启动文件夹 |
| 9 | `rule_09.yar` | **混淆** | Base64 块, FromBase64String, XOR/RC4, 字符数组技巧, Invoke-Obfuscation |
| 10 | `rule_10.yar` | **RAT** | Cobalt Strike, Metasploit, AsyncRAT, Remcos, 键盘记录器钩子, 进程注入 |
## 环境要求
- Python 3.10+
- [yara-python](https://pypi.org/project/yara-python/)
- [rich](https://pypi.org/project/rich/) *(可选,用于终端彩色输出)*
## 安装说明
```
# 克隆 repository
git clone https://github.com/dimaskaje/Malware-Detector-using-YARA-Rules.git
cd malware-detector
# 安装 dependencies
pip install yara-python rich
```
## 使用方法
### 基础扫描(默认路径)
```
python scan.py
```
要求脚本所在的相对路径下存在 `./rules/` 和 `./samples/` 目录。
### 自定义路径
```
python scan.py -r ./rules -s ./samples -o ./results
```
### 带误报基线扫描
```
python scan.py -r ./rules -s ./samples -c ./clean -o ./results
```
`./clean/` 目录中的文件会被单独扫描。任何在干净文件上触发的规则都会被标记,如果恶意软件样本仅匹配到这些规则,则会被标记为 **误报候选**。
### 所有选项
```
-r, --rules Path to rules directory (default: ./rules)
-s, --samples Path to samples directory (default: ./samples)
-c, --clean Path to clean files dir (optional, for FP analysis)
-o, --output Path to output directory (default: ./results)
```
## 输出结果
每次扫描运行后,都会在输出目录中保存四个带有时间戳的文件:
| 文件 | 格式 | 内容 |
|------|--------|----------|
| `scan_results_.json` | JSON | 完整详情:匹配的规则、字符串命中、偏移量、每个样本的元数据 |
| `detection_matrix_.csv` | CSV | 样本 × 规则矩阵 — 每个单元格为 `HIT` 或 `miss` |
| `scan_report_.txt` | TXT | 可读性高的报告,包含威胁等级和规则摘要 |
| `suspicious_samples_.txt` | TXT | HIGH/CRITICAL 样本的扁平列表,包含哈希值和匹配的规则 |
### 威胁等级评分
| 分数 | 等级 | 含义 |
|-------|-------|---------|
| 0 | `CLEAN` | 没有匹配的规则 |
| 1 | `LOW` | 匹配 1 条规则 |
| 2–3 | `MEDIUM` | 匹配 2–3 条规则 |
| 4–5 | `HIGH` | 匹配 4–5 条规则 |
| 6+ | `CRITICAL` | 匹配 6 条及以上规则 |
## 结果示例
```
Sample Matches Misses Threat Categories
──────────────────────────────────────────────────────────────────
Sample_01.exe 5 5 HIGH Suspicious_PowerShell, Suspicious_Downloader, Credential_Theft_Strings, Persistence_Mechanism, Remote_Access_Tool
Sample_02.exe 3 7 MEDIUM Persistence_Mechanism, Obfuscation_Patterns, Remote_Access_Tool_Clues
Sample_03.elf 1 9 LOW Obfuscation_Patterns
Sample_04.exe 2 8 MEDIUM Persistence_Mechanism, Obfuscation_Patterns
Sample_05.exe 1 9 LOW Obfuscation_Patterns
...
```
## 运行环境
| 组件 | 版本 |
|-----------|---------|
| 操作系统 | REMnux (基于 Ubuntu) |
| 虚拟化环境 | VirtualBox |
| Python | 3.10+ |
| yara-python | latest |
| YARA 引擎 | 4.x |
## 免责声明
标签:DNS 反向解析, Python, YARA, 云安全监控, 云资产可视化, 威胁情报, 开发者工具, 搜索语句(dork), 无后门, 逆向工具, 静态分析