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绕过, 计算机视觉, 请求拦截, 逆向工具