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规则, 云安全监控, 动态沙箱, 哈希生成, 威胁情报, 威胁评分, 安全防御评估, 开发者工具, 恶意样本分析, 恶意软件分析, 数字取证, 数据包嗅探, 无后门, 沙箱逃逸防护, 网络信息收集, 网络安全, 自动化脚本, 请求拦截, 逆向工具, 隐私保护, 静态分析