astafford8488/venom

GitHub: astafford8488/venom

一个基于机器学习与自动化规则生成的神经恶意软件分析与威胁情报平台,旨在将数小时的手动分析压缩至数秒。

Stars: 0 | Forks: 0

# 🐍 VENOM ### 神经恶意软件分析与威胁情报平台 [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![MITRE ATT&CK](https://img.shields.io/badge/MITRE-ATT%26CK-red.svg)](https://attack.mitre.org/) [![YARA](https://img.shields.io/badge/YARA-Compatible-orange.svg)](https://virustotal.github.io/yara/) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3216bb798e025538.svg)](https://github.com/astafford8488/venom/actions) *一个生产级恶意软件分析平台,结合 PE 静态分析、机器学习分类、行为模式匹配、多源威胁情报以及自动化 YARA 规则生成,构建统一分析流水线,并具备完整的 MITRE ATT&CK 技术映射能力。* [功能](#features) · [架构](#architecture) · [快速开始](#quick-start) · [分析流水线](#analysis-pipeline) · [API 参考](#api-reference)
## 问题 恶意软件分析需要跨多个领域的深厚专业知识,且每个样本耗时数小时: | 挑战 | 现实 | |------|------| | **数量** | 每天发现 450,000+ 新的恶意软件样本 | | **复杂性** | PE 解析、行为分析和情报关联是独立的工作流 | | **分类** | 手动家族识别需要多年的逆向工程经验 | | **检测缺口** | 编写 YARA 签名繁琐且容易出错 | | **情报** | 威胁情报分散在 VirusTotal、MalwareBazaar 和私有源中,未统一整合 | **VENOM 解决了这一问题**,通过自动化整个恶意软件分析工作流——从 PE 头解析到神经网络分类再到自动化 YARA 签名生成——在数秒而非数小时内完成。 ## VENOM 对比 | 能力 | 手动逆向 | 沙箱 | VENOM | |------|----------|------|-------| | PE 静态分析 | 手动 IDA/Ghidra | 基础 | 完整自动化解析 | | 家族分类 | 专家知识 | 无 | 机器学习集成 + 启发式 | | 行为分析 | 动态沙箱 | API 监控 | 静态行为签名 | | 威胁情报 | 手动查询 | 无 | 多源自动增强 | | YARA 生成 | 手动编写 | 无 | 从样本自动生成 | | IOC 提取 | 手动 | 部分 | 完整自动化提取 | | MITRE ATT&CK 映射 | 手动 | 部分 | 从行为自动生成 | | 分析时间 | 数小时 | 5-10 分钟 | 数秒 | ## 功能 ### 静态分析引擎 - **PE 头解析** — 段、导入、导出、时间戳、入口点(通过 `pefile` 并提供手动回退) - **香农熵** — 各段及整体文件的打包/加密检测 - **导入分析** — 70+ 可疑 API 分类(注入、网络、加密、反调试、键盘记录、权限提升) - **字符串提取** — 可疑模式:URL、IP、注册表路径、Shell 命令、加密、监控 - **IOC 提取** — URL、IP 地址、域名、邮箱、比特币地址、注册表键 - **特征提取** — 260+ 个用于 ML 的数值特征(字节直方图、PE 结构、字符串计数) ### 神经网络分类 - **启发式基线** — 无需训练,基于 12 个恶意软件家族的规则评分 - **随机森林** — 使用特征重要性分析的 Scikit-learn 集成分类器 - **梯度提升** — 针对大型数据集的高精度替代方案 - **12 个恶意软件家族** — 良性、木马、勒索软件、蠕虫、后门、间谍软件、投放器、挖矿、Rootkit、广告软件、僵尸网络、APT ### 行为分析 - **15 个行为签名** — 进程注入、注册表持久化、凭证窃取、网络 C2、键盘记录、屏幕捕获、反调试、反虚拟机 - **MITRE ATT&CK 映射** — 每个行为映射到具体技术(T1055、T1547、T1003 等) - **能力摘要** — 自动生成的检测能力列表 - **基于导入的检测** — 从导入的 API 函数识别恶意软件能力 ### 威胁情报 - **VirusTotal 集成** — API v3 哈希查询与检测比率评分 - **MalwareBazaar** — abuse.ch API 用于已知恶意软件家族识别 - **本地数据库** — 基于 JSON 的本地威胁情报存储,支持快速查询 - **IOC 增强** — 域名信誉、IP 分类、自动风险评分 - **结果缓存** — 可配置的 TTL,避免重复 API 调用 ### YARA 规则生成 - **从样本自动生成** — 提取唯一字符串与十六进制模式用于检测 - **PE 感知规则** — 包含 MZ 头检查和基于导入的条件 - **家族规则** — 从同一家族的多个样本生成签名 - **LLM 增强** — 通过 Claude 将自然语言转换为 YARA 规则 - **字符串评分** — 智能选择高价值指标 ## 架构 ``` VENOM Analysis Pipeline ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ ┌──────────┐ ┌───────────────────────────────────────────┐ │ │ │ Sample │───▶│ Static Analyzer │ │ │ │ (PE/ELF/ │ │ PE Parse → Entropy → Strings → IOCs │ │ │ │ Binary) │ └──────────┬───────────┬───────────────────┘ │ │ └──────────┘ │ │ │ │ │ │ │ │ ┌─────────▼──┐ ┌────▼──────────────┐ │ │ │ Feature │ │ Behavioral │ │ │ │ Extraction │ │ Analyzer │ │ │ │ (260+) │ │ (15 signatures) │ │ │ └─────────┬──┘ └────┬──────────────┘ │ │ │ │ │ │ ┌─────────▼──┐ │ │ │ │ Neural │ │ │ │ │ Classifier │ │ │ │ │ (ML/Heur) │ │ │ │ └─────────┬──┘ │ │ │ │ │ │ │ ┌──────────────┐ ┌───────▼───────────▼──────────────┐ │ │ │ Threat │──▶│ Verdict Engine │ │ │ │ Intelligence│ │ (Aggregate → Score → Classify) │ │ │ │ (VT/MB/DB) │ └──────────┬───────────────────────┘ │ │ └──────────────┘ │ │ │ ┌─────────▼─────────┐ │ │ │ YARA Generator │ │ │ │ (Auto-Signature) │ │ │ └───────────────────┘ │ │ │ │ ┌──────────────────────┐ │ │ │ Analysis Report │ │ │ │ Verdict + IOCs + │ │ │ │ YARA + MITRE Map │ │ │ └──────────────────────┘ │ │ │ └────────────────────────────────────────────────────────────────────┘ ``` ## 快速开始 ### 安装 ``` git clone https://github.com/astafford8488/venom.git cd venom pip install -e ".[dev]" ``` ### 分析样本 ``` import asyncio from venom import VenomEngine async def main(): engine = VenomEngine() report = await engine.analyze( file_path="suspicious_file.exe" ) v = report.verdict print(f"Classification: {v.classification}") # malicious/suspicious/clean print(f"Risk Score: {v.risk_score:.1f}/10") print(f"Family: {v.malware_family}") print(f"Type: {v.malware_type}") print(f"MITRE: {', '.join(v.mitre_techniques)}") print(f"IOCs Found: {len(report.iocs)}") print(report.summary()) asyncio.run(main()) ``` ### CLI 用法 ``` # 全面分析 venom analyze suspicious.exe # 仅静态分析 venom static suspicious.exe # 神经分类 venom classify suspicious.exe # 威胁情报查询 venom intel # 从样本生成 YARA 规则 venom yara generate suspicious.exe --output rule.yar # 从描述生成 YARA venom yara from-description "Detect Emotet banking trojan dropper" # 启动 REST API venom serve --port 8000 ``` ## 分析流水线 ### 阶段 1:静态分析 ``` from venom.static.analyzer import StaticAnalyzer analyzer = StaticAnalyzer() report = analyzer.analyze(sample_bytes, file_name="payload.exe") print(f"Entropy: {report.entropy:.2f}") print(f"Packed: {report.is_packed}") print(f"Sections: {len(report.sections)}") print(f"Suspicious imports: {report.suspicious_imports}") ``` ### 阶段 2:神经网络分类 ``` from venom.neural.classifier import MalwareClassifier classifier = MalwareClassifier() features = analyzer.extract_features(sample_bytes) predictions = classifier.predict(features) for pred in predictions[:5]: print(f" {pred['label']}: {pred['confidence']:.1%}") ``` ### 阶段 3:行为分析 ``` from venom.behavioral.analyzer import BehavioralAnalyzer behavioral = BehavioralAnalyzer() result = behavioral.analyze(sample_bytes, static_report=report) for match in result["matches"]: print(f" [{match['severity']}/10] {match['name']}") print(f" MITRE: {match['mitre']}") ``` ### 阶段 4:威胁情报 ``` from venom.intelligence.lookup import ThreatIntelClient intel = ThreatIntelClient(vt_api_key="YOUR_KEY") result = await intel.lookup(sha256_hash) print(f"Malicious: {result['malicious']}") print(f"Family: {result['malware_family']}") ``` ### 阶段 5:YARA 生成 ``` from venom.yara.generator import YaraGenerator gen = YaraGenerator() rule = gen.generate(sample_bytes, static_report=report) print(rule) ``` ## API 参考 ### REST 端点 | 方法 | 端点 | 描述 | |------|------|------| | `POST` | `/v1/analyze` | 完整分析流水线(文件上传) | | `POST` | `/v1/static` | 仅静态分析 | | `POST` | `/v1/classify` | 仅神经网络分类 | | `POST` | `/v1/yara/generate` | 从描述生成 YARA | | `GET` | `/v1/intel/{sha256}` | 威胁情报查询 | | `GET` | `/health` | 健康检查 | ``` # 分析文件 curl -X POST http://localhost:8000/v1/analyze \ -F "file=@suspicious.exe" # 威胁情报查询 curl http://localhost:8000/v1/intel/ ``` ## 项目结构 ``` venom/ ├── src/venom/ │ ├── __init__.py # Package exports │ ├── engine.py # VenomEngine orchestrator │ ├── cli.py # Click CLI interface │ ├── static/ │ │ └── analyzer.py # PE parser, entropy, strings, IOCs │ ├── neural/ │ │ └── classifier.py # ML malware family classifier │ ├── behavioral/ │ │ └── analyzer.py # Behavioral signature matching │ ├── intelligence/ │ │ └── lookup.py # Multi-source threat intel client │ ├── yara/ │ │ └── generator.py # Automated YARA rule generator │ ├── api/ │ │ └── server.py # FastAPI REST server │ └── utils/ │ └── logging.py # Structured logging ├── tests/ # 90+ unit tests │ ├── test_static.py │ ├── test_classifier.py │ ├── test_behavioral.py │ ├── test_intelligence.py │ └── test_yara.py ├── examples/ # Usage examples │ ├── analyze_sample.py │ ├── train_classifier.py │ └── ioc_extraction.py ├── configs/ │ └── default.yaml └── pyproject.toml ``` ## 路线图 - [x] 带导入分类的 PE 静态分析 - [x] 香农熵与打包检测 - [x] 恶意软件家族机器学习分类(12 个家族) - [x] 15 个行为签名并带 MITRE 映射 - [x] 多源威胁情报(VirusTotal、MalwareBazaar、本地) - [x] 自动化 YARA 规则生成 - [x] IOC 提取与增强 - [x] REST API 与 CLI - [ ] ELF/Mach-O 二进制支持 - [ ] 动态沙箱集成(Cuckoo/CAPE) - [ ] 基于 Transformer 的分类模型 - [ ] 恶意软件解包引擎 - [ ] 交互式 Web 仪表板 - [ ] STIX/TAXII 威胁情报源集成 - [ ] 多样本活动关联 ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE)。
标签:ATT&CK映射, Cloudflare, DNS信息、DNS暴力破解, MITRE ATT&CK, PE文件, Python, YARA规则, 云安全监控, 云资产清单, 多源情报, 威胁情报, 开发者工具, 恶意代码分析, 恶意软件家族识别, 技术栈, 无后门, 机器学习分类, 生产级分析, 病毒总览, 神经分析, 签名生成, 自动化分析, 行为特征, 跨站脚本, 逆向工具, 逆向工程, 速率限制处理, 配置文件, 静态分析