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规则, 云安全监控, 无后门, 机器学习, 桌面应用, 逆向工具, 静态分析