armaghan30/malware-analysis-toolkit
GitHub: armaghan30/malware-analysis-toolkit
一个集成了静态特征解析与 Docker 沙箱动态隔离的 Python 恶意软件分析工具包,能够自动提取样本指标并生成带有威胁评分的分析报告。
Stars: 0 | Forks: 0
# 恶意软件行为沙箱与静态分析工具包
一个 Python 工具包,用于对可疑文件(PE 可执行文件、脚本和文档)执行**静态**和**动态(行为)**分析。专为数字取证和恶意软件分析课程作业而构建。
## 功能
### 静态分析
- **PE 头解析** — 导入表、节区、入口点、各节区熵值
- **字符串提取** — URL、IP、注册表键、可疑 API 调用(VirtualAlloc、CreateRemoteThread 等)
- **YARA 规则匹配** — 针对精心策划的规则集进行扫描(勒索软件、键盘记录器、加壳工具、C2 指标)
- **哈希生成** — MD5、SHA1、SHA256 和 ssdeep 模糊哈希
### 行为沙箱
- 启动一个**隔离的 Docker 容器**且无网络访问权限
- 在超时限制内执行样本
- 捕获**文件系统更改**、**网络连接尝试**和**生成的进程**
- 资源受限(256MB 内存,50% CPU)以确保安全
### 报告生成
- **JSON + HTML 报告**,采用暗色主题的专业 UI
- **威胁评分**(0–100),在 6 个类别中进行加权细分
- **IOC 提取** — 哈希、IP、域名、文件路径
- 判定结果:CLEAN / POTENTIALLY UNWANTED / SUSPICIOUS / MALICIOUS
## 项目结构
```
malware-analysis-toolkit/
├── main.py # CLI entry point
├── app.py # Flask web interface
├── config.py # Configuration and weights
├── requirements.txt
├── Dockerfile # Sandbox container image
├── analyzer/
│ ├── static/
│ │ ├── pe_analyzer.py # PE header parsing & entropy
│ │ ├── string_extractor.py # String & IOC extraction
│ │ ├── hash_generator.py # MD5, SHA256, ssdeep
│ │ └── yara_scanner.py # YARA rule engine
│ ├── behavioral/
│ │ └── sandbox.py # Docker sandbox manager
│ └── reporting/
│ ├── threat_scorer.py # Weighted threat scoring
│ └── report_generator.py # JSON/HTML report builder
├── yara_rules/
│ └── general_malware.yar # Curated YARA ruleset
├── sandbox_scripts/
│ └── analyze.sh # In-container analysis script
├── templates/
│ └── index.html # Flask web UI template
├── test_samples/ # Safe test files
│ ├── eicar_test.com
│ ├── suspicious_script.bat
│ ├── benign_hello.py
│ └── fake_c2_beacon.txt
└── reports/ # Generated reports (auto-created)
```
## 设置与安装
### 前置条件
- Python 3.9+
- Docker(可选,用于行为分析)
### 安装依赖项
```
pip install -r requirements.txt
```
### 构建沙箱镜像(可选)
```
python main.py --build-sandbox
```
## 用法
### 命令行
```
# 分析文件 (Static + sandbox)
python main.py path/to/suspicious_file.exe
# 仅 Static 分析 (无需 Docker)
python main.py path/to/file.exe --skip-sandbox
# 启动 Web 界面
python main.py --web
python main.py --web --port 8080
```
### Web 界面
```
python main.py --web
```
在浏览器中打开 `http://localhost:5000`。通过 UI 上传文件并查看报告。
## 测试样本与预期输出
### 1. `eicar_test.com` — EICAR 防病毒测试文件
用于验证防病毒检测的行业标准测试文件。
**预期结果:**
- YARA 匹配:`EICAR_Test_File` 规则
- 威胁评分:~8–15(低,因为它只是一个测试字符串)
- 判定结果:CLEAN 或 POTENTIALLY UNWANTED
### 2. `suspicious_script.bat` — 模拟恶意批处理脚本
包含可疑字符串:PowerShell 绕过、编码命令、勒索软件短语、比特币地址、注册表持久化路径。
**预期结果:**
- YARA 匹配:`Suspicious_PowerShell_Commands`、`Ransomware_Indicators`、`Keylogger_Indicators`
- 可疑关键词:powershell、cmd.exe、bitcoin、encrypt、keylogger
- IOC:URL、IP、注册表键
- 威胁评分:~50–70 (SUSPICIOUS)
### 3. `benign_hello.py` — 干净的 Python 脚本
一个简单的 hello world 脚本,没有可疑指标。
**预期结果:**
- 无 YARA 匹配
- 无可疑字符串
- 威胁评分:0 (CLEAN)
### 4. `fake_c2_beacon.txt` — 模拟 C2 配置
包含大量恶意特征的字符串:C2 URL、加密钱包地址、API 调用引用、注册表键。
**预期结果:**
- YARA 匹配:`Suspicious_PowerShell_Commands`、`Ransomware_Indicators`、`Suspicious_API_Calls`、`Network_Backdoor`
- 大量 IOC 提取:IP、域名、文件路径
- 威胁评分:~70–90 (MALICIOUS)
## 威胁评分细分
| 类别 | 最大权重 | 衡量内容 |
|----------------------|------------|-------------------------------------------|
| 可疑导入 | 15 | 用于注入/规避的 Windows API 调用 |
| 可疑字符串 | 15 | 恶意软件关键词 + IOC 数量 |
| 高熵值 | 10 | 加壳/加密的节区(熵值 > 7.0) |
| YARA 匹配 | 25 | 规则集中触发的规则 |
| 网络活动 | 20 | 沙箱中的出站连接 |
| 文件系统更改 | 15 | 沙箱中创建/修改的文件 |
**判定结果:**
- 0–24: **CLEAN**
- 25–49: **POTENTIALLY UNWANTED**
- 50–74: **SUSPICIOUS**
- 75–100: **MALICIOUS**
## 包含的 YARA 规则
| 规则 | 严重程度 | 检测内容 |
|------|----------|---------|
| EICAR_Test_File | Info | EICAR 防病毒测试字符串 |
| Suspicious_PowerShell_Commands | High | 混淆的 PowerShell 模式 |
| Suspicious_API_Calls | High | 进程注入 API 组合 |
| Ransomware_Indicators | Critical | 勒索信、加密钱包、加密扩展名 |
| Keylogger_Indicators | High | 击键捕获 API |
| Packed_Binary | Medium | UPX、Themida、VMProtect 加壳工具 |
| Network_Backdoor | Critical | Shell + 网络套接字组合 |
## 技术栈
- **Python 3** — 核心语言
- **pefile** — PE 可执行文件解析
- **yara-python** — YARA 规则匹配引擎
- **ssdeep** — 用于相似度检测的模糊哈希
- **Docker SDK** — 用于沙箱化的容器管理
- **Flask** — Web 界面
- **Jinja2** — HTML 报告模板
- **colorama** — 彩色 CLI 输出
## 免责声明
本工具包专为**教育目的**而构建 — 特别是用于数字取证和恶意软件分析课程作业。包含的所有测试样本都是**安全的**,不包含任何实际的恶意代码。EICAR 测试文件是行业标准的防病毒测试字符串。其他样本仅包含模拟恶意模式的文本字符串。
**请勿在适当隔离的环境之外使用此工具包分析实际的恶意软件。**
标签:DAST, DNS信息、DNS暴力破解, Docker, Flask, IOC提取, PE文件解析, Python, ssdeep, YARA规则, 云安全监控, 动态沙箱, 哈希生成, 威胁情报, 威胁评分, 安全防御评估, 开发者工具, 恶意样本分析, 恶意软件分析, 数字取证, 数据包嗅探, 无后门, 沙箱逃逸防护, 网络信息收集, 网络安全, 自动化脚本, 请求拦截, 逆向工具, 隐私保护, 静态分析