zaidxahmed-cyber/Spectra
GitHub: zaidxahmed-cyber/Spectra
SPECTRA 是一款结合 Volatility3 内存取证与双 LLM Agent 的 Windows 桌面应用,用于实时检测无文件恶意软件并自动映射 MITRE ATT&CK 技术。
Stars: 0 | Forks: 0
# SPECTRA
一款用于通过实时内存取证和 AI 驱动分析来检测无文件恶意软件的 Windows 桌面应用程序。SPECTRA 将 Volatility3 与双 Agent LLM pipeline(Claude + GPT-4o)相结合,以实时捕获、分诊并对可疑的 Windows 进程给出判定。本项目作为 FAST NUCES Islamabad 的本科毕业设计开发。
## 目录
- [项目概述](#project-overview)
- [在线演示功能](#live-demo-features)
- [技术栈](#tech-stack)
- [目录结构](#folder-structure)
- [检测能力](#detection-capabilities)
- [前置条件](#prerequisites)
- [安装说明](#installation)
- [获取 API 密钥](#getting-api-keys)
- [运行项目](#running-the-project)
- [构建独立可执行文件](#building-the-standalone-executable)
- [使用指南](#usage-guide)
- [演示恶意软件模拟器](#demo-malware-simulators)
- [环境变量](#environment-variables)
- [学术背景](#academic-context)
- [许可证](#license)
- [鸣谢](#acknowledgments)
- [团队](#team)
## 项目概述
SPECTRA 展示了一个用于无文件恶意软件检测的生产级取证分析 pipeline:
- 使用 `psutil` 和 `WMI` 实时监控所有正在运行的 Windows 进程
- 使用 `ProcDump64` 捕获所选进程的完整内存转储
- 针对每个转储运行一套自定义的 Volatility3 插件,以提取取证指标
- 将插件输出流式传输至 AI DFIR Agent(主用 Claude Sonnet,备用 GPT-4o)进行结构化分析
- 将检测到的行为映射到 MITRE ATT&CK 框架
- 产出最终判定:`BENIGN`(良性)、`SUSPICIOUS`(可疑)或 `FILELESS MALWARE CONFIRMED`(确认无文件恶意软件)
- 通过 pywebview 提供毛玻璃效果的 React 桌面 UI 来渲染所有内容
无文件恶意软件代表了现代威胁中最具隐蔽性的类别——它完全在内存中执行,不在磁盘上留下任何文件,并绕过基于特征码的杀毒软件。SPECTRA 通过自动化从进程捕获到 AI 驱动的判定的完整取证工作流,填补了这一空白。
## 在线演示功能
| 功能 | 描述 |
|---------|-------------|
| 进程监控 | 每 60 秒刷新一次的所有运行进程实时表(PID、PPID、所有者、路径、CPU、内存) |
| 内存转储捕获 | 可搜索的自动补全——选择任意进程,通过 ProcDump64 一键捕获完整的内存转储 |
| DFIR Agent | 流式传输结构化的取证报告,涵盖父子进程关系、执行路径、注册表持久化、代码注入、进程镂空以及网络活动 |
| 判定引擎 | 带有置信度评分的最终判定、完整的 IOC 列表以及 MITRE ATT&CK 技术映射,并保存为 JSON |
| MITRE ATT&CK 映射 | 自动映射到战术和技术(例如 T1055 进程注入、T1547 开机自启、T1071 应用层协议) |
| YARA 检测 | 扫描进程内存中的 shellcode 模式、意外区域的 PE 头以及已知的家族特征码 |
| 毛玻璃 UI | 采用 React + Tailwind 构建的 Apple 风格毛玻璃主题,以具有原生体验的桌面窗口呈现 |
## 技术栈
**桌面外壳**
- pywebview 4.x (Chromium WebView2)
- PyInstaller 6 (单 exe 打包)
**后端**
- Python 3.12
- Flask 3 + Flask-SocketIO
- Volatility3 2.26 及自定义插件
- ProcDump64, psutil, WMI
- YARA 4.5, pefile, capstone
**AI Agent**
- Anthropic Claude(主要的 DFIR Agent)
- OpenAI GPT-4o(备用)
**前端**
- React 18 + TypeScript 5 + Vite 5
- Tailwind CSS 3 + 自定义毛玻璃主题
## 目录结构
```
Spectra/
├── client/ # React + TypeScript frontend
│ ├── pages/ # Dashboard, Monitoring, Dumps, DFIR, Verdict
│ ├── lib/ # Shared hooks and context (ScanContext, etc.)
│ └── global.css # Glass theme variables
│
├── server/ # Flask backend
│ ├── api_server.py # All REST and SSE endpoints
│ ├── config.py # Paths, ports, env loading
│ ├── spectra_engine.py # Core analysis orchestration
│ ├── volatility_executor.py # Volatility3 subprocess wrapper
│ ├── dfir_triage.py # DFIR Agent 1 prompt and streaming logic
│ ├── mitre_detection.py # MITRE ATT&CK technique mapper
│ ├── detection_utils.py # YARA and pattern matching helpers
│ └── agents/ # LLM agent wrappers (Claude, GPT-4o)
│
├── custom plugins/ # Custom Volatility3 plugins
│ └── spectra_live.py # parentchild, execpath, persistence, injection, hollowing, network
│
├── Malwares/ # Demo malware simulators (non-destructive)
│ ├── FilelessSimulator_Poweliks.exe
│ └── ProcessHollowingSimulator.exe
│
├── SpectraAnalysis/ # Runtime output (auto-created, gitignored)
│ ├── Processes/ # Process snapshot JSONs
│ ├── Dumps/ # Memory dump files (.dmp)
│ ├── Results/ # Verdict JSONs
│ └── MemoryImages/ # Full memory images
│
├── desktop_app.py # Entry point: starts Flask, opens pywebview
├── spectra.spec # PyInstaller spec
├── BUILD.bat # One-click build script
├── requirements.txt
├── package.json
└── README.md
```
## 检测能力
SPECTRA 的六个自定义 Volatility3 插件从每个内存转储中提取以下指标:
| 插件类别 | 检测重点 |
|-----------------|-----------------|
| 父子进程关系 | 异常的派生链、伪装进程 |
| 执行路径分析 | 从可疑位置(Temp、AppData 等)运行的二进制文件 |
| 注册表持久化 | Run 键、IFEO Debugger、COM CLSID 劫持 |
| 代码注入 | RWX 内存区域、外部模块加载 |
| 进程镂空 | 意外内存区域中的 PE 头、不匹配的节区数据 |
| 网络活动 | 可疑的出站信标、异常端口、类 C2 模式 |
## 前置条件
- Windows 10 或 11(64 位)
- Python 3.12 — https://python.org/downloads
- Node.js 20 LTS — https://nodejs.org
- Git — https://git-scm.com
- 来自 Sysinternals 的 ProcDump64 — 将 `procdump64.exe` 放置在 PATH 或项目根目录下
- Volatility3 — 通过 pip 安装(包含在 `requirements.txt` 中)
- 一个 Anthropic API 密钥和/或 OpenAI API 密钥
## 安装说明
### 1. 克隆仓库
```
git clone https://github.com/zaidxahmed-cyber/Spectra.git
cd Spectra
```
### 2. 创建 Python 虚拟环境
```
python -m venv .venv
.venv\Scripts\activate
```
### 3. 安装 Python 依赖
```
pip install -r requirements.txt
```
### 4. 安装 Node 依赖
```
npm install
```
### 5. 配置您的 API 密钥
在项目根目录下创建一个 `.env` 文件:
```
OPENAI_API_KEY=your-openai-api-key-here
ANTHROPIC_API_KEY=your-anthropic-api-key-here
```
SPECTRA 会在启动时读取这些配置。如果仅提供了一个密钥,它将自动回退到可用的服务提供商。
## 获取 API 密钥
### Anthropic Claude(主要 Agent)
1. 前往 https://console.anthropic.com/
2. 登录或创建账户
3. 导航至 **Settings → API Keys**
4. 点击 **Create Key**,复制值并将其作为 `ANTHROPIC_API_KEY` 粘贴到 `.env` 中
### OpenAI GPT-4o(备用 Agent)
1. 前往 https://platform.openai.com/api-keys
2. 登录或创建账户
3. 点击 **Create new secret key**
4. 复制值并将其作为 `OPENAI_API_KEY` 粘贴到 `.env` 中
您只需一个密钥即可运行 SPECTRA,但同时拥有两者可以在某个提供商不可用时启用自动回退。
## 运行项目
在开发模式下,您需要同时运行两个终端。
### 终端 1 — 启动后端
```
python desktop_app.py
```
您应该会看到:
```
INFO — Flask backend running on http://127.0.0.1:5001
INFO — pywebview window opened
```
### 终端 2 — 前端(可选,用于热重载)
```
npm run dev
```
pywebview 窗口会自动打开。对于最终用户,下方的独立 `.exe` 构建版本将两者合并为了一个单一的可执行文件。
## 构建独立可执行文件
SPECTRA 以单一 `.exe` 文件的形式发布,其中打包了 Python 后端和编译后的 React 前端。在项目根目录下执行:
```
BUILD.bat
```
输出文件位于 `dist/spectra.exe`。直接运行它即可——目标机器上无需安装 Python 或 Node。
## 使用指南
### 步骤 1 — 启动 SPECTRA
在开发环境下运行 `python desktop_app.py`,或运行独立构建版本 `dist/spectra.exe`。主窗口将随仪表板打开。
### 步骤 2 — 监控进程
点击侧边栏中的 **Monitoring**。SPECTRA 会列出所有正在运行的进程。寻找可疑条目:异常的名称、未知的路径,或者是伪装成系统可执行文件的进程。
### 步骤 3 — 收集内存转储
点击侧边栏中的 **Dumps Collected**。在搜索框中输入目标名称或 PID,然后点击 **Take Dump**。SPECTRA 将调用 ProcDump64,将 `.dmp` 文件存储在 `SpectraAnalysis/Dumps/` 中,并将其添加到转储列表。
### 步骤 4 — 运行 DFIR 分析
点击侧边栏中的 **DFIR Agent**。从面板中选择您的转储,然后点击 **Memory Capture**。SPECTRA 将逐个插件流式传输取证报告。当所有六个插件完成后,将显示包含案例摘要、观察到的事实、可疑指标以及各个插件输出的完整报告。
### 步骤 5 — 获取判定
点击侧边栏中的 **Verdict Agent**。选择同一个转储。SPECTRA 会将汇总的插件输出发送给判定 AI,并流式传输最终判定结果、置信度评分、IOC 列表和 MITRE ATT&CK 映射。该判定将作为 JSON 保存到 `SpectraAnalysis/Results/`。
## 演示恶意软件模拟器
`Malwares/` 文件夹包含了两个教育性的 .NET 模拟器,可安全地重现真实的无文件恶意软件行为。所有注册表修改在退出时都会自动删除,且不会执行任何 payload。
### FilelessSimulator_Poweliks.exe
模拟 Poweliks 风格的无文件持久化:
- 分配一个 64 KB 的 RWX 内存区域,填充具有 shellcode 形态的字节
- 嵌入会触发 YARA 的 API 名称字符串
- 写入注册表 Run 键和 COM CLSID 劫持持久化项
- 派生 `mshta.exe` 作为异常子进程
### ProcessHollowingSimulator.exe
模拟伪装为 `svchost.exe` 的进程镂空载体:
- 分配两个 RWX 区域(其中一个包含伪造的 MZ/PE 头)
- 嵌入特定于进程镂空的字符串
- 写入 Run 键和 IFEO Debugger 后门
- 在 `localhost:4444` 上以 5 秒为间隔循环发送信标
### 端到端测试
1. 从 `Malwares/` 文件夹运行任一模拟器
2. 打开 SPECTRA 并转到 **Monitoring** 查找该进程
3. 从 **Dumps Collected** 页面对其进行转储
4. 对该转储运行 **DFIR Agent**,随后运行 **Verdict Agent**
5. SPECTRA 将检测出 RWX 注入区域、注册表持久化、异常父子进程关系和 YARA 匹配,并返回 `FILELESS MALWARE CONFIRMED`(确认无文件恶意软件)的判定以及完整的 MITRE ATT&CK 映射
## 环境变量
| 变量 | 必需 | 描述 |
|----------|----------|-------------|
| `ANTHROPIC_API_KEY` | 是(如果使用 Claude) | 用于主要 DFIR Agent 的 Anthropic API 密钥 |
| `OPENAI_API_KEY` | 是(如果使用 GPT-4o) | 用于备用 LLM Agent 的 OpenAI API 密钥 |
| `API_PORT` | 否(默认:`5001`) | Flask 后端使用的端口 |
| `VOLATILITY_PATH` | 否(默认:`volatility3`) | Volatility3 可执行文件的路径 |
| `PROCDUMP_PATH` | 否(默认:`procdump64.exe`) | ProcDump64 的路径 |
## 学术背景
SPECTRA 是作为** FAST 国家计算机与新兴科学大学 (FAST NUCES), 伊斯兰堡校区**的计算机科学理学士本科毕业设计开发的。
该项目解决了端点安全工具中的一个实际空白:大多数开源内存取证工具都需要深厚的专业知识和手动操作流程。SPECTRA 自动化了从进程捕获到 AI 驱动判定的整个 pipeline,使任何技能水平的安全分析师都能使用高级的取证分析。
该方法基于有关无文件恶意软件检测、进程注入技术 (T1055) 以及将大型语言模型应用于结构化取证推理的学术研究。该架构受用于自动化内存取证的 Argus 框架启发,并在此基础上扩展了现代化的图形界面、多 LLM 推理、MITRE ATT&CK 映射以及基于 YARA 的模式检测。
## 许可证
本项目仅用于学术和教育目的发布。演示用的恶意软件模拟器是非破坏性且可自动清理的。**请勿将本项目的任何部分用于您未拥有或未获得明确测试许可的系统。**
## 鸣谢
- 感谢 Volatility Foundation 提供 Volatility3
- 感谢 Sysinternals (Microsoft) 提供 ProcDump
- 感谢 MITRE ATT&CK 提供威胁情报框架
- 感谢 Anthropic 和 OpenAI 提供 LLM API
- 感谢 FAST NUCES 伊斯兰堡校区的教职员工和指导老师对本项目的指导
## 队
**Zaid Ahmed** — 邮箱:zaidahmed78654@gmail.com
**Moaaz Nadeem** — 邮箱:muhammadmoaaz000@gmail.com
**所属机构:** FAST 国家计算机与新兴科学大学,伊斯兰堡
**专业:** 网络安全理学学士
**批次:** 2022
标签:Qt, React, SecList, Syscalls, Volatility3, 内存取证, 后端开发, 安全, 无文件恶意软件, 漏洞挖掘, 超时处理, 逆向工具