Shrey-pandey/signature-based-malware-detector
GitHub: Shrey-pandey/signature-based-malware-detector
结合哈希查询、YARA规则与机器学习模型的混合静态恶意软件检测系统,用于识别恶意Windows PE文件。
Stars: 0 | Forks: 0
# 🛡️ 基于签名的恶意软件检测系统
这是一个基于 Python 的桌面应用程序,用于进行**静态恶意软件分析**。它采用由机器学习、YARA 规则和加密签名匹配驱动的 **4 层检测 pipeline**。
## 📸 功能
- **4 层检测 Pipeline:**
- **第 1 层 – Hash 签名:** 在本地的 MySQL 数据库中查找 SHA-256 hash,该数据库包含源自 MalwareBazaar 的 41,000 多个已知恶意软件签名。
- **第 2 层 – YARA 规则:** 使用来自 `signature-base` 项目的自定义 YARA 规则集进行二进制模式匹配。
- **第 3 层 – 结构化 ML:** 基于 PE header 和 section 元数据特征训练的 Random Forest 模型。
- **第 4 层 – API 导入 ML:** 基于 Windows API 导入表模式训练的 XGBoost 模型。
- **加权决策引擎**采用智能规则以最小化误报(例如,能够正确处理 VSCode、WinRAR 和各类安装程序)。
- 使用 PySide6 构建的**现代深色模式 GUI**。
- **扫描历史记录**,包含时间戳、检测结论和风险评分。
- **PDF/文本报告生成**,每次扫描后自动保存。
- **可配置设置**(阈值、检测层开关)。
- **恶意软件模拟样本**(仅供测试使用 —— 不包含真实的恶意 payload)。
## 🏗️ 架构
```
Malware_detector/
│
├── main.py # Application entry point
│
├── gui/ # PySide6 GUI pages
│ ├── app.py
│ ├── main_window.py
│ ├── dashboard_page.py
│ ├── scan_page.py
│ ├── result_page.py
│ ├── history_page.py
│ ├── report_page.py
│ ├── about_page.py
│ ├── settings_page.py
│ └── worker.py
│
├── src/ # Core scanning & ML logic
│ ├── scanner.py # Hash lookup + YARA scan
│ ├── final_scanner.py # Full 4-layer pipeline orchestrator
│ ├── decision_engine.py # Weighted scoring & verdict logic
│ ├── real_predictor.py # Structural ML inference
│ ├── api_predictor.py # API ML inference
│ ├── report_generator.py # PDF/text report generation
│ ├── fetch_hashes.py # MalwareBazaar API integration
│ ├── import_feed.py # CSV feed importer to MySQL
│ ├── import_full_dump.py # Full dump importer to MySQL
│ └── ... # Feature extractors, training scripts
│
├── models/ # Pre-trained ML models (.pkl)
├── rules/ # YARA rule files (.yar)
├── data/ # Runtime data (history, settings, feeds)
├── reports/ # Generated scan reports (auto-created)
├── database/ # MySQL schema
│ └── schema.sql
│
├── .env.example # Template for environment variables
├── .gitignore
└── requirements.txt
```
## ⚙️ 安装说明
### 前置条件
- Python **3.10+**
- MySQL **8.0+**
- Git
### 1. Clone 仓库
```
git clone https://github.com/your-username/Malware_detector.git
cd Malware_detector
```
### 2. 创建并激活虚拟环境
```
python -m venv venv
# Windows
venv\Scripts\activate
# Linux / macOS
source venv/bin/activate
```
### 3. 安装依赖项
```
pip install -r requirements.txt
```
### 4. 设置数据库
将 schema 导入 MySQL:
```
mysql -u root -p < database/schema.sql
```
## 🔐 环境配置
本项目使用 `python-dotenv` 来管理敏感信息。**切勿硬编码凭据。**
### 1. 复制示例文件
```
cp .env.example .env
```
### 2. 使用你的实际值编辑 `.env`
```
DB_HOST=localhost
DB_PORT=3306
DB_NAME=malware_detector
DB_USER=root
DB_PASSWORD=your_mysql_password
MALWAREBAZAAR_API_KEY=your_malwarebazaar_api_key
```
## 🚀 使用说明
### 启动 GUI 应用程序
```
python main.py
```
### 填充 Hash 签名数据库
```
# 通过 MalwareBazaar API 获取最近的 hashes
python src/fetch_hashes.py
# 将生成的 CSV 导入 MySQL
python src/import_feed.py
```
### 训练 ML 模型(可选 —— 已包含预训练模型)
```
# Structural Random Forest 模型
python src/train_structural_model.py
# API 导入 XGBoost 模型
python src/train_api_xgboost.py
```
### 运行命令行扫描
```
python src/final_scanner.py
# 在提示时输入 .exe 文件的路径
```
## 🧪 检测 Pipeline —— 工作原理
| 层级 | 方法 | 触发条件 |
|-------|--------|---------|
| 1 | SHA-256 hash 查找 | 如果 hash 存在于数据库中,则立即判定为 MALWARE |
| 2 | YARA 二进制模式匹配 | 规则匹配时立即判定为 MALWARE |
| 3 | 结构化 ML (Random Forest) | PE header + section 熵特征 |
| 4 | API 导入 ML (XGBoost) | Windows API 导入表(1200+ 个 API) |
**决策引擎**将第 3 层和第 4 层的分数结合,按 70/30 的加权平均值进行计算,并应用以下三条智能规则:
1. **合法清理工具规则** —— 降低对大型、干净的专业软件的 API 评分
2. **木马/Dropper 规则** —— 提升对由 PyInstaller 打包的大型文件的警觉
3. **安装程序/归档工具规则**** —— 降低对无害安装程序的不确定评分
最终结论:`BENIGN`(良性) | `SUSPICIOUS`(可疑) | `MALWARE`(恶意软件)
## 🛠️ 使用的技术
| 技术 | 用途 |
|------------|---------|
| Python 3.10+ | 核心语言 |
| PySide6 | 桌面 GUI 框架 |
| MySQL + mysql-connector-python | Hash 签名数据库 |
| XGBoost | API 导入分类模型 |
| scikit-learn | 结构化 (Random Forest) 模型 |
| yara-python | YARA 规则扫描 |
| pefile | PE 文件解析 / 特征提取 |
| python-dotenv | 安全的环境变量管理 |
| joblib | 模型序列化 |
| requests | MalwareBazaar API 调用 |
| pandas | 数据集处理 |
## 📁 数据来源
- **Hash 签名:** [abuse.ch 的 MalwareBazaar](https://bazaar.abuse.ch/)
- **YARA 规则:** [Neo23x0 的 signature-base](https://github.com/Neo23x0/signature-base)
- **PE 特征:** 使用 `pefile` 进行自定义提取
## 📄 许可证
本项目根据 [LICENSE](LICENSE) 文件中的条款进行授权。
标签:Apex, DNS信息、DNS暴力破解, Python, YARA规则, 云安全监控, 无后门, 机器学习, 桌面应用, 逆向工具, 静态分析