Abishek2511/Dynamic-Malware-Analysis

GitHub: Abishek2511/Dynamic-Malware-Analysis

一条结合 Cuckoo 沙箱动态行为提取与机器学习分类的自动化恶意软件分析流水线,用于在对抗混淆样本的同时实现高效的恶意与良性判定。

Stars: 0 | Forks: 0

# 动态恶意软件分析 ## 一条自动化恶意软件分析流水线,可动态分析可疑样本、提取行为指标,并使用机器学习对其进行分类 —— 在减少误报的情况下实现了 87% 的分类准确率。 ## 概述 本项目是我在伯明翰大学网络安全硕士论文的一部分。目标是构建一个端到端的自动化流水线,能够: 自动将恶意软件样本提交到沙箱环境 从执行过程中提取动态行为指标 从原始行为数据中进行特征工程 使用机器学习将样本分类为恶意或良性 该流水线不依赖静态的基于特征码的检测(攻击者可以轻松绕过),而是专注于动态行为分析 —— 观察样本在执行时的实际行为,从而有效对抗混淆和多态恶意软件。 ## 架构 恶意软件样本 │ ▼ ┌─────────────────┐ │ Cuckoo Sandbox │ ← 嵌套虚拟化环境 │ (执行) │ └────────┬────────┘ │ ▼ ┌─────────────────────────────┐ │ 行为数据 │ │ - API 调用 │ │ - 网络活动 │ │ - 文件系统更改 │ │ - 注册表修改 │ │ - 进程执行 │ └────────┬────────────────────┘ │ ▼ ┌─────────────────┐ │ 特征 │ │ 工程 │ ← Python 提取与处理 └────────┬────────┘ │ ▼ ┌─────────────────┐ │ ML 分类器 │ ← 分类模型 │ 87% 准确率 │ └─────────────────┘ ## 核心功能 自动化流水线 —— 从样本提交到分类结果的端到端流程 动态分析 —— 提取运行时行为,而非静态特征码 为每个样本提取 50 多项行为指标,包括: Windows API 调用序列 网络连接尝试(IP、域名、端口) 文件系统读/写/删除操作 注册表键值修改 进程创建和注入尝试 特征工程 —— 将原始行为数据转换为可用于机器学习的特征向量 通过精细的特征选择,在减少误报的同时实现了 87% 的分类准确率 嵌套虚拟化 —— 隔离的沙箱环境,防止恶意软件逃逸 ## 技术栈 组件 技术 编程语言 Python 3.8+沙箱环境Cuckoo Sandbox 虚拟化 嵌套虚拟机 (VirtualBox)数据处理 Pandas, NumPy机器学习Scikit-learn特征工程自定义 Python 模块 ## 结果 指标得分分类准确率87% 误报率通过特征优化降低 提取的行为指标每个样本 50 多项 ## 工作原理 1. 样本提交 恶意软件样本会被自动提交到运行于嵌套虚拟化环境中的 Cuckoo Sandbox 实例,确保与宿主系统完全隔离。 2. 动态执行 沙箱执行每个样本并实时监控所有系统交互,捕获: 进程发出的每一个 Windows API 调用 尝试的所有网络连接 文件系统修改(创建、读取、写入、删除) 注册表更改 生成的子进程 3. 行为数据提取 Python 提取模块处理原始的 Cuckoo JSON 报告,为每个样本提取 50 多项行为指标,并将其结构化为统一的格式以供分析。 4. 特征工程 原始指标被转换为适合机器学习的数值特征向量。关键的特征工程决策包括: API 调用频率分布 网络行为聚合 文件路径模式编码 时序序列分析 5. 分类 特征向量被输入到经过训练的机器学习分类器中,输出带有置信度分数的恶意/良性判定结果。 ## 为什么选择动态分析? 传统的防病毒软件依赖于静态特征码 —— 即恶意软件代码中的已知模式。现代恶意软件经常使用: 混淆 —— 对 payload 进行编码或加密 多态 —— 在每次执行时更改自身的代码 加壳 —— 压缩可执行文件以隐藏其真实内容 动态分析通过观察恶意软件“做了什么”而不是“长什么样”,从而绕过所有这些手段。恶意软件样本最终必须解包自身并调用系统 API 才能发挥作用 —— 而这正是我们捕获它的时机。
标签:Apex, Cuckoo沙箱, DAST, 恶意软件分析, 机器学习, 自动化分析, 行为检测, 跨站脚本, 逆向工具