pankaj87-cmd/MALWARE-DETECTION-AND-ANALYSIS-USING-MACHINE-LEARNING
GitHub: pankaj87-cmd/MALWARE-DETECTION-AND-ANALYSIS-USING-MACHINE-LEARNING
一款基于Flask的恶意软件分析Web应用,结合VirusTotal API静态分析与机器学习模型,用于检测和分析文件、URL及PE可执行文件中的恶意软件。
Stars: 0 | Forks: 0
# 基于机器学习的恶意软件检测与分析
基于机器学习的恶意软件检测与分析 WebApp 是一款强大的工具,旨在为用户提供直观的界面,用于分析和检测各种文件格式中的恶意软件。该 Web 应用利用通过 API 进行的静态分析和先进的机器学习技术,确保全面的威胁评估。MDAML 的创建是为了满足对易于访问和用户友好的平台的需求,该平台能够对文件、URL 和可执行文件进行高效的恶意软件分析。
## 目录
- [使用 API 进行静态分析](#static-analysis-using-api)
- [基于机器学习的检测](#machine-learning-based-detection)
- [安装过程](#installation-process)
- [贡献](#contributing)
# 使用 API 进行静态分析
- [使用 API 进行静态分析](#static-analysis-using-api)
- [静态分析使用的技术](#technologies-used-by-static)
- [静态分析支持的文件类型](#file-types-supported-by-static)
- [静态分析演示](#demo-static)
## 使用 API 进行静态分析
**使用 API 进行静态分析** 组件通过利用 VirusTotal API,提供了一种快速有效的方法来分析文件、URL 和哈希值。此功能允许用户提交文件或 URL 并接收详细的威胁情报,从而增强他们快速识别潜在安全风险的能力。
### 静态分析使用的技术
本模块使用以下技术:
- **Flask**
- **VirusTotal API**
- **Python**
- **requests**
### 静态分析支持的文件类型
该工具支持以下文件类型进行静态分析:
- **文件**:所有
- **其他支持的格式**:与 VirusTotal API 兼容的文件哈希值和 URL
### 静态分析演示
以下是演示 **使用 API 进行静态分析** 功能实际操作的快速演练。
**上传页面**

*描述:用户从本地目录中选择一个文件进行分析。*
**结果页面**


*描述:基于 VirusTotal 数据库显示威胁情报的分析结果。*
### 工作原理
1. **用户输入**:用户上传文件或提供用于分析的 URL。
2. **VirusTotal API 集成**:应用程序将文件或 URL 发送到 VirusTotal 的 API,以获取任何相关的威胁情报数据。
3. **结果显示**:检索到的信息经过处理并显示在结果页面上,其中包括:
- **扫描日期**:提交的文件/URL 最后一次扫描的日期。
- **检测比例**:检测到威胁的 VirusTotal 引擎比例。
- **详细结果**:来自不同扫描引擎的结果细分。

### 使用 API 进行静态分析的优势
- **快速检测**:允许使用可靠的外部威胁数据库进行即时扫描。
- **自动化洞察**:获取相关情报数据,无需手动查找。
- **全面检测**:聚合来自多个来源的结果以提高检测准确性。
该工具集成了两种关键方法来检测潜在威胁,为用户评估安全风险提供了全面的方法。
**注意**:VirusTotal API 有速率限制,因此根据使用情况,某些请求可能会遇到节流或响应延迟。有关速率限制和使用策略的更多详细信息,请参阅 [VirusTotal API 文档](https://developers.virustotal.com/)。
# 基于机器学习的检测
- [基于机器学习的检测](#machine-learning-based-detection)
- [ML 使用的技术](#technologies-used-by-ml)
- [特征选择与模型训练](#feature-selection-and-model-training)
- [ML 支持的文件类型](#file-types-supported-by-ml)
- [ML 演示](#demo-ml)
## 基于机器学习的检测
**基于机器学习的检测** 组件利用经过训练的机器学习模型来检测可执行文件中的恶意行为。通过专注于从 Portable Executable (PE) 头中提取特征,该工具提供了一种先进的、基于 ML 的方法来识别 `.exe` 和 `.dll` 文件中的恶意软件。
### ML 使用的技术
本模块使用以下技术:
- **Python**
- **Scikit-Learn**
- **Flask**
- **NumPy**
- **Pandas**
- **Matplotlib**
- **pefile**
- **Joblib**
### 特征选择与模型训练
该模型专注于从可执行文件的 PE 头中提取的最重要特征。以下是关键流程的概述:
1. **特征提取**:从每个文件中提取 PE 头特征以创建特征集。
2. **特征选择**:根据 Random Forest Classifier 的重要性分数选择重要特征。仅保留最相关的特征以优化模型准确性。
3. **模型训练**:在过滤后的特征集上训练 Random Forest 模型,使其能够高精度地区分良性可执行文件和恶意可执行文件。
**模型性能**
| Metric | Precision | Recall | F1-score | Accuracy |
|----------------|-----------|--------|----------|----------|
| **Benign** | 1.00 | 0.97 | 0.98 | 1003 |
| **Malware** | 0.99 | 1.00 | 0.99 | 2920 |
| **Overall** | - | - | - | 99% |
### 支持的文件类型
此功能专为以下文件类型设计:
- **可执行文件**:`.exe`、`.dll`
### ML 演示
以下是展示 **基于机器学习的检测** 功能如何工作的视觉演练。
**上传页面**

*描述:用户选择一个可执行文件进行分析。*
**分析结果**

*描述:基于 ML 的检测结果,显示文件是良性还是恶意。*
### 工作原理
1. **文件上传**:用户上传可执行文件(.exe 或 .dll)进行基于 ML 的分析。
2. **特征提取**:系统提取 PE 头特征,并根据先前的分析仅选择最重要的特征。
3. **模型预测**:Random Forest 模型使用提取的特征来预测文件是良性还是恶意。
4. **结果显示**:应用程序在用户友好的界面上显示结果,包括概率分数和模型置信度。

### 基于机器学习的检测的优势
- **高精度**:该模型在检测恶意软件方面实现了高准确性,最大限度地减少了误报。
- **自动化特征选择**:使用最相关的特征进行分析,提高了速度和准确性。
- **针对性检测**:专为可执行文件设计,确保针对关键威胁载体进行优化且可靠的检测。
这种基于 ML 的方法补充了静态分析,为恶意软件检测提供了一个全面的工具包。
**注意**:模型的准确性和精确度已在平衡数据集上得到验证,确保了在新数据和未见数据上的可靠性能。
## 特征选择与模型训练
### 根据重要性选择特征
使用 Random Forest Classifier,我们评估了不同特征的重要性,以确定对恶意软件检测最显著的特征。通过根据重要性过滤特征,我们设定了一个阈值,仅选择最相关的特征来训练我们的模型。这种方法提高了模型的效率和准确性。
### 根据重要性选择特征之前

### 根据重要性选择特征之后

### 基于重要特征训练新模型
在选择重要特征后,我们训练了一个新模型,得出了以下分类指标:
| Class | Precision | Recall | F1-Score | Support |
|----------|-----------|--------|----------|---------|
| Benign | 1.00 | 0.97 | 0.98 | 1003 |
| Malware | 0.99 | 1.00 | 0.99 | 2920 |
| **Accuracy** | **0.99** | | | **3923** |
| Macro Avg| 0.99 | 0.98 | 0.99 | 3923 |
| Weighted Avg| 0.99 | 0.99 | 0.99 | 3923 |
**训练分数:**
平均训练分数约为 99.13%。
**验证分数:**
平均验证分数约为 98.63%。
结果表明训练集和验证集都具有高性能,仅有 0.51% 的细微差异。
### 分析
- **无过拟合**:训练和验证分数的紧密一致表明模型可能没有过拟合。在严重过拟合的情况下,我们会预期训练分数高于验证分数。
- **轻微欠拟合的可能性**:虽然验证分数略低于训练分数,表明有轻微欠拟合的可能,但这种差异微乎其微。
### 学习曲线
为了评估模型在不同训练集大小下的性能,我们生成了学习曲线。这些曲线有助于可视化随着更多训练数据的添加,模型的准确性是如何演变的。

### 按训练集大小划分的训练和验证分数
下面的条形图显示了各种训练集大小的平均训练和验证分数及其标准差。

通过分析这些分数和可视化,我们可以深入了解模型的学习行为,并为进一步改进做出明智的决策。
# 安装过程
```
1. git clone https://github.com/pankaj87-cmd/MALWARE-DETECTION-AND-ANALYSIS-USING-MACHINE-LEARNING.git
2. cd ML_based_detectionn
python -m venv newvenv
source venv/bin/activate
pip install -r requirements.txt
3. run both the vt app.py and the ml_based_detection --> python app.py
This will give ml_based_detection runing on port 5001 and virus_total_based in port 5000
```
## 🔮 未来工作
- [ ] **扩展机器学习能力**
- [ ] **增加额外的文件类型支持**
- [ ] **集成动态分析**
- [ ] 实施沙箱环境以对文件进行实时行为分析。
- [ ] 捕获运行时系统更改和网络流量以检测可疑行为。
- [ ] **增强用户界面**
- [ ] 开发用于详细分析结果的仪表板,包括威胁历史和模式。
- [ ] 提供可视化洞察,如热力图、趋势图和风险评分。
标签:Apex, Flask, Python, URL检测, VirusTotal API, 二进制分析, 云安全监控, 云安全运维, 哈希检查, 威胁情报, 开发者工具, 文件分析, 无后门, 机器学习, 病毒扫描, 网络安全, 自定义DNS解析器, 逆向工具, 隐私保护, 静态分析