2312702-NBTKNguyen/10_Yara_Python
GitHub: 2312702-NBTKNguyen/10_Yara_Python
一个基于 Python 和 YARA 的恶意代码扫描工具,通过哈希与规则双重检测并提供桌面界面与日志管理,解决本地文件安全检测与签名同步问题。
Stars: 0 | Forks: 0
# 应用程序中的 YARA 库用于检测恶意代码
**课程:** Python 编程
**学生:** Nguyễn Bá Thiều Khôi Nguyên - Hồ Quốc Long
## 1) 程序描述
这是一个使用 Python 编写的恶意代码扫描应用程序,结合了以下功能:
- 使用 YARA 规则集识别文件中的行为/恶意代码签名。
- 将哈希值(MD5/SHA1/SHA256/SHA3-384)与签名数据进行比对。
- 提供桌面界面以操作文件/目录扫描、查看日志和结果以及历史记录。
- 集成数据库以存储签名数据和扫描历史。
### 主要功能
- 扫描单个文件或整个目录。
- 通过两层检测:
- Hash Match:将哈希值与已同步的签名数据进行匹配。
- YARA Match:根据 rules 目录中的 YARA 规则进行匹配。
- 按文件显示检测结果(检测到 / 清洁 / 错误)。
- 将扫描报告保存到 logs 目录。
- 通过 MalwareBazaar API 同步签名数据。
## 2) 环境要求
- 操作系统:Linux/Windows/macOS
- Python:建议 3.11+
- pip 和虚拟环境
## 3) 分步运行指南
### 步骤 1:克隆源代码
```
git clone https://github.com/2312702-NBTKNguyen/10_Yara_Python.git
cd LapTrinhPython_DoAnGiuaKy_Yara
```
### 步骤 2:创建并激活虚拟环境
Linux/macOS:
```
python3 -m venv .venv
source .venv/bin/activate
```
Windows(PowerShell):
```
python -m venv .venv
.venv\Scripts\Activate.ps1
```
### 步骤 3:安装所需库
```
pip install -r requirements.txt
```
### 步骤 4:创建 .env 文件
在项目根目录基于 `.env.example` 创建 .env 文件并填写相应值。
注意:
- 如果没有 MB_AUTH_KEY,仍可使用 YARA 规则进行扫描。
- 如果缺少密钥,从 MalwareBazaar 同步签名的功能将报错。
### 步骤 5:运行应用程序
```
python main.py
```
### 步骤 6:界面操作
1. 选择要扫描的文件或目录。
2. (可选)点击“同步签名”以从 MalwareBazaar 更新哈希数据。
3. 点击“扫描”开始。
4. 监控:
- 结果表格中的 Results。
- 日志面板中的 Log。
- 历史面板中的 History。
5. 扫描完成后点击“导出报告”以在 logs 目录中打开报告。
## 4) 项目结构
```
LapTrinhPython_DoAnGiuaKy_Yara/
|-- config.py # Cấu hình ứng dụng, đọc biến môi trường
|-- main.py # Điểm vào chương trình
|-- requirements.txt # Danh sách thư viện Python
|-- pyproject.toml
|-- README.md
|
|-- data/
| `-- malware_signatures.json # Dữ liệu signatures sau khi đồng bộ
|
|-- data_tools/
| |-- __init__.py
| |-- data_loader.py # Khởi tạo dữ liệu signatures vào CSDL
| `-- db_setup.py # Kết nối CSDL, khởi tạo schema
|
|-- database/
| `-- create_schema.sql # Schema SQLite
|
|-- gui/
| |-- __init__.py
| |-- main_window.py # Giao diện chính
| `-- components/
| |-- __init__.py
| |-- history_panel.py # Panel lịch sử quét
| |-- log_panel.py # Panel log runtime
| `-- results_panel.py # Panel kết quả quét
|
|-- malware_scanner/
| |-- exceptions.py
| |-- reporting.py # Sinh file báo cáo quét
| |-- scanner.py # Engine quét chính
| `-- detection/
| |-- anti_evasion.py # Hỗ trợ xử lý biến thể mã độc dùng kỹ thuật né tránh
| |-- hashing.py # Tính hash file
| `-- yara_engine.py # Tải/áp dụng luật YARA
|
|-- rules/
| |-- index.yar # Điểm vào các luật
| |-- core/ # Nhóm luật lõi
| `-- malware_families/ # Luật theo từng họ mã độc
|
|-- logs/ # Kết quả báo cáo sau mỗi lần quét
`-- slides/ # Slide thuyết trình
```
## 5) 运行说明
- 如果尚未存在数据库 scanner.db,系统将在首次运行时自动创建。
- 如果规则文件路径发生变化,请在 .env 中更新 YARA_RULES_PATH。
- 对于大文件或大量文件,扫描时间取决于 CPU 和 I/O。
标签:AMSI绕过, API集成, ETW劫持, GUI, MalwareBazaar, MD5, Python, SHA1, SHA256, SHA3-384, YARA, 云资产可视化, 依赖管理, 反病毒, 可观测性, 哈希校验, 威胁检测, 数据库存储, 文件扫描, 无后门, 日志记录, 桌面应用, 毕业设计, 签名匹配, 签名同步, 虚拟环境, 规则匹配, 逆向工具, 项目实战