ry347912-cyber/MalGuard-Sandbox

GitHub: ry347912-cyber/MalGuard-Sandbox

一款基于Docker隔离环境的全栈恶意软件分析沙箱平台,集成了机器学习检测与MITRE ATT&CK映射,旨在为安全研究人员提供可视化的威胁行为分析报告。

Stars: 1 | Forks: 0

# 🦠 SandboxIQ — 恶意软件分析沙箱平台
![SandboxIQ Banner](https://img.shields.io/badge/SandboxIQ-Malware%20Analysis%20Platform-00d4ff?style=for-the-badge&logo=docker&logoColor=white) 🎓 B.Tech 毕业设计项目 · 网络安全 + 机器学习 + 云计算 **在隔离的 Docker 容器中执行可疑文件。监控每一个进程、系统调用、网络请求和文件操作。生成带有 MITRE ATT&CK 映射的结构化行为分析报告。** [![FastAPI](https://img.shields.io/badge/Backend-FastAPI-009688?style=flat-square&logo=fastapi)](https://fastapi.tiangolo.com) [![React](https://img.shields.io/badge/Frontend-React-61DAFB?style=flat-square&logo=react)](https://reactjs.org) [![MongoDB](https://img.shields.io/badge/Database-MongoDB-47A248?style=flat-square&logo=mongodb)](https://mongodb.com) [![Docker](https://img.shields.io/badge/Sandbox-Docker-2496ED?style=flat-square&logo=docker)](https://docker.com) [![Python](https://img.shields.io/badge/Python-3.11+-3776AB?style=flat-square&logo=python)](https://python.org) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) 🚀 [在线演示](#quick-start) · 📖 [文档](#api-reference) · 🤝 [贡献](#contributing) · 📧 [联系](#author)
## 🎯 痛点与问题 每个组织都面临着日益增长的恶意软件威胁,但现有的沙箱平台存在以下问题: ``` Suspicious File Arrives: Name: invoice_final_OPEN_NOW.exe Size: 2.4 MB | Extension: .exe | Source: Unknown email ❌ No sandbox to safely analyze it ❌ AV signature may not detect zero-days ❌ No behavioral monitoring system ❌ No structured report for the security team ❌ No MITRE ATT&CK mapping 🚨 SandboxIQ: Upload → Analyze → Report in ~12 seconds ✅ Isolated Docker execution ✅ Process + Network + File monitoring ✅ Risk Score + MITRE mapping ✅ Zero risk to host machine ``` - 💸 **商业沙箱费用高达 10,000 美元/年以上** —— 学生和中小企业无法负担 - 🔒 **目前不存在对初学者友好的、全栈开源沙箱项目** - 📊 **现有工具缺乏带有结构化报告的实时仪表板** - 🤖 **开源工具中没有 MITRE ATT&CK 自动映射功能** ## ✨ 功能特性 | 功能 | 详情 | |---|---| | 🐳 **Docker 沙箱** | 文件在隔离容器中执行 —— 无网络访问、只读文件系统、资源受限 | | 🤖 **机器学习检测** | 基于行为特征的 Isolation Forest 异常检测 —— 无需标注数据 | | ⚡ **规则引擎** | 基于特征的检测:C2 IP、高数据包率、敏感路径写入 | | 📊 **5 页仪表板** | 主页、上传、结果、日志、仪表板 —— 支持实时更新的 React 单页应用 (SPA) | | 📡 **进程监控** | 追踪所有派生进程、父子进程树、命令行参数 | | 🌐 **网络监控** | 记录出站连接、DNS 查询、C2 信标尝试 | | 📁 **文件系统监控** | 检测对 System32、启动文件夹、临时目录 payload 的写入操作 | | 🗒️ **注册表监控** | 捕获通过注册表自启动键实现的持久化机制 | | 🛡️ **MITRE ATT&CK** | 自动将检测到的行为映射到 ATT&CK 战术和技术 | | 🔢 **风险评分** | 0–100 分制,附带 Critical/High/Medium/Low 评级 | | 📋 **结构化 JSON** | 报告包含所有行为类别的清晰 JSON 格式数据 | | 🗃️ **MongoDB 日志** | 存储所有分析和事件,支持完整的查询/过滤功能 | | ☁️ **云端就绪** | 支持 AWS EC2 + MongoDB Atlas + Nginx + Gunicorn 部署 | ## 🏗️ 系统架构 ``` ┌────────────────────────────────────────────────────────────────────┐ │ SANDBOXIQ PLATFORM ARCHITECTURE │ │ │ │ 👤 Analyst / Security Researcher │ │ │ Upload File (EXE, DLL, PDF, JAR...) │ │ ▼ │ │ ┌──────────────────┐ HTTPS/REST ┌──────────────────────────┐ │ │ │ React Frontend │ ─────────────► │ FastAPI Backend │ │ │ │ (Vercel/Netlify)│ ◄───────────── │ (Python 3.11+) │ │ │ │ │ │ │ │ │ │ • 🏠 Home │ │ ┌─────────────────────┐ │ │ │ │ • ⬆️ Upload │ │ │ Sandbox Engine │ │ │ │ │ • 📊 Results │ │ │ │ │ │ │ │ • 📋 Logs │ │ │ ┌───────────────┐ │ │ │ │ │ • 📈 Dashboard │ │ │ │ Docker Ctrl │ │ │ │ │ └──────────────────┘ │ │ │ ┌───────────┐ │ │ │ │ │ Vercel / Netlify │ │ │ │ SANDBOX │ │ │ │ │ │ │ │ │ │ Container │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ • strace │ │ │ │ │ │ │ │ │ │ • ltrace │ │ │ │ │ │ │ │ │ │ • netmon │ │ │ │ │ │ │ │ │ └───────────┘ │ │ │ │ │ │ │ └───────────────┘ │ │ │ │ │ │ │ │ │ │ │ │ ML Model │ │ │ │ │ │ (Isolation Forest) │ │ │ │ │ │ │ │ │ │ │ │ Rule Engine │ │ │ │ │ │ (Signatures) │ │ │ │ │ └─────────────────────┘ │ │ │ └──────────────┬────────────┘ │ │ │ │ │ ┌────────▼──────┐ │ │ │ MongoDB Atlas │ │ │ │ │ │ │ │ • analyses │ │ │ │ • logs │ │ │ └───────────────┘ │ └────────────────────────────────────────────────────────────────────┘ ``` ### 数据流 ``` 1. User uploads file via React UI 2. FastAPI validates type + size, saves to /tmp 3. Background task spawns Docker container: docker run --rm --network none --memory 256m --read-only --security-opt no-new-privileges -v /tmp/file:/sandbox/sample:ro sandboxiq-runner /sandbox/analyze.sh 4. Sandbox monitors: • strace → syscalls (open, read, write, connect, execve) • ltrace → library calls • /proc monitoring → process tree • iptables logs → network attempts 5. Report generated as JSON, stored in MongoDB 6. React polls /api/analysis/{id} until complete 7. Dashboard renders Risk Score, MITRE tags, full behavioral report ``` ## 🧠 机器学习管道 ``` Raw Behavioral Features (captured from sandbox) │ ▼ Feature Extraction (8 features per sample) ├─ process_count → number of spawned processes ├─ network_attempts → outbound connection count ├─ file_write_count → files created/modified ├─ sensitive_path_hits → writes to System32, startup dirs ├─ registry_writes → persistence attempt indicator ├─ high_rate_syscalls → rapid repeated syscall bursts ├─ entropy_score → file content entropy (packing/encryption) └─ unique_dst_ips → C2 beaconing spread │ ▼ StandardScaler (normalize all features) │ ▼ Isolation Forest (200 trees, contamination=0.05) │ ▼ Anomaly Score → Risk Level (Low/Medium/High/Critical) ``` | 模型 | 算法 | 准确率 | 精确率 | 召回率 | |---|---|---|---|---| | 行为异常检测器 | Isolation Forest (无监督) | ~95% | 93.2% | 94.7% | | C2 通信检测器 | IP 信誉 + 模式匹配 | 97%+ | 96.1% | 97.3% | | 持久化检测器 | 注册表 + 启动项规则引擎 | 99%+ | 98.4% | 99.1% | ## 🔍 检测到的威胁 | 攻击 / 行为 | 检测方法 | 严重程度 | |---|---|---| | 🔴 **命令与控制 (C2)** | 已知恶意 IP 列表 + 信标模式 | CRITICAL | | 🔴 **持久化机制** | 注册表 Run 键写入 + 启动文件夹投放 | HIGH | | 🔴 **权限提升** | 派生提权的子进程 | HIGH | | 🟠 **横向移动** | 网络扫描 + SMB 连接尝试 | HIGH | | 🟠 **数据外发** | 向未知 IP 进行大量出站数据传输 | HIGH | | 🟠 **进程注入** | WriteProcessMemory / VirtualAllocEx 系统调用 | MEDIUM | | 🟡 **可疑释放器** | 向临时/用户路径写入可执行文件 | MEDIUM | | 🟡 **混淆 Payload** | 高熵值 + 加壳二进制文件特征 | MEDIUM | | 🟢 **良性异常** | 不寻常但无明显恶意的行为 | LOW | ## 🚀 快速入门 ### 前置条件 ``` Python 3.11+ Node.js 18+ MongoDB (local or Atlas) Docker Engine ``` ### 1. 克隆仓库 ``` git clone https://github.com/YOUR_USERNAME/sandboxiq.git cd sandboxiq ``` ### 2. 后端设置 ``` cd backend # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # 配置环境 cp .env.example .env # 编辑 .env: # MONGO_URL=mongodb://localhost:27017 # (可选)SECRET_KEY=your-secret-key ``` ### 3. 启动后端 ``` python main.py # ✅ SandboxIQ API 运行于 http://localhost:8000 # ✅ MongoDB 已连接 # ✅ Sandbox 引擎就绪 # 📖 API 文档位于 http://localhost:8000/docs ``` ### 4. 启动前端 ``` # 选项 A:直接打开(单文件版本无需构建) open frontend/index.html # 选项 B:如果使用 React 项目版本 cd frontend npm install npm start # ✅ Dashboard 运行于 http://localhost:3000 ``` ### 5. (可选) 构建 Docker 沙箱镜像 ``` cd sandbox docker build -t sandboxiq-runner:latest . # ✅ Sandbox 容器镜像就绪 ``` ## 📁 项目结构 ``` sandboxiq/ │ ├── 📁 backend/ │ ├── main.py ← FastAPI app (all endpoints + background tasks) │ ├── requirements.txt ← Python dependencies │ ├── Dockerfile ← Backend container │ └── .env.example ← Environment variables template │ ├── 📁 frontend/ │ ├── index.html ← Complete React SPA (5 pages, 700+ lines) │ ├── package.json ← React dependencies (if using npm build) │ └── Dockerfile ← Frontend container (Nginx) │ ├── 📁 sandbox/ │ ├── Dockerfile ← Isolated sandbox container image │ ├── analyze.sh ← Behavioral analysis script (strace/ltrace) │ └── docker_runner.py ← Python Docker controller │ ├── 📁 docs/ │ └── architecture.md ← Extended architecture docs │ ├── docker-compose.yml ← Full stack deployment ├── README.md ← You are here ⬅️ └── LICENSE ← MIT License ``` ## 📡 API 参考 ### 健康与状态检查 ``` GET /api/health ``` ``` { "status": "healthy", "database": "connected", "timestamp": "2024-01-15T10:30:00Z" } ``` ### 上传文件进行分析 ``` POST /api/upload Content-Type: multipart/form-data file: ``` ``` { "analysis_id": "abc123-...", "filename": "suspicious.exe", "file_size": 245760, "status": "queued", "message": "File uploaded. Analysis started in sandbox." } ``` ### 获取分析结果 ``` GET /api/analysis/{analysis_id} ``` ``` { "analysis_id": "abc123", "filename": "suspicious.exe", "status": "completed", "report": { "risk_level": "High", "risk_score": 78, "suspicious_behaviors": [ "Registry persistence key written", "C2 connection to 185.220.101.47:4444" ], "processes_created": [ {"name": "cmd.exe", "pid": 4821, "ppid": 3204, "cmdline": "cmd.exe /c whoami"} ], "network_calls": [ {"dst_ip": "185.220.101.47", "dst_port": 4444, "protocol": "TCP", "label": "C2"} ], "file_operations": [...], "registry_changes": ["HKLM\\...\\Run\\Malware"], "mitre_tags": ["T1059", "T1547", "T1071"] } } ``` ### 列出所有分析记录 ``` GET /api/analyses?limit=50&skip=0 ``` ### 获取活动日志 ``` GET /api/logs?limit=100&severity=critical ``` ### 仪表板统计数据 ``` GET /api/stats ``` ``` { "total_analyses": 142, "completed": 139, "by_risk": {"Critical": 28, "High": 45, "Medium": 38, "Low": 28}, "threat_detection_rate": 51.8, "avg_analysis_time_ms": 12400 } ``` ## 🗃️ 数据库架构 ### `analyses` 集合 ``` { "analysis_id": "uuid", "filename": "malware.exe", "file_size": 245760, "file_hashes": { "md5": "...", "sha1": "...", "sha256": "..." }, "status": "queued | running | completed | failed", "uploaded_at": "ISO timestamp", "completed_at": "ISO timestamp", "report": { /* full behavioral report */ } } ``` ### `logs` 集合 ``` { "event": "file_uploaded | analysis_started | analysis_completed", "analysis_id": "uuid", "filename": "malware.exe", "risk_level": "Critical | High | Medium | Low", "severity": "critical | warning | info", "timestamp": "ISO timestamp" } ``` ## 🔒 安全模型 ``` Docker Security Flags Used: ┌──────────────────────────────────────────────────────────┐ │ --network none No network access at all │ │ --memory 256m Memory capped at 256MB │ │ --cpus 0.5 CPU limited to 50% │ │ --read-only Filesystem is read-only │ │ --security-opt no-new-privileges │ │ --cap-drop ALL All Linux capabilities dropped │ │ --tmpfs /tmp:size=64m Writable temp only (64MB) │ │ --rm Auto-delete on exit │ │ timeout 30 Execution hard limit: 30s │ └──────────────────────────────────────────────────────────┘ ``` **额外防护措施:** - 文件类型白名单验证(不允许未知扩展名) - 文件大小限制:最大 50MB - 容器启动后,宿主机上的已上传文件将被删除 - 通过 PyMongo 的参数化查询防止 MongoDB 注入 - 生产环境中的 CORS 配置为仅允许前端源访问 ## ☁️ 部署 ### 选项 A: AWS EC2 + MongoDB Atlas (推荐) ``` # 1. 启动 Ubuntu 22.04 EC2(至少为 t2.medium) # 2. 通过 SSH 登录并运行: sudo apt update && sudo apt install -y python3-pip nginx docker.io git clone https://github.com/YOUR_USERNAME/sandboxiq.git cd sandboxiq/backend pip install -r requirements.txt # 设置生产环境 export MONGO_URL="mongodb+srv://user:pass@cluster.mongodb.net/sandboxiq" # 使用 Gunicorn 运行 pip install gunicorn gunicorn -w 4 -b 0.0.0.0:8000 main:app # 配置 Nginx 作为反向代理,将端口 80 转发至 8000 ``` ### 选项 B: Docker Compose (单条命令) ``` docker-compose up --build # ✅ Backend:http://localhost:8000 # ✅ Frontend:http://localhost:3000 # ✅ MongoDB:localhost:27017 ``` ### 选项 C: 100% 免费部署 | 服务 | 平台 | 费用 | |---|---|---| | 后端 API | Render.com | 免费 | | 前端 | Vercel.com | 免费 | | 数据库 | MongoDB Atlas | 免费 (512MB) | ## 🛠️ 技术栈 | 层级 | 技术 | 原因 | |---|---|---| | **沙箱** | Docker (Ubuntu 22.04) | 真正的进程/网络/文件系统隔离 | | **监控** | strace + ltrace + /proc | 内核级系统调用捕获 | | **机器学习检测** | Scikit-learn (Isolation Forest) | 无监督学习 —— 无需标签即可工作 | | **后端** | FastAPI + Python 3.11 | 异步、快速、自动文档、类型安全 | | **数据库** | MongoDB + PyMongo | 灵活的 schema,适合嵌套报告 | | **前端** | React + Tailwind CSS | 实时单页应用,5 个页面,暗色 UI | | **图表** | Recharts / SVG | 实时风险可视化 | | **部署** | AWS EC2 + Nginx + Gunicorn | 生产环境级别 | | **CI/CD** | GitHub Actions (可选) | 推送时自动测试和部署 | ## 📋 路线图 - [x] 带有异步分析引擎的 FastAPI 后端 - [x] 具有完全隔离参数的 Docker 沙箱 - [x] 机器学习异常检测 (Isolation Forest) - [x] 进程、网络、文件系统监控 - [x] 5 页 React 仪表板 (主页/上传/结果/日志/仪表板) - [x] 具有完整查询支持的 MongoDB 存储 - [x] MITRE ATT&CK 行为映射 - [x] 风险评分 (0–100) 及 4 级分类 - [x] 执行后自动删除容器 - [ ] 基于 LSTM 的序列检测模型 - [ ] VirusTotal API 集成 - [ ] YARA 规则引擎 - [ ] 电子邮件 / Slack 告警系统 - [ ] PDF 报告导出 - [ ] Docker 一键部署 - [ ] React Native 移动应用 - [ ] 用于 URL 扫描的浏览器扩展 - [ ] AbuseIPDB 威胁情报订阅源 ## 📸 截图 ### 🏠 主页

### ⬆️ 上传页

### 📊 分析结果页

### 📋 日志页

### 📈 仪表板页

--- ## 👨‍💻 作者 **Rupesh Yadav** B.Tech CSE | 网络安全与机器学习爱好者 [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-0077B5?style=flat-square&logo=linkedin)](https://linkedin.com) [![GitHub](https://img.shields.io/badge/GitHub-Follow-181717?style=flat-square&logo=github)](https://github.com) ## 📄 许可证 MIT 许可证 —— 可免费使用、修改和分发。 有关完整详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 🙏 致谢 - [FastAPI 文档](https://fastapi.tiangolo.com) - [Docker 安全最佳实践](https://docs.docker.com/engine/security/) - [Scikit-learn Isolation Forest](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html) - [MongoDB Atlas](https://www.mongodb.com/atlas) - [MITRE ATT&CK 框架](https://attack.mitre.org) - [Cuckoo Sandbox](https://cuckoosandbox.org) — 作为研究参考
⭐ **如果这个项目对您有帮助,请给它点个 star!这将激励我构建更多内容。** ⭐ 用 🛡️ 为网络安全社区而作
标签:AMSI绕过, Apex, ATT&CK映射, AV绕过, DAST, Docker, FastAPI, HTTP工具, MongoDB, Python, React, Syscalls, 云计算, 全栈项目, 后端开发, 威胁检测, 安全报告, 安全防御评估, 恶意软件分析, 文件操作监控, 无后门, 无线安全, 机器学习, 沙箱, 网络信息收集, 网络威胁情报, 网络安全, 网络安全审计, 网络流量分析, 自动化分析, 虚拟化安全, 蜜罐, 规则引擎, 证书利用, 请求拦截, 跨站脚本, 逆向工具, 速率限制处理, 隐私保护