Nandish1262/Automated-Malware-Analysis-Framework-With-Persistence-Behavioral-Detection

GitHub: Nandish1262/Automated-Malware-Analysis-Framework-With-Persistence-Behavioral-Detection

一个集成静态PE分析、动态沙箱执行与Sysmon行为监控的自动化恶意软件分析框架,专注于持久化检测与威胁评分。

Stars: 0 | Forks: 0

# 自动化恶意软件分析框架 ### 使用静态和动态分析 ## 目录 - [概述](#overview) - [功能](#features) - [架构](#architecture) - [环境要求](#requirements) - [安装说明](#installation) - [配置](#configuration) - [用法](#usage) - [示例结果](#sample-results) - [项目结构](#project-structure) - [主要发现](#key-findings) - [局限性](#limitations) - [免责声明](#disclaimer) ## 概述 本框架使用两种互补的技术分析 Windows PE 可执行文件: - **静态分析** — 在不执行二进制文件的情况下对其进行检查。提取 PE 导入,检测可疑 API,并通过 `dnfile` 执行 .NET 程序集分析,以处理逃避常规 PE 扫描的托管恶意软件。 - **动态分析** — 在隔离的 Windows 10 VM 中执行每个样本,通过 Sysmon 监控系统行为 60 秒,导出事件日志,并解析其中的持久化、进程和注册表活动。 两个阶段的结果经过关联、评分(0–100)、分类,并对照 VirusTotal 进行验证。自动生成逐样本报告和汇总报告。 ## 功能 | 功能 | 描述 | |---|---| | PE 静态分析 | 提取 30 多个可疑 API 类别:持久化、注入、网络、逃逸 | | .NET 程序集分析 | 通过 `dnfile` 扫描 MemberRef、TypeRef、用户字符串 — 检测混淆的 .NET 恶意软件 | | VM 沙箱自动化 | 完整的 VMware 生命周期:恢复快照 → 执行 → 监控 → 导出日志 → 停止 | | Sysmon 监控 | 在实时执行期间捕获事件 ID 1(进程)、12/13(注册表) | | 持久化检测 | 检测注册表 Run/RunOnce 键写入,并包含合法条目白名单 | | 持久化 hammered | 检测重复的键写入(激进的持久化模式) | | 静态与动态关联 | 将预测结果与运行时发现进行比较 — 识别误报 | | 威胁评分 | 基于持久化、注入、网络、注册表活动的 0–100 加权评分 | | MITRE ATT&CK 映射 | 将发现结果映射到 T1547.001, T1055, T1059, T1071, T1041, T1112 | | VirusTotal 集成 | 通过 VT API v3 对照 70 多个 AV 引擎验证 SHA256 哈希 | | 自动化报告 | 逐样本 7 节报告 + 包含 VT 检出率的全局摘要 | | 批量处理 | 自动处理 `samples/` 目录中的所有样本 | ## 架构 ``` Host Machine (Controller) ├── static_analysis.py ← PE + .NET static analysis ├── dynamic_runner.py ← VM automation and execution ├── dynamic_parser.py ← Sysmon log parsing ├── correlation_engine.py ← Static vs dynamic correlation + scoring ├── virustotal_lookup.py ← VirusTotal API validation └── report_generator.py ← Report generation └── visual_report_generator.py ← Visual Report generation ↓ vmrun + shared folder Windows 10 VM Sandbox ├── Sysmon (Event ID 1, 12, 13) ├── run_sample.bat └── Snapshot: CLEAN_BASE_DEFENDER_DISABLED ``` **Pipeline 流程:** ``` samples/*.exe → static_analysis.py → logs/parsed/static_*.json → dynamic_runner.py → logs/raw/*/sysmon.evtx → dynamic_parser.py → logs/parsed/*_analysis.json → correlation_engine.py → logs/parsed/*_correlation.json → virustotal_lookup.py → logs/parsed/vt_*.json → report_generator.py → reports/per_sample/*_report.txt → reports/summary/analysis_summary.txt → visual_report_generator.py → reports/visual_report.html ``` ## 环境要求 ### 主机 - Windows 10/11 64 位 - Python 3.10+ - VMware Workstation Pro/Player ### Python 库 ``` pefile dnfile requests pyyaml ``` 安装所有依赖: ``` pip install pefile dnfile requests pyyaml ``` ### VM 沙箱 (Windows 10 客户机) - 已安装 Sysmon64 并配置注册表监控 - 已安装 VMware Tools - Windows Defender 已禁用 - 共享文件夹映射到 `C:\Shared` - 存在 `C:\Tools\run_sample.bat` - 已拍摄干净快照 ### 外部工具 - `vmrun.exe` — 包含在 VMware Workstation 中 - `wevtutil.exe` — Windows 内置 - VirusTotal API 密钥(可在 [virustotal.com](https://www.virustotal.com) 免费获取) ## 安装说明 **1. 克隆仓库** ``` git clone https://github.com/yourusername/malware-analysis-framework.git cd malware-analysis-framework ``` **2. 安装 Python 依赖** ``` pip install pefile dnfile requests pyyaml ``` **3. 设置 VM 沙箱** - 在 VMware Workstation 中安装 Windows 10 - 在 VM 中安装 Sysmon: ``` Sysmon64.exe -i C:\Tools\sysmon.xml ``` - 禁用 Windows Defender 实时保护 - 配置 VMware 共享文件夹:主机 `vm_shared/` → 客户机 `C:\Shared` - 在 VM 中创建 `C:\Tools\run_sample.bat`: ``` @echo off set SAMPLE=%~1 start "" "%SAMPLE%" exit /b 0 ``` - 拍摄名为 `CLEAN_BASE_DEFENDER_DISABLED` 的干净快照 **4. 配置框架** 编辑 `controller/config.yaml`: ``` vmx_path: "D:/Windows 10/Windows 10 x64.vmx" snapshot: "CLEAN_BASE_DEFENDER_DISABLED" execution_timeout: 60 shared_folder: "C:/malware_framework/vm_shared" guest_user: "your_vm_username" guest_pass: "your_vm_password" ``` **5. 添加你的 VirusTotal API 密钥** 编辑 `controller/virustotal_lookup.py`: ``` VT_API_KEY = "YOUR_VIRUSTOTAL_API_KEY_HERE" ``` 在此获取免费密钥:https://www.virustotal.com **6. 添加恶意软件样本** 将 `.exe` 文件放入 `samples/` 目录。参见下方 [安全获取样本](#getting-samples-safely)。 ## 配置 所有设置均通过 `controller/config.yaml` 控制: | 设置 | 描述 | 默认值 | |---|---|---| | `vmx_path` | 你的 `.vmx` 文件的完整路径 | 必填 | | `snapshot` | 每个样本前要恢复的快照名称 | `CLEAN_BASE_DEFENDER_DISABLED` | | `execution_timeout` | 监控每个样本的秒数 | `60` | | `shared_folder` | vm_shared 文件夹的主机端路径 | 必填 | | `guest_user` | 用于 vmrun 命令的 VM 用户名 | 必填 | | `guest_pass` | 用于 vmrun 命令的 VM 密码 | 必填 | ## 用法 ### 运行完整 pipeline ``` cd C:\malware_framework # 步骤 1 - 静态分析(无需 VM) python controller\static_analysis.py # 步骤 2 - 动态执行(需要 VM,每个样本约 75s) python controller\dynamic_runner.py # 步骤 3 - 解析 Sysmon 日志 python controller\dynamic_parser.py # 步骤 4 - 关联与评分 python controller\correlation_engine.py # 步骤 5 - VirusTotal 验证 python controller\virustotal_lookup.py # 步骤 6 - 生成报告 python controller\report_generator.py # 步骤 7 - 生成可视化报告 python controller\visual_report_generator.py ``` ### 一条命令运行所有内容 ``` python controller\static_analysis.py; python controller\dynamic_runner.py; python controller\dynamic_parser.py; python controller\correlation_engine.py; python controller\virustotal_lookup.py; python controller\report_generator.py; python controller\visual_report_generator.py ``` ### 查看结果 ``` Get-Content reports\summary\analysis_summary.txt -Encoding UTF8 Get-Content reports\per_sample\Blackkomet_report.txt -Encoding UTF8 start reports\visual_report.html ``` ## 示例结果 分析 3 个样本的结果: | 样本 | 分类 | 威胁评分 | VT 检出 | |---|---|---|---| | Blackkomet.exe | 已确认的持久化恶意软件 | 100/100 严重 | 65/70 (92.9%) | | njRAT.exe | 已确认的持久化恶意软件 | 60/100 高 | 50/62 (80.6%) | | notepad.exe | 良性 / 干净应用程序 | 20/100 低 | 0/72 (0.0%) | **检测到的 Blackkomet 的 MITRE ATT&CK 技术:** - T1547.001 — 启动/登录自启动:注册表 Run 键 - T1055 — 进程注入 - T1059 — 命令和脚本解释器 - T1071 — 应用层协议(C2 通信) - T1041 — 经 C2 通道渗出 - T1112 — 修改注册表 ## 项目结构 ``` malware_framework/ ├── controller/ │ ├── static_analysis.py # PE + .NET static analyzer │ ├── dynamic_runner.py # VM automation engine │ ├── dynamic_parser.py # Sysmon EVTX log parser │ ├── correlation_engine.py # Correlation + threat scoring │ ├── virustotal_lookup.py # VirusTotal API integration │ ├── report_generator.py # Report generation │ └── config.yaml # Pipeline configuration │ └── visual_report_generator.py # Visual Report generation │ ├── samples/ │ └── README.md # Instructions for obtaining samples │ ├── logs/ │ ├── raw/ # Raw EVTX logs per sample │ └── parsed/ # JSON analysis outputs │ ├── reports/ │ ├── per_sample/ # Individual sample reports │ └── summary/ # Aggregate summary report │ └── visual_report.html # Visual Report │ └── vm_shared/ # Host-VM file transfer directory ``` ## 主要发现 **1. 静态分析产生误报** Blackkomet 和 notepad 都导入了 `RegCreateKey`/`RegSetValue`。静态分析将两者都标记为可疑。动态分析确认只有 Blackkomet 在运行时实际写入了持久化键。 **2. .NET 恶意软件逃避原生 PE 静态分析** njRAT 在常规扫描下仅显示 1 个 PE 导入。基于 dnfile 的 .NET 程序集分析揭示了 14 个可疑方法引用,包括 `RegistryKey.SetValue`、`TcpClient` 和 `WebClient` — 暴露了其真实能力。 **3. 确认需要动态执行** Blackkomet 在执行期间向 `HKU\...\Run\winupdater` 写入了 756 次 — 这是一种只能通过实时监控检测到的持久化 hammered 模式。 ## 安全获取样本 **切勿从未知来源下载恶意软件。** 用于安全研究的合法安全仓库: - [MalwareBazaar](https://bazaar.abuse.ch) — abuse.ch,学术/研究用途 - [VirusTotal](https://www.virustotal.com) — 上传并分析 - [Any.run](https://any.run) — 具有样本库的交互式沙箱 MalwareBazaar 下载的 Zip 密码:`infected` ## 局限性 - 执行窗口为 60 秒 — 延迟 payload 可能不会触发 - 网络活动是根据静态 API 预测的,而非动态捕获 - 高度混淆的 .NET 程序集可能会对 dnfile 隐藏方法名称 - 没有计划任务或基于服务的持久化监控 - 仅在 Windows 10 x64 上测试 ## 免责声明 ## 作者 **Nandish Talapada** 学号:250103003013 ## 使用工具 | 工具 | 用途 | 链接 | |---|---|---| | pefile | PE 导入提取 | [pypi](https://pypi.org/project/pefile/) | | dnfile | .NET 程序集分析 | [pypi](https://pypi.org/project/dnfile/) | | Sysmon | 运行时行为监控 | [Microsoft](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon) | | VMware Workstation | VM 沙箱 | [VMware](https://www.vmware.com) | | VirusTotal API | 威胁情报验证 | [VirusTotal](https://www.virustotal.com) | | MITRE ATT&CK | 技术分类框架 | [MITRE](https://attack.mitre.org) |
标签:ATT&CK映射, Conpot, DAST, DNS 反向解析, .NET反混淆, PE静态分析, Sysmon监控, VirusTotal集成, VMware虚拟化, Windows安全, 事件日志解析, 二进制分析, 云安全运维, 云资产清单, 动态沙箱, 威胁情报, 安全工具开发, 开发者工具, 恶意软件分析, 持久化检测, 自动化分析流水线, 行为评分, 逆向工具, 逆向工程, 速率限制处理