0x5da/Malware-behavior-analyzer
GitHub: 0x5da/Malware-behavior-analyzer
一个针对 Windows PE 文件的轻量级恶意软件分析沙箱,结合静态特征提取与动态行为监控进行风险评估。
Stars: 1 | Forks: 0
## 行为分析器
*由 0x5da (toasty/OsintToast/WoahToast) 创建*
针对 Windows PE 可执行文件的恶意软件静态和动态分析沙箱。在隔离环境中执行二进制反汇编检测、可疑 API 模式匹配、代码注入识别以及运行时行为分析。
### 开发背景
专为需要快速对可疑可执行文件进行分类的安全分析师和恶意软件研究人员开发。旨在隔离环境中执行静态分析(导入表、区段、加壳检测)和动态分析(执行监控、API 调用跟踪),从而无需依赖外部沙箱即可快速进行风险评估和威胁分类。
### 功能特性
- **静态分析**:导入扫描、导出检测、区段分析(UPX、.rsrc、.reloc)
- **动态分析**:在隔离子进程中进行执行跟踪,包含 I/O 监控
- **注入检测**:针对进程镂空 (Process Hollowing)、DLL 注入、代码洞 的模式匹配
- **API 模式匹配**:检测对 CreateProcess、WriteProcessMemory、SetWindowsHookEx 等的调用
- **风险评分**:结合加权行为指标进行整体威胁评估
- **详细报告**:将检测到的行为和风险指标导出为 JSON 格式
### 工作原理
静态阶段使用 Python 的 `struct` 模块和二进制解析提取 PE 头、导入表和区段。动态阶段在有限环境中生成目标进程,并进行标准输入输出重定向和退出代码捕获。API 模式匹配对反汇编输出和导入表使用正则表达式。风险评分对指标进行加权(例如,进程注入 = 8 分,代码洞 = 5 分),并计算出 0-10 的风险等级。
### 安装与使用
```
pip install -r requirements.txt
python sandbox.py [-t TIMEOUT] [-o OUTPUT]
```
**参数:**
- `file`:Windows PE 可执行文件 (EXE/DLL) 的路径
- `-t, --timeout`:执行超时时间(秒)(默认值:5)
- `-o, --output`:将结果导出到 JSON 文件
**示例:**
```
# 分析可疑 executable
python sandbox.py suspect.exe
# 10 秒执行 timeout
python sandbox.py malware.exe -t 10
# 导出详细报告
python sandbox.py sample.exe -o analysis_report.json
```
### 系统要求
- Python 3.8+(动态分析需要 Windows 系统)
- subprocess(标准库)
- tempfile(标准库)
- pathlib(标准库)
- dataclasses(标准库)
### 风险评分矩阵
| 指标 | 分数 | 严重程度 |
|-----------|------|----------|
| 检测到进程注入 | 8 | CRITICAL |
| 修改代码段 | 7 | HIGH |
| 发现代码洞(填充) | 5 | MEDIUM |
| 非常见导入 | 4 | MEDIUM |
| 导出转发 | 3 | LOW |
| UPX 压缩 | 6 | HIGH |
风险等级计算:
- 0-2:干净 (Clean)
- 3-5:可疑
- 6-8:极可能恶意
- 9-10:确认恶意
### 静态分析输出
```
[*] Static Analysis
[*] ====================================
[+] File: sample.exe
[+] Size: 234567 bytes
[+] Architecture: PE32
[+] Signature: [MISSING] - unsigned!
[!] SUSPICIOUS IMPORTS
- WriteProcessMemory (process injection)
- CreateRemoteThread (code execution)
- VirtualAllocEx (memory allocation)
- SetWindowsHookEx (global hooks)
[!] SUSPICIOUS SECTIONS
- .rsrc: 56789 bytes (resources, often packed)
- UPX packed: DETECTED (indicates obfuscation)
[!] CODE CAVES DETECTED
- 2 caves found (>1024 bytes padding)
```
### 动态分析输出
```
[*] Dynamic Analysis
[*] ====================================
[*] Execution timeout: 5 seconds
[+] Process spawned (PID: 3456)
[+] Exit time: 2.3 seconds
[+] Exit code: 0
[!] RUNTIME BEHAVIORS
- Accessed: HKCU\Software\Microsoft\Windows
- Accessed: C:\Windows\Temp
- Created: temp_6C2A.tmp
[*] Risk Assessment
Risk Score: 6/10 [LIKELY MALICIOUS]
Indicators: 3 suspicious imports + 2 code caves
```
### 注意事项
- 动态分析在具有有限权限的临时目录中运行;测试是安全的
- 所有文件修改都是隔离的;不会对系统进行永久性更改
- 超时针对每个进程;长时间运行的样本可能无法完成
- 退出代码解释:0 = 正常,非零 = 错误(因恶意软件而异)
- 某些恶意软件会检测分析环境并拒绝执行
### 常见问题与解决方法
- **“Access Denied”(访问被拒绝)**:某些可执行文件需要管理员权限
- **超时且无输出**:二进制文件可能在等待用户输入或网络资源
- **误报**:合法软件可能包含代码洞或可疑导入
- **无动态分析结果**:二进制文件可能立即崩溃(退出代码跟踪提供线索)
### 分析局限性
- 无法检测内核模式恶意软件
- 不分析 DLL/OBJ 文件恶意软件
- 行为分析时间较短(默认 5 秒);复杂恶意软件可能不会触发指标
- 无网络流量捕获
- 无法检测多态/变形行为(需要多次执行)
### 取证应用
1. **应急响应**:快速筛选未知二进制文件
2. **威胁情报**:确认恶意软件签名和行为模式
3. **沙箱基线化**:识别异常的系统访问模式
4. **容器扫描**:集成到 CI/CD 流水线中进行二进制验证
### 高级用法
延长执行时间以捕获更多行为:
```
python sandbox.py sample.exe -t 30 # 30-second execution
```
修改代码中的风险评分权重以适应组织特定需求:
```
RISK_WEIGHTS = {
"process_injection": 10, # Increase critical indicator weight
"code_cave": 3, # Decrease moderate indicator
}
```
标签:AMSI绕过, API监控, Conpot, DAST, PE文件分析, Python, Windows安全, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码注入检测, 反病毒, 合规性检查, 威胁检测, 恶意软件分析, 无后门, 沙箱, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 静态分析, 风险评分