Trifu-Cosmin/Malware-Analysis-Using-ML-Algorithms

GitHub: Trifu-Cosmin/Malware-Analysis-Using-ML-Algorithms

基于机器学习集成模型的 Windows PE 恶意软件检测系统,通过静态特征分析实现良性与恶意文件的自动判别。

Stars: 0 | Forks: 0

# 基于机器学习算法的恶意软件分析 本科毕业设计项目,主要通过静态 Windows PE 文件分析和机器学习算法来进行恶意软件检测。 该应用程序会对可执行文件进行分析,并利用基于 EMBER 静态 PE 特征训练的多个机器学习模型来预测文件是良性的还是恶意的。该项目包含后端 API、Streamlit 前端、用户身份验证、扫描历史记录、PDF 报告导出以及对扫描压缩包的支持。 ## 主要功能 * Windows PE 文件静态分析 * 使用机器学习模型进行恶意软件检测 * 加权集成的最终判定 * 用于文件扫描的 FastAPI 后端 * Streamlit 前端界面 * 用户登录和注册 * 特定用户的扫描历史记录 * PDF 报告导出 * 对压缩文件的压缩包扫描支持 * 模型比较和评估结果 ## 使用技术 * Python * FastAPI * Streamlit * scikit-learn * LightGBM * XGBoost * pandas * numpy * joblib * ReportLab * Uvicorn ## 机器学习模型 该项目评估并集成了多个机器学习模型: * 逻辑回归 (Logistic Regression) * 随机森林 (Random Forest) * LightGBM * XGBoost * LinearSVC * SVC * 朴素贝叶斯 (Naive Bayes) 最终预测采用加权集成方法生成,其中表现更强的模型对最终的良性/恶意判定具有更高的影响力。 ## 数据集与特征提取 该项目基于 EMBER 风格的静态 PE 特征。每个文件都使用从可执行文件结构中提取的 2381 维特征向量来表示。 由于体积过大,原始数据集、原始文件和向量化数据未包含在此仓库中。 本仓库仅包含应用程序源代码、训练/评估脚本以及理解和运行该系统所需的项目结构。 ## 项目结构 ``` project/ │ ├── app/ │ ├── api.py # FastAPI backend │ ├── scan_core.py # Main scanning logic │ └── ... │ ├── streamlit_app/ │ ├── home.py # Streamlit frontend entry point │ ├── scan.py # Scan page │ ├── history.py # Scan history page │ ├── comparison.py # Model comparison page │ └── ... │ ├── training/ │ ├── train_all_models.py # Model training script │ ├── evaluate_models.py # Model evaluation script │ └── ... │ ├── models/ # Trained models, ignored if too large ├── reports/ # Generated reports, ignored from Git ├── requirements.txt ├── .gitignore └── README.md ``` ## 如何运行该项目 ### 1. 克隆仓库 ``` git clone https://github.com/Trifu-Cosmin/malware-analysis-ml.git cd malware-analysis-ml ``` ### 2. 创建并激活虚拟环境 ``` python -m venv .venv ``` 在 Windows 上: ``` .venv\Scripts\activate ``` 在 Linux/macOS 上: ``` source .venv/bin/activate ``` ### 3. 安装依赖项 ``` pip install -r requirements.txt ``` ### 4. 运行后端 API ``` uvicorn app.api:app --reload --port 8000 ``` 后端将在本地运行于: ``` http://127.0.0.1:8000 ``` ### 5. 运行 Streamlit 前端 打开第二个终端,激活相同的虚拟环境并运行: ``` streamlit run streamlit_app/home.py ``` 前端将在浏览器中打开。 ## API 端点 ### 扫描文件 ``` POST /scan ``` 该端点接收上传的文件,提取其静态特征,并返回包含预测结果、置信度分数和各个独立模型输出的 JSON 响应。 响应示例: ``` { "filename": "sample.exe", "final_label": "malicious", "confidence": 0.87, "models": { "Random Forest": 0.91, "LightGBM": 0.89, "XGBoost": 0.86 } } ``` ## 重要说明 由于有意为之,本仓库未包含大型文件,包括: * 原始 EMBER 数据集文件 * 向量化数据集文件 * 大型训练模型文件 * 生成的报告 * 本地用户历史记录文件 * 真实的恶意软件样本 真实的恶意软件样本不应上传到此仓库。该项目仅供教育和研究目的使用。 ## 目的 该项目是我在蒂米什瓦拉西部大学 (West University of Timișoara) 本科毕业设计的一部分。其目标是探索如何将机器学习算法应用于静态恶意软件检测,并基于训练好的模型构建一个实用的应用程序。 ## 作者 Trifu Cosmin-Ionuț 蒂米什瓦拉西部大学 (West University of Timișoara) 本科毕业设计项目 GitHub: [Trifu-Cosmin](https://github.com/Trifu-Cosmin)
标签:Apex, AV绕过, FastAPI, Kubernetes, Python, Streamlit, 云安全监控, 无后门, 机器学习, 自定义DNS解析器, 访问控制, 逆向工具, 静态分析