mahvil17/Argus-Static-Malware-Analysis-Threat-Intelligence-Platform

GitHub: mahvil17/Argus-Static-Malware-Analysis-Threat-Intelligence-Platform

Argus 是一个纯静态的 Windows PE 文件恶意软件分析平台,通过解析、YARA 扫描、启发式评分与 Gemini LLM 自动生成带 ATT&CK 映射的分析报告。

Stars: 1 | Forks: 0

# Argus – 静态恶意软件分析与威胁情报平台 Argus 是一个用于 Windows PE 文件(`.exe`、`.dll`、`.sys`、`.ocx`、`.scr`、`.cpl`、`.bin`)的全栈静态恶意软件分析平台。样本**绝不会被执行** —— 每一个发现都来源于解析磁盘上的文件:头信息、导入表、字符串、YARA 规则以及透明的启发式评分引擎。随后,LLM (Google Gemini) 会将结构化的发现转化为一份可读的、分析师范式的报告,并附带 MITRE ATT&CK 映射。 本项目作为作品集构建,旨在演示一套完整的 DFIR 风格的分流处理流水线:二进制解析 → 检测 → 评分 → LLM 报告 → 可用的仪表板 —— 这与真实 SOC/事件响应工具中使用的工作流模式完全一致。 [LinkedIn 视频](https://www.linkedin.com/posts/mahvil-9b0333289_cybersecurity-malwareanalysis-dfir-ugcPost-7484178472827883522-dhx2/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAEX-gNQBCPlfCjjg1EBxwLXn83Gxdz6YUgQ) ## 演示 ### 干净的基准样本 一个微不足道的、良性的已编译 `.exe` (`hello.exe`),用于在已知安全的二进制文件上验证端到端的流水线。其返回结果为低风险,AI 报告也能正确识别出被标记的项目(未签名的二进制文件、占位用的版本信息字符串)为误报。 ![干净文件 — 低风险判定](https://static.pigsec.cn/wp-content/uploads/repos/cas/28/288b4f58f4eb3850b053b8bac60826887a90f04226e9f51d7769acb23bc55485.png) ### 真实恶意软件样本 — 完整演练 一个经过验证的 [RedLineStealer](https://bazaar.abuse.ch/sample/7fc964fe47e08d13c158f808d0d68f3f2b9341dfb1ba6fb2a48690fe27e22682/) 样本,来源于 [MalwareBazaar](https://bazaar.abuse.ch/) (abuse.ch),**仅进行静态分析,绝不执行**。Argus 在分析的每一个标签页中都将其标记为高风险: **Overview** — 风险评分、文件识别、区段表。 ![Overview 标签页](https://static.pigsec.cn/wp-content/uploads/repos/cas/66/6646c77347a0c7e2f8ebc9da56e5ce60bdfe009fb43ebe496fd9f2f943abeedf.png) **Findings & Imports** — 启发式分析结果及其背后的证据,以及该样本导入的 DLL/API。 ![Findings & Imports 标签页](https://static.pigsec.cn/wp-content/uploads/repos/cas/ef/efc51074c69c00a5adc2bce5181df455f21417f5ece04c3b941306d38d4df00b.png) **Strings & IOCs** — 提取出的字符串并分类为威胁指标(IP、URL 等)。 ![Strings & IOCs 标签页](https://static.pigsec.cn/wp-content/uploads/repos/cas/63/630fa7ab2fd84dee1009b59d5a43bd833cc06211f2fc3c607e4152babad68cf2.png) **YARA / ATT&CK** — 匹配到的 YARA 规则,映射至 MITRE ATT&CK 的技术 ID 和战术。 ![YARA / ATT&CK 标签页](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39ea7d7c2b432ece4b6e536c6900a1296dab1cbf4309cfdcb4f4a9c532a7df29.png) **AI Report** — 完整的由 Gemini 生成的分析师报告:执行摘要、行为分析、ATT&CK 表格、风险评估和建议操作。 ![AI Report 标签页](https://static.pigsec.cn/wp-content/uploads/repos/cas/2c/2c01a4932a237731a1224be2abe5a4436160cad711bc6dbf97f221f8b84b9fb1.png) ![AI Report 标签页](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/90c9400df1a818c8c703c9001f57e2cd2dfdbd058c8d0fbc9e6d7ef88c31feae.png) ## 架构 ``` ┌─────────────┐ ┌───────────────────┐ ┌──────────────────────────┐ │ React SPA │─────▶│ Django REST API │─────▶│ Analysis pipeline (core) │ │ (Vite) │◀─────│ (jobs, storage) │◀─────│ pefile · yara · Gemini │ └─────────────┘ └───────────────────┘ └──────────────────────────┘ │ ▼ Optional VirusTotal hash lookup ``` ## 功能说明 1. **PE 解析** (`analyzer/core/pe_parser.py`) — 头信息、区段、熵、导入/导出表、签名状态、加壳启发式分析、哈希 (MD5/SHA-1/SHA-256)。直接从内存字节中解析,而不是通过内存映射的文件句柄,因此在 Windows、macOS 和 Linux 上表现一致。 2. **字符串提取** (`string_extractor.py`) — ASCII/UTF-16 字符串,并被分类为 IOCs:URL、IP、域名、注册表项、文件路径、PowerShell 命令、base64 数据块。 3. **YARA 扫描** (`yara_scanner.py` + `rules/generic_indicators.yar`) — 通用的、非特定家族的初筛规则(加壳器、LOLBins、勒索提示语、注入 API、凭证访问字符串)。将你自己的 `.yar`/`.yara` 文件放入 `analyzer/rules/` 中即可扩展检测覆盖范围。 4. **启发式评分** (`heuristics.py`) — 透明的、基于规则的评分 (0–100),来源于 API 组合、熵和字符串模式。每一条发现都会准确列出触发它的证据 —— 没有任何黑盒评分。 5. **MITRE ATT&CK 映射** (`mitre_mapping.py`) — 从内部发现标签到技术 ID/战术的静态查找表,因此结果能够与其他安全工具使用相同的通用语言。 6. **VirusTotal 富化** (`vt_client.py`,可选) — **仅进行 SHA-256 哈希查找**;绝不会将二进制文件本身上传给第三方。 7. **LLM 报告生成** (`llm_report.py`) — 将结构化的分析结果(绝非原始二进制文件)发送给 Gemini 以生成 Markdown 格式的报告:执行摘要、文件概述、行为分析、ATT&CK 表格、风险评估、建议操作。 以上所有流程均由 `analyzer/core/orchestrator.py::run_full_analysis()` 进行编排。 ## 项目结构 ``` backend/ Django project config/ settings, urls, wsgi analyzer/ the "analyzer" app core/ framework-agnostic analysis engine (pure Python) pe_parser.py PE structure parsing string_extractor.py string + IOC extraction yara_scanner.py YARA rule matching heuristics.py scoring engine mitre_mapping.py ATT&CK technique lookup vt_client.py VirusTotal hash-lookup client llm_report.py Gemini report generation orchestrator.py ties the whole pipeline together rules/ YARA rule files models.py AnalysisJob views.py upload / list / detail / report-download endpoints frontend/ React + Vite + Tailwind SPA src/ api/client.js axios client components/ RiskGauge, badges, upload panel, tabs pages/ Dashboard, JobDetail hooks/ polling hooks for job list / job detail docs/ screenshots/ demo screenshots referenced in this README ``` ## 在本地运行 ### 后端 ``` cd backend python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # then fill in GEMINI_API_KEY (required for AI reports) python manage.py migrate python manage.py runserver ``` 在大多数平台上,`yara-python` 不需要单独安装 libyara(它内置了编译好的版本);如果 `pip install yara-python` 在你的操作系统上安装失败,请先通过你的包管理器安装 `libyara`。 ### 前端 ``` cd frontend npm install npm run dev ``` 访问 `http://localhost:5173`。 ## 配置说明 所有密钥仅保留在服务端的 `backend/.env` 中(已被 gitignore —— 永远不会提交)。前端无法看到它们。 | 变量 | 用途 | |---|---| | `GEMINI_API_KEY` | 生成 AI 分析师报告所必需的。免费 Key 获取:[aistudio.google.com/apikey](https://aistudio.google.com/apikey) | | `ANALYSIS_LLM_MODEL` | 用于生成报告的 Gemini 模型(请注意,模型名称经常变动) | | `VIRUSTOTAL_API_KEY` | 可选;启用“使用 VirusTotal 进行富化”复选框 | | `MAX_UPLOAD_SIZE_MB` | 上传大小上限,默认 100 MB | | `CORS_ALLOWED_ORIGINS` | 允许调用 API 的前端源 | ## 使用真实样本进行测试 - **良性基准:** 任何合法的已编译 Windows 二进制文件均可,例如 `notepad.exe`,或者一个简单编译的 "hello world" 程序。 - **已知恶意样本:** [MalwareBazaar](https://bazaar.abuse.ch/) (abuse.ch 的一个项目) 托管了大量经过验证、已标记的恶意软件样本,专门用于此类研究/测试用途。样本下载格式为 AES 加密的 `.zip` 文件(密码:`infected`),这样是为了避免它们在传输过程中被标记 —— 请使用 [7-Zip](https://www.7-zip.org/) 解压它们,因为 Windows 内置的 zip 支持无法处理 AES 加密的压缩包。**永远不要执行下载的样本** —— 只能将其传递给 Argus 进行静态分析,最好将其放在一个已被本地杀毒软件扫描排除的文件夹中(以免它在 Argus 读取之前就被隔离),并且最理想的情况是在一个隔离的虚拟机中进行。 - **EICAR 测试文件:** 行业标准的杀毒软件测试字符串,可用于确认你的杀毒软件设置是否生效,但请注意,它*不是*一个有效的 PE 文件,因此 Argus 会以 `Not a valid PE file` 错误正确地拒绝它,而不是给出风险评分 —— 这是预期的、有意为之的行为(Argus 仅针对 PE 文件格式设计)。 ## 生产环境注意事项 本项目目前采用基于同步请求的后台线程进行分析,这对于演示或小团队来说还可以,但不适用于生产环境的并发处理。对于生产环境: - 将 `analyzer/views.py` 中的后台 `threading.Thread` 替换为真正的任务队列(Celery + Redis/RabbitMQ,或 Django-Q)。 - 对上传的样本实施访问控制;它们可能是活跃的恶意软件。 - 在隔离的容器/虚拟机中运行分析工作进程,除了你明确允许的 VirusTotal/Gemini endpoint 之外,不进行任何出站网络访问。 - 将 SQLite 替换为 Postgres。 - 将应用部署在 gunicorn/uvicorn + 反向代理 (nginx) 之后,并配置 TLS。 - 添加身份验证(此基础脚本项目发布时不包含用户认证/多租户功能)。 ## 已知限制 提前明确说明本项目的范围,因为这关系到如何正确看待本项目: - **仅限静态分析** — 无动态/行为分析,无沙箱,无执行监控。仅在运行时才会暴露恶意行为的样本(例如通过动态字符串解密)无法被完全刻画。 - **单租户,无身份验证** — 这是一个演示基础框架,不是多用户的生产级服务。 - **内置的小型 YARA 规则集** — 刻意设计为通用/防御性,而不是全面的商业规则源。请使用你自己精选的规则扩展 `analyzer/rules/` 以获得真实的覆盖范围。 - **开发服务器,线程化后台任务** — 并非真正的任务队列;适合演示,但不适合并发的生产负载。 ## 安全说明 - 样本**仅进行静态分析** — 此流水线中的任何环节都不会执行、解包或模拟运行该二进制文件。 - LLM 报告生成步骤仅将结构化的、已提取的发现结果发送给 Gemini API — 绝不包含原始二进制文件。 - 内置的 YARA 规则和启发式逻辑具有刻意的通用性/防御性;在生产环境中,请使用你自己精选或商业化的规则源扩展 `analyzer/rules/` 以实现全面覆盖。 ## 技术栈 **后端:** Django, Django REST Framework, `pefile`, `yara-python`, Gemini API **前端:** React, Vite, Tailwind CSS **检测:** 自定义启发式评分引擎,YARA,MITRE ATT&CK 映射
标签:DNS信息、DNS暴力破解, DNS 反向解析, masscan, Windows PE文件分析, YARA规则, 大语言模型报告, 威胁情报平台, 安全运营中心/DFIR工具, 网络安全审计, 逆向工具, 静态恶意软件分析