Debasish-Nayak-656/-Neurovirus-Scanner

GitHub: Debasish-Nayak-656/-Neurovirus-Scanner

一款基于 React 与 Flask 构建的恶意软件分析平台,集成了 ClamAV、YARA 及 VirusTotal 引擎以实现多维度的文件扫描与威胁情报评估。

Stars: 0 | Forks: 0

# 🛡️ NeuroVirus — 高级威胁情报平台 一个具有赛博朋克风格 UI 的全栈病毒/恶意软件扫描器,基于以下技术构建: | 层级 | 技术 | |-------|-----------| | Frontend | React 18, Recharts, Axios | | Backend | Python 3.12 + Flask | | AV 引擎 | ClamAV (通过 `clamd`) | | 规则引擎 | YARA 4.x | | 威胁情报 | VirusTotal API v3 | | 容器 | Docker + Docker Compose | | Web 服务器 | Nginx (生产环境) | ## 📐 架构 ``` Browser (React) │ HTTP (upload + results) ▼ Nginx :80 │ /api/* proxied to Flask ▼ Flask Backend :5000 ├── Magic-byte detection ├── Shannon entropy analysis ├── Suspicious string extraction ├── Network indicator extraction ├── PE header parser (Windows EXE/DLL) ├── ClamAV ──────────────► clamd :3310 ├── YARA rule engine └── VirusTotal API v3 ───► cloud ``` ## 🚀 快速开始 — Docker(推荐) ### 前置条件 - Docker Desktop ≥ 24 - Docker Compose v2 ### 1. 克隆并配置 ``` git clone neurovirus cd neurovirus # 创建你的 env 文件 cp .env.example .env ``` 编辑 `.env` 并添加您的 **VirusTotal API key**(可在 https://www.virustotal.com/gui/join-us 免费获取)。 ### 2. 启动所有服务 ``` docker compose up --build ``` ### 3. 打开 UI ``` http://localhost:3000 ``` 后端 API 可通过 `http://localhost:5000/api` 访问。 ## 🛠️ 本地开发(不使用 Docker) ### 后端 #### 要求 - Python 3.10+ - 已安装 ClamAV 并正在运行 `clamd`(macOS 上使用 `brew install clamav`,Ubuntu 上使用 `apt install clamav clamav-daemon`) - 已安装 YARA(`pip install yara-python` 需要 `yara` 系统库) ``` cd backend # 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 复制并编辑 env cp ../.env.example .env # 启动 ClamAV daemon (如果尚未运行) # macOS: brew services start clamav # Ubuntu: sudo systemctl start clamav-daemon # 运行 Flask dev server python run.py # → http://localhost:5000 ``` #### ClamAV 设置 (Ubuntu/Debian) ``` sudo apt update sudo apt install clamav clamav-daemon # 更新特征数据库 sudo freshclam # 启动 daemon sudo systemctl enable clamav-daemon sudo systemctl start clamav-daemon # 验证 clamdscan --ping ``` #### ClamAV 设置 (macOS) ``` brew install clamav sudo cp /opt/homebrew/etc/clamav/freshclam.conf.sample /opt/homebrew/etc/clamav/freshclam.conf # 编辑 freshclam.conf:删除 "Example" 行 sudo freshclam brew services start clamav ``` ### 前端 ``` cd frontend npm install npm start # → http://localhost:3000 (将 /api 代理到 localhost:5000) ``` ## 🔌 API 参考 所有 endpoint 均带有 `/api` 前缀。 ### `POST /api/scan` 上传一个或多个文件进行分析。 **请求:** `multipart/form-data`,包含字段 `files`(一个或多个)。 **响应:** ``` { "scanned": 1, "results": [ { "scan_id": "abc123def456", "timestamp": "2026-03-19T10:00:00Z", "filename": "suspicious.exe", "file_size": 204800, "file_type_magic": "PE Executable", "file_extension": "exe", "hashes": { "md5": "...", "sha1": "...", "sha256": "..." }, "entropy": 7.432, "threat_score": 85, "threat_level": "CRITICAL", "findings": [ { "name": "ClamAV: Win.Trojan.GenericKD", "detail": "ClamAV signature match", "severity": "critical", "category": "MALWARE" } ], "clamav": { "status": "FOUND", "signature": "Win.Trojan.GenericKD" }, "yara_matches": [...], "virustotal": { "status": "FOUND", "detections": 42, "total_engines": 72 }, "suspicious_strings": [...], "network_indicators": [...], "pe_info": { "architecture": "x64 (64-bit)", "num_sections": 6, ... }, "scan_duration_ms": 1243, "errors": [] } ] } ``` ### `GET /api/scan/` 通过 ID 获取之前的扫描结果。 ### `DELETE /api/scan/` 删除扫描结果及其从磁盘上传的文件。 ### `GET /api/history?limit=50` 列出最近的扫描记录(轻量级摘要,不包含完整详情)。 ### `POST /api/quarantine` 将扫描过的文件移动到隔离文件夹。 **Body:** `{ "scan_id": "abc123def456" }` ### `GET /api/status` 返回所有扫描引擎的健康/可用状态。 ``` { "engine": "NeuroVirus v3.14.1", "clamav": { "available": true, "version": "ClamAV 1.3.0" }, "yara": { "available": true, "rule_files": 2, "yara_version": "4.5.1" }, "virustotal": { "available": true, "key_configured": true } } ``` ## 🧬 YARA 规则 自定义 YARA 规则位于 `backend/yara_rules/`。在该目录下添加 `.yar` 或 `.yara` 文件并重启后端——它们会被自动加载。 包含的规则集: - `malware_generic.yar` — Ransomware、Keyloggers、Process Injection、Anti-Debug、Crypto Miners、Backdoors、PowerShell 滥用、Packers、PHP Webshells、Mimikatz - `network_threats.yar` — C2 模式、DNS 隧道、Tor 隐藏服务、数据外泄 引擎识别的规则元数据字段: ``` rule My_Rule { meta: description = "Human-readable description shown in UI" severity = "critical" // critical | high | medium | low category = "MALWARE" strings: ... condition: ... } ``` ## 🔍 扫描能力 | 检查项 | 方法 | 检测内容 | |-------|--------|-----------------| | 文件类型 | Magic bytes | 真实文件类型与声明的扩展名对比 | | 哈希 | MD5 / SHA-1 / SHA-256 | 身份标识、去重、VT 查询 | | 熵 | Shannon 算法 | 加壳/加密/混淆的内容 | | 字符串 | 对可打印字节进行正则匹配 | 23 种可疑的 API / 命令模式 | | PE 头 | 结构解析 | 架构、节、WX 页面、加壳器 | | 网络 IOC | 正则表达式 | URL、IP、可疑 TLD(.onion, .tk …) | | AV 签名 | ClamAV clamd | 数以百万计的已知恶意软件签名 | | 自定义规则 | YARA 4.x | 行为与结构模式匹配 | | 云端情报 | VirusTotal API v3 | 70+ AV 引擎,哈希查询 + 文件上传 | | 隔离 | 文件系统 | 将标记的文件从 uploads/ 隔离到 quarantine/ | ## 📁 项目结构 ``` neurovirus/ ├── docker-compose.yml ├── .env.example ├── .gitignore │ ├── backend/ │ ├── Dockerfile │ ├── requirements.txt │ ├── run.py ← Flask entry point │ ├── app/ │ │ ├── __init__.py ← App factory │ │ ├── config.py ← All configuration │ │ ├── routes.py ← REST API endpoints │ │ └── scanner.py ← Core scan engine (900 lines) │ ├── yara_rules/ │ │ ├── malware_generic.yar │ │ └── network_threats.yar │ ├── uploads/ ← Temporary scan storage (git-ignored) │ └── quarantine/ ← Quarantined files (git-ignored) │ └── frontend/ ├── Dockerfile ├── nginx.conf ├── package.json └── src/ ├── index.js ├── App.js ← Main UI (cyberpunk React) ├── App.css ← Cyberpunk stylesheet └── api.js ← Axios API client ``` ## 🔒 安全说明 - **绝不要在没有适当的 secrets manager 的情况下在生产基础设施上运行此项目** —— 使用环境变量或 Docker secrets,切勿硬编码 API key。 - `uploads/` 文件夹会在执行 `DELETE /api/scan/` 时自动清理。考虑添加 cron 作业来清除旧文件。 - ClamAV 的数据库会通过 `freshclamd` 自动更新。在 Docker 中,它会在容器启动时更新。 - VirusTotal 免费层级:**4 次请求/分钟,500 次/天**。如果扫描大量文件,请进行限流。 - 隔离文件夹存储带有 `.quarantine` 扩展名的文件——它们不会被执行,但请将其视为真实的恶意软件处理。 - 对于生产环境,请为 Flask API 添加身份验证 middleware(JWT / API key)。 ## 📦 依赖项摘要 ### 后端 Python 包 | 包 | 用途 | |---------|---------| | `flask` | Web 框架 | | `flask-cors` | 跨域 headers | | `clamd` | ClamAV TCP socket 客户端 | | `yara-python` | YARA 规则引擎绑定 | | `requests` | VirusTotal HTTP 调用 | | `python-magic` | libmagic MIME 检测(可选) | ### 前端 npm 包 | 包 | 用途 | |---------|---------| | `react` | UI 框架 | | `axios` | HTTP 客户端 | | `recharts` | 径向仪表盘 + 条形图 | ## 🐛 故障排除 **ClamAV 提示 "Connection refused"** → 确保 `clamd` 正在运行:`sudo systemctl status clamav-daemon` → 在 Docker 中:等待健康检查通过(首次运行最长可能需要 2 分钟) **YARA 导入错误** → `pip install yara-python` 需要 YARA C 库。在 Ubuntu 上:`sudo apt install yara` **VirusTotal 返回 404** → 文件哈希不在 VT 的数据库中。如果文件 ≤32 MB,它将被自动上传以进行分析。 **"No module named clamd"** → 在激活 virtualenv 的情况下,在 `backend/` 目录中运行 `pip install -r requirements.txt`。 ## 📜 许可证 MIT — 可自由使用,但**绝不要使用此工具扫描您不拥有或无权扫描的文件**。
标签:ClamAV, DAST, Docker, Flask, React, Syscalls, Web 安全测试, YARA, 云资产可视化, 威胁情报, 安全防御评估, 开发者工具, 恶意软件分析, 文件扫描, 请求拦截, 逆向工具