keitodanieru/EntroSight
GitHub: keitodanieru/EntroSight
一个基于 ResNet50 与 RAG 的隐私保护型 Windows PE 恶意软件家族分类器,能自动生成基于 MITRE ATT&CK 的可解释威胁情报。
Stars: 0 | Forks: 0
# EntroSight
一个具有可解释威胁情报的隐私保护型 Windows PE 恶意软件家族分类器。
## 它的功能
EntroSight 接收上传的 PE 二进制文件(.exe、.dll、.sys),将其转换为字节熵热力图,使用经过 fine-tuning 的 ResNet50 模型将其分类到恶意软件家族中,并生成由 MITRE ATT&CK 情报支持的通俗语言威胁解释。
**支持的家族:** AgentTesla、Remcos、DCRat、AsyncRAT、RedLineStealer、Formbook 和 Benign。
## 核心原则
- **隐私保护** —— 上传的二进制文件在特征提取后会立即从内存中删除。不会有任何数据离开您的环境。
- **可解释 AI** —— 分类结果附带基于 MITRE ATT&CK 的解释,而不仅仅是标签。
- **完全本地化** —— 所有推理、检索和 LLM 生成均通过 Docker Compose 在本地运行。
## 架构
```
User Browser → Web UI (Jinja2 + HTMX) → FastAPI Backend
→ File Validator → Entropy Heatmap Generator → ResNet50 Classifier
→ RAG Engine (ChromaDB + MITRE ATT&CK) → Ollama LLM → Explanation
→ SQLite (scan history)
```
两个 Docker 容器:
- `app` —— Python 应用程序(端口 8000)
- `ollama` —— Ollama LLM 服务(端口 11434)
## 环境要求
- Python 3.11+
- Docker & Docker Compose(用于部署)
- 一个训练好的 ResNet50 checkpoint 文件(`.pth`),放置在 `models/` 目录中
## 快速开始(开发环境)
```
# 安装 dependencies
pip install -r requirements.txt
# 运行 dev server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# 运行 tests
pytest tests/ -v
```
## 快速开始(Docker)
```
# 构建并运行两个 containers
docker-compose up --build
# 应用将可以通过 http://localhost:8000 访问
# Ollama 会在首次启动时拉取 Mistral model
```
## 环境变量
所有设置均使用 `ENTROSIGHT_` 前缀:
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `ENTROSIGHT_MODEL_CHECKPOINT_PATH` | `models/resnet50_malware.pth` | 训练好的模型路径 |
| `ENTROSIGHT_OLLAMA_BASE_URL` | `http://ollama:11434` | Ollama 服务 URL |
| `ENTROSIGHT_OLLAMA_MODEL` | `mistral` | 用于生成解释的 LLM 模型 |
| `ENTROSIGHT_DATABASE_PATH` | `data/scans.db` | SQLite 数据库路径 |
| `ENTROSIGHT_CHROMADB_PATH` | `data/chromadb` | ChromaDB 存储路径 |
| `ENTROSIGHT_MAX_FILE_SIZE_MB` | `50` | 最大上传大小(以 MB 为单位) |
## 项目结构
```
entrovision/
├── app/
│ ├── main.py # FastAPI app, routes, lifespan
│ ├── config.py # AppSettings (pydantic-settings)
│ ├── models.py # Pydantic/dataclass models
│ ├── scan.py # Scan orchestration pipeline
│ ├── knowledge_base_loader.py
│ ├── components/
│ │ ├── validator.py # PE file validation
│ │ ├── heatmap.py # Byte-entropy heatmap generation
│ │ ├── classifier.py # ResNet50 inference
│ │ ├── rag.py # ChromaDB MITRE ATT&CK retrieval
│ │ ├── explainer.py # Ollama LLM explanations
│ │ └── database.py # Async SQLite scan history
│ ├── templates/ # Jinja2 HTML templates
│ └── static/css/ # Stylesheets
├── data/
│ └── knowledge_base/ # MITRE ATT&CK JSON documents
├── models/ # ML checkpoints (.pth)
├── tests/ # pytest test suite
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
```
## 模型 Checkpoint
`.pth` checkpoint 是单独训练的,不包含在此 repo 中。请将其放置在 `models/resnet50_malware.pth`(或通过环境变量进行配置)。该 checkpoint 必须包含一个 `"model_state_dict"` 键,其中带有支持 7 类输出的 ResNet50 的权重。
## 运行测试
```
# 所有 tests
pytest tests/ -v
# 特定 component
pytest tests/test_validator.py -v
pytest tests/test_classifier.py -v
pytest tests/test_rag.py -v
# 基于 property 的 tests
pytest tests/test_heatmap_properties.py -v
```
## 目标性能
- 分类:< 1 秒(CPU)
- 从扫描到解释的完整 pipeline:< 30 秒
标签:AI风险缓解, DLL 劫持, DNS 反向解析, IP 地址批量处理, Python, 人工智能, 大语言模型, 威胁情报, 开发者工具, 无后门, 用户模式Hook绕过, 计算机视觉, 请求拦截, 逆向工具