👻 GhostTrace
Reverse engineering with operator-grade workflows, debugger context, sandbox trails, and less tab graveyard energy.
Reverse engineering con flujos de operador de verdad, contexto de depuración, rastro de sandbox y menos vibra de cementerio de pestañas.
Made with 🖤 in Barcelona City
- [English](#english)
- [Español](#español)
## 英语
GhostTrace 将赛博朋克风格的操作员 UI、用于静态分析的 `Ghidraaas`、用于本地推理的 `Ollama`、缓存的分拣工件,以及一个支持 SSH 和调试器桥接的可复现 Windows 沙箱实验室整合在一起。
专注于安全、文档化的安全研究工作流的恶意软件分析和逆向工程实验室。
### 核心亮点
- 由 `Ghidraaas` 驱动的静态分析优先工作流
- 通过 `Ollama` 和 `Godmoded/llama3-lexi-uncensored` 进行本地 LLM 集成
- 缓存的 imports、strings、functions 和反编译结果
- 为每个分析任务自动生成分拣报告
- 在 Web UI 中进行持久的任务管理
- 包含 `noVNC`、`RDP` 和 `SSH` 的 Windows 沙箱配置
- 用于支持调试器工作流的 `x64dbg` 桥接
### 责任声明
GhostTrace 专为合法的逆向工程、恶意软件分析、DFIR、研究和防御工程而构建。
与任何严肃的二进制分析 stack 一样,它也可能被滥用。该决定取决于操作员,而非本项目。如果您在没有适当授权的情况下将 GhostTrace 指向目标、软件或环境,您将承担由此产生的法律、道德和运营后果。请明智使用,合法使用。保持克制,做出更好的判断。
我们始终欢迎提出改进想法,并将认真对待深思熟虑的批评意见,以不断完善本项目。
### 边界
本仓库仅用于授权研究、防御性教育和受控实验室工作。
它不提供用于操作的恶意软件、持久化、规避、凭据窃取或未经授权的访问工具。
### 架构
```
flowchart LR
classDef svc fill:#0b1220,stroke:#46f3ff,stroke-width:1.5px,color:#e9fbff,rx:8,ry:8
classDef infra fill:#050810,stroke:#6b7280,stroke-dasharray:3 3,color:#9ca3af,rx:12,ry:12
classDef sandbox fill:#041208,stroke:#22c55e,stroke-width:1.5px,color:#bbf7d0,rx:10,ry:10
classDef operator fill:#111827,stroke:#f97316,stroke-width:1.5px,color:#fed7aa,rx:10,ry:10
subgraph Operator["🧑💻 Operator Workspace"]
direction TB
Browser["Web UI\n(Flask + Tailwind)"]:::operator
end
subgraph Backend["Core Services"]
direction TB
WebUI["webui\nGunicorn app.py"]:::svc
Ghidraaas["Ghidraaas\nREST backend"]:::svc
Ollama["Ollama\nLLM runtime"]:::svc
Rabbit["RabbitMQ\nqueues"]:::svc
SandboxRunner["sandbox_runner\nHTTP + worker"]:::svc
end
subgraph Storage["Analysis State"]
direction TB
VolJobs["JobStore (SQLite)\n/ ghosttrace.db"]:::infra
VolUploads["Uploads volume\n/ uploads/"]:::infra
VolEvidence["Dynamic evidence\n/ dynamic_evidence/"]:::infra
VolTriage["Triage reports\n/ triage_reports/"]:::infra
end
subgraph WindowsLab["Windows Sandbox Lab"]
direction TB
WinVM["dockurr/windows\n+ OEM tooling"]:::sandbox
X64dbg["x64dbg + MCP\nbridge plugin"]:::sandbox
end
Browser -->|"HTTP /"| WebUI
WebUI -->|"HTTP /ghidra/api"| Ghidraaas
WebUI -->|"OpenAI compat\nAPI_BASE"| Ollama
WebUI <-.->|"JSON jobs + evidence"| VolJobs
WebUI <-.->|"Upload stream"| VolUploads
WebUI <-.->|"JSON artifacts"| VolEvidence
WebUI <-.->|"JSON triage"| VolTriage
WebUI -->|"HTTP /sandbox_*"| SandboxRunner
SandboxRunner -->|"AMQP\ntriage & sandbox queues"| Rabbit
SandboxRunner <-.->|"shared samples\n/ bridge state"| VolUploads
WinVM <-.->|"Shared folder\n/Shared"| VolUploads
WinVM <-.->|"Bridge JSON\nvia runner"| SandboxRunner
WinVM -->|"Debugger\nstate + findings"| X64dbg
```
核心组件:
- `webui/`
Flask 应用、任务管理、AI 操作员、聊天、分拣视图和调试器视图。
- `Ghidraaas/`
为本 stack 改编的 Cisco Talos Ghidra-as-a-Service 后端。
- `sandbox/`
Windows 沙箱配置、主机端 SSH 辅助工具、桥接工具和 OEM 自动化。
- `docs/`
GitHub Pages 的公开登录页面。
发布准备说明位于 [`docs/publication-checklist.md`](./docs/publication-checklist.md)。
### 快速开始
1. 构建 `Ghidraaas`:
```
cd Ghidraaas
docker build -t ghidraaas .
```
2. 从仓库根目录启动 stack:
```
docker compose up --build
```
容器化的 `webui` 在 Compose stack 中的 `gunicorn` 之后运行。Flask 开发服务器仍然仅用于本地直接执行。
Web UI 可通过 HTTP Basic auth 提供可选的操作员保护:
```
OPERATOR_USERNAME=operator
OPERATOR_PASSWORD=change-me
```
如果两个变量都已设置,GhostTrace 会要求面向用户的 Web UI 和 API 路由提供操作员凭据,而内部的沙箱到 Web 的回调仍使用共享的内部 token 路径。
GhostTrace 现在还支持 Compose stack 中由 RabbitMQ 支持的后台 worker。默认设置会启动 `rabbitmq`、一个专用于分拣的 `webui_worker`,以及一个用于沙箱运行队列处理的 `sandbox_runner_worker`。
`webui` 和 `sandbox_runner` 现在都暴露了一个对可观测性友好的 `/health` endpoint,其中包含请求 ID 和就绪状态详情。响应还包括 `X-Request-ID` header,以便可以在各服务间关联日志。
Web UI 还暴露了 `/metrics/summary` 用于获取 JSON 操作员快照,以及 `/metrics` 用于获取 Prometheus 风格的文本指标。
主要的 `sandbox_runner` 容器现在也在 `gunicorn` 之后运行。桥接轮询线程仅在面向 HTTP 的 runner 进程中启用,而不在单独的队列 worker 中启用,因此 stack 避免了重复的桥接消费者。
前端资源不再在运行时依赖 CDN 来获取 Tailwind、jQuery、Marked 或 Google Fonts。生成和内置的前端资源位于 `webui/static/css/` 和 `webui/static/vendor/` 下。
如果您更改了实用程序类或刷新了前端 vendor 资源,请使用以下命令重新生成它们:
```
npm install
npm run build:frontend
```
对于主 shell 的新浏览器冒烟测试,请安装一次 Playwright Chromium,然后运行:
```
npx playwright install chromium
npm run test:e2e:smoke
npm run test:e2e:release
```
冒烟测试脚本默认在 `http://127.0.0.1:5000/` 查找应用,并将屏幕截图写入 `output/playwright/` 下。
它还会将 JSON 报告写入 `output/playwright/ghosttrace-smoke-report.json`,其中包含步骤耗时、打开的 job id 和可见的 UI 快照,如果检测到可操作的浏览器 `pageerror` 事件或控制台错误,测试将判定失败。
发布检查会读取该报告,如果总运行时间、关键环节耗时或最终可见健康状态的漂移超出了可配置的阈值,则检查失败。
基准的 GitHub Actions CI 工作流现在涵盖了前端资产生成、Python 编译检查,以及 Web UI 加上沙箱 runner 的测试套件。浏览器冒烟测试目前暂时单独保留,因为它仍然需要一个带有至少一个预置分析任务的运行中的 stack。
3. 打开应用:
```
http://localhost:5000
```
### 环境要求
- Docker Desktop
- 足够的磁盘空间用于存放 Ollama 模型
该 stack 现在会启动自己的 `ollama` 容器并自动拉取:
```
Godmoded/llama3-lexi-uncensored
```
`ollama` 被配置为请求所有可用的 Docker GPU 用于推理。
### 共享 AI 配置
GhostTrace 将其共享的 AI 运行时设置保存在 [`ai-config.json`](./ai-config.json) 中。
当前默认值:
- 提供商:`ollama`
- API base:`http://ollama:11434/v1`
- 模型:`Godmoded/llama3-lexi-uncensored`
- 本地状态数据库:`/app/data/ghosttrace.db`
该仓库已经过调整,因此在两侧使用的是相同的 Ollama 模型:
- `webui` 使用 `MODEL_NAME=Godmoded/llama3-lexi-uncensored`
- `windows_sandbox` 使用 `OLLAMA_MODEL=Godmoded/llama3-lexi-uncensored`
- `docker-compose` 在内部将 Ollama 连接为 `http://ollama:11434`
### 分析工作流
```
sequenceDiagram
autonumber
actor Op as Operator
participant UI as Web UI
participant G as Ghidraaas
participant LLM as Ollama
participant Q as RabbitMQ
participant SR as Sandbox Runner
participant WS as Windows Sandbox
participant DB as JobStore / Evidence
Op->>UI: Upload sample.exe
UI->>G: POST /analyze_sample (binary stream)
G-->>UI: 200 "Analysis completed"
UI->>DB: Save job metadata + uploads
UI-->>Op: job_id + status: DONE
Op->>UI: Ask triage questions (Chat)
UI->>LLM: ChatCompletion + tools (functions/imports/strings)
UI->>G: get_functions_list / get_imports_list / get_strings_list
G-->>UI: Cached triage artifacts
LLM-->>UI: Triage summary + next steps
UI->>DB: Cache triage report JSON/MD
Op->>UI: Switch to Validate (runtime check)
UI->>SR: POST /run { job_id, filename }
SR->>Q: Enqueue sandbox run
SR->>WS: (out-of-band) execute sample in VM
WS-->>SR: Logs / traces / debugger data
SR->>DB: POST /evidence/
(artifacts)
UI->>LLM: ChatCompletion + get_dynamic_evidence
LLM-->>UI: Correlated static + dynamic findings
UI-->>Op: Explain confirmed / falsified behavior
```
### 路线图和基准测试台
- 路线图:[`ROADMAP.md`](./ROADMAP.md)
- 基准测试台:[`samples/benchmarks.md`](./samples/benchmarks.md)
### 自动分拣报告
Endpoint:
```
GET /triage/
```
工件:
- JSON:`/app/data/triage_reports/.json`
- Markdown:`/app/data/triage_reports/.md`
行为:
- 上传后自动将分拣排入队列
- 添加新的动态证据时重新生成分拣
- 在所需工件仍在准备中时,endpoint 返回 `202`
要启用由 LLM 撰写的分拣文本:
```
TRIAGE_USE_LLM=1
```
### 动态证据通道
GhostTrace 不会作为默认工作流的一部分自主执行未知的二进制文件。相反,它支持从受控环境中引入结构化的证据。
Endpoints:
```
POST /evidence/
GET /evidence/
```
这使得平台能够关联 imports、strings、反编译结果、沙箱工件和调试器发现。
### 重构(targets、假设、草稿)
Web UI 暴露了一个由 LLM 辅助的重构通道,用于从分拣和证据中生成交付目标、假设、工件草稿和验证计划:
- `GET /reconstruction/` — 列出 bundle
- `POST /reconstruction//targets`, `.../targets/generate`
- `POST /reconstruction//hypotheses`, `.../hypotheses/generate`
- `POST /reconstruction//drafts`, `.../drafts/generate`
- `POST /reconstruction//validation_plans`, `.../validation_plans/generate`
- `GET /reconstruction//drafts//export`
### Windows 沙箱实验室
可选的 `windows-sandbox` 配置提供:
- 在 `http://127.0.0.1:8006` 上的 `noVNC`
- 在 `127.0.0.1:3389` 上的 `RDP`
- 在 `127.0.0.1:2222` 上的 `SSH`
- 通过 `Shared` 桌面文件夹共享样本
#### 本地实验室凭据
可选的 Windows 实验室现在使用:
- 默认用户名:`Docker`
- 在沙箱启动时自动生成的密码
- 保存在 `sandbox/credentials/windows-sandbox.env` 中的持久化凭据
密码由 `windows_sandbox` 容器本身在运行时生成,然后显示在 Web UI 中。这使得整个过程是自动化的,而无需将静态密钥硬编码到仓库中或需要手动预处理。
如果您想手动预先生成或轮换该文件:
```
python scripts/ensure_windows_sandbox_credentials.py
```
一旦可选的沙箱至少启动过一次,Web UI 就会加载并显示生成的实验室凭据。
沙箱端口默认绑定到 `127.0.0.1`:
- 在 `http://127.0.0.1:8006` 上的 `noVNC`
- 在 `127.0.0.1:3389` 上的 `RDP`
- 在 `127.0.0.1:2222` 上的 `SSH`
如果您有意将沙箱暴露在 localhost 之外,请将其视为特权实验室主机,并首先设置唯一的凭据。
### 主机端辅助工具
Windows 辅助工具:
- [`Invoke-WindowsSandboxSSH.ps1`](./sandbox/host-tools/Invoke-WindowsSandboxSSH.ps1)
- [`Invoke-WindowsSandboxPS.ps1`](./sandbox/host-tools/Invoke-WindowsSandboxPS.ps1)
- [`Copy-ToWindowsSandbox.ps1`](./sandbox/host-tools/Copy-ToWindowsSandbox.ps1)
- [`Copy-FromWindowsSandbox.ps1`](./sandbox/host-tools/Copy-FromWindowsSandbox.ps1)
通用辅助工具:
- [`Invoke-SandboxSSH.ps1`](./sandbox/host-tools/Invoke-SandboxSSH.ps1)
- [`Copy-ToSandbox.ps1`](./sandbox/host-tools/Copy-ToSandbox.ps1)
- [`Copy-FromSandbox.ps1`](./sandbox/host-tools/Copy-FromSandbox.ps1)
### 公开网站
登录页面位于 [`docs/index.html`](./docs/index.html) 并发布在 GitHub Pages 上:
- [https://0xcyberberserker.github.io/ghosttrace-lab/](https://0xcyberberserker.github.io/ghosttrace-lab/)
- English:[https://0xcyberberserker.github.io/ghosttrace-lab/en/](https://0xcyberberserker.github.io/ghosttrace-lab/en/)
- Español:[https://0xcyberberserker.github.io/ghosttrace-lab/es/](https://0xcyberberserker.github.io/ghosttrace-lab/es/)
## 西班牙语
GhostTrace 整合了一个具有赛博朋克美学的操作员界面、用于静态分析的 `Ghidraaas`、用于本地推理的 `Ollama`、缓存的分拣工件,以及一个带有 SSH 和调试桥接的可复现 Windows 实验室。
### 核心亮点
- 由 `Ghidraaas` 支持的以静态分析为中心的工作流
- 与 `Ollama` 和 `Godmoded/llama3-lexi-uncensored` 的本地集成
- 缓存 imports、strings、functions 和反编译结果
- 每次分析的自动分拣报告
- 在界面中进行持久的任务管理
- 包含 `noVNC`、`RDP` 和 `SSH` 的 Windows 沙箱配置
- 用于辅助调试工作流的 `x64dbg` 桥接
### 责任声明
GhostTrace 专为合法的逆向工程、恶意软件分析、DFIR、研究和防御性工作而设计。
与任何严肃的二进制分析 stack 一样,它也可能被恶意使用。该决定属于操作员,而非项目。如果您在没有适当授权的情况下将 GhostTrace 指向目标、软件或环境,您将承担所有法律、道德和运营后果。请理智使用。请在法律允许的范围内使用。保持谨慎。做出更好的判断。
我们欢迎任何改进想法,并将认真考虑所有有理有据的批评意见,以不断打磨本项目。
### 架构
```
flowchart LR
classDef svc fill:#0b1220,stroke:#46f3ff,stroke-width:1.5px,color:#e9fbff,rx:8,ry:8
classDef infra fill:#050810,stroke:#6b7280,stroke-dasharray:3 3,color:#9ca3af,rx:12,ry:12
classDef sandbox fill:#041208,stroke:#22c55e,stroke-width:1.5px,color:#bbf7d0,rx:10,ry:10
classDef operator fill:#111827,stroke:#f97316,stroke-width:1.5px,color:#fed7aa,rx:10,ry:10
subgraph Operator["🧑💻 Espacio de operador"]
direction TB
Browser["Web UI\n(Flask + Tailwind)"]:::operator
end
subgraph Backend["Servicios principales"]
direction TB
WebUI["webui\nGunicorn app.py"]:::svc
Ghidraaas["Ghidraaas\nREST backend"]:::svc
Ollama["Ollama\nRuntime LLM"]:::svc
Rabbit["RabbitMQ\ncolas"]:::svc
SandboxRunner["sandbox_runner\nHTTP + worker"]:::svc
end
subgraph Storage["Estado del análisis"]
direction TB
VolJobs["JobStore (SQLite)\n/ ghosttrace.db"]:::infra
VolUploads["Volumen uploads\n/ uploads/"]:::infra
VolEvidence["Evidencia dinámica\n/ dynamic_evidence/"]:::infra
VolTriage["Informes triage\n/ triage_reports/"]:::infra
end
subgraph WindowsLab["Laboratorio Windows"]
direction TB
WinVM["dockurr/windows\n+ herramientas OEM"]:::sandbox
X64dbg["x64dbg + MCP\nplugin bridge"]:::sandbox
end
Browser -->|"HTTP /"| WebUI
WebUI -->|"HTTP /ghidra/api"| Ghidraaas
WebUI -->|"API compat OpenAI\nAPI_BASE"| Ollama
WebUI <-.->|"JSON jobs + evidencia"| VolJobs
WebUI <-.->|"Stream upload"| VolUploads
WebUI <-.->|"Artefactos JSON"| VolEvidence
WebUI <-.->|"JSON triage"| VolTriage
WebUI -->|"HTTP /sandbox_*"| SandboxRunner
SandboxRunner -->|"AMQP\ncolas triage y sandbox"| Rabbit
SandboxRunner <-.->|"muestras compartidas\n/ estado bridge"| VolUploads
WinVM <-.->|"Carpeta compartida\n/Shared"| VolUploads
WinVM <-.->|"JSON bridge\nvía runner"| SandboxRunner
WinVM -->|"Estado depurador\n+ hallazgos"| X64dbg
```
核心组件:
- `webui/`
Flask 应用、任务管理、AI 操作员、聊天、分拣视图和调试器视图。
- `Ghidraaas/`
为本 stack 改编的 Cisco Talos Ghidra-as-a-Service 后端。
- `sandbox/`
Windows 沙箱置备、来自主机的 SSH 实用程序、桥接工具和 OEM 自动化。
- `docs/`
GitHub Pages 的公开登录页面。
### 启动指南
1. 构建 `Ghidraaas`:
```
cd Ghidraaas
docker build -t ghidraaas .
```
2. 从仓库根目录启动 stack:
```
docker compose up --build
```
在 Compose stack 中,`webui` 在 `gunicorn` 后启动。Flask 开发服务器仅保留用于本地直接执行。
Web UI 支持通过 HTTP Basic auth 进行可选的操作员保护:
```
OPERATOR_USERNAME=operator
OPERATOR_PASSWORD=cambia-esto
```
如果同时定义了这两个,GhostTrace 将在 Web UI 和 API 的人工交互路由中要求提供操作员凭据,而沙箱的内部回调将继续使用共享的内部 token。
GhostTrace 现在还支持在 Compose stack 中使用带有 RabbitMQ 的后台 worker。默认配置会启动 `rabbitmq`、一个专用于分拣的 `webui_worker` 消费者,以及一个用于处理沙箱队列的 `sandbox_runner_worker`。
此外,`webui` 和 `sandbox_runner` 现在暴露了一个面向可观测性的 `/health` endpoint,其中包含就绪状态详情和请求 ID。响应中包含 `X-Request-ID`,以便能够在服务之间关联日志。
Web UI 还将 `/metrics/summary` 作为面向操作员的 JSON 摘要进行暴露,并将 `/metrics` 以 Prometheus 风格的文本格式暴露。
主要的 `sandbox_runner` 容器现在也在 `gunicorn` 后运行。桥接线程仅在 runner 的 HTTP 流程中激活,而不在独立的队列 worker 中激活,这样我们就避免了重复的桥接消费者。
前端资源不再在运行时依赖 CDN 来获取 Tailwind、jQuery、Marked 或 Google Fonts。生成和版本化的资源位于 `webui/static/css/` 和 `webui/static/vendor/` 中。
如果您更改了实用程序类或想要刷新前端的 vendor,请使用以下命令重新生成它们:
```
npm install
npm run build:frontend
```
对于针对主 shell 的浏览器冒烟测试,请安装一次 Playwright 的 Chromium 并运行:
```
npx playwright install chromium
npm run test:e2e:smoke
npm run test:e2e:release
```
冒烟脚本默认在 `http://127.0.0.1:5000/` 查找应用,并将截图保存在 `output/playwright/` 中。
它还会在 `output/playwright/ghosttrace-smoke-report.json` 中写入一份 JSON 报告,其中包含各步骤耗时、打开的 job_id 和 UI 的可见快照;如果检测到可操作的 `pageerror` 事件或控制台错误,则会判定失败。
发布检查会读取该报告,如果总耗时、关键耗时或最终可见健康状态偏离了可配置的阈值,则检查失败。
GitHub Actions 的 CI 工作流涵盖了前端资产生成、Python 编译检查以及 Web UI 和沙箱 runner 的测试套件。浏览器冒烟测试目前暂时单独保留,因为它仍然需要一个带有至少一个预加载分析任务的运行中的 stack。
3. 打开应用:
```
http://localhost:5000
```
### 环境要求
- Docker Desktop
- 足够的磁盘空间用于存放 Ollama 模型
该 stack 现在会启动自己的 `ollama` 容器并自动拉取:
```
Godmoded/llama3-lexi-uncensored
```
`ollama` 被配置为请求 Docker 中所有可用的 GPU 用于推理。
### 共享 AI 配置
GhostTrace 将其共享配置保存在 [`ai-config.json`](./ai-config.json) 中。
当前值:
- 提供商:`ollama`
- API base:`http://ollama:11434/v1`
- 模型:`Godmoded/llama3-lexi-uncensored`
- 本地状态库:`/app/data/ghosttrace.db`
该仓库已经过调整,以便在两侧使用相同的模型:
- `webui` 使用 `MODEL_NAME=Godmoded/llama3-lexi-uncensored`
- `windows_sandbox` 使用 `OLLAMA_MODEL=Godmoded/llama3-lexi-uncensored`
- `docker-compose` 在内部将 Ollama 连接为 `http://ollama:11434`
### 分析工作流
```
sequenceDiagram
autonumber
actor Op as Operador
participant UI as Web UI
participant G as Ghidraaas
participant LLM as Ollama
participant Q as RabbitMQ
participant SR as Sandbox Runner
participant WS as Windows Sandbox
participant DB as JobStore / Evidencia
Op->>UI: Sube sample.exe
UI->>G: POST /analyze_sample (stream binario)
G-->>UI: 200 "Análisis completado"
UI->>DB: Guarda metadata del job + uploads
UI-->>Op: job_id + status: DONE
Op->>UI: Preguntas de triage (Chat)
UI->>LLM: ChatCompletion + tools (functions/imports/strings)
UI->>G: get_functions_list / get_imports_list / get_strings_list
G-->>UI: Artefactos de triage cacheados
LLM-->>UI: Resumen triage + siguientes pasos
UI->>DB: Cachea informe triage JSON/MD
Op->>UI: Cambia a Validate (comprobación en runtime)
UI->>SR: POST /run { job_id, filename }
SR->>Q: Encola ejecución sandbox
SR->>WS: (fuera de banda) ejecuta muestra en VM
WS-->>SR: Logs / trazas / datos depurador
SR->>DB: POST /evidence/ (artefactos)
UI->>LLM: ChatCompletion + get_dynamic_evidence
LLM-->>UI: Hallazgos estáticos + dinámicos correlacionados
UI-->>Op: Explica comportamiento confirmado / falsificado
```
### 路线图和基准测试台
- 路线图:[`ROADMAP.md`](./ROADMAP.md)
- 基准测试台:[`samples/benchmarks.md`](./samples/benchmarks.md)
### 自动分拣报告
Endpoint:
```
GET /triage/
```
工件:
- JSON:`/app/data/triage_reports/.json`
- Markdown:`/app/data/triage_reports/.md`
行为:
- 上传后分拣会自动加入队列
- 添加动态证据时会重新生成
- 在缺少所需工件时,endpoint 返回 `202`
要启用由 LLM 生成的分拣文本:
```
TRIAGE_USE_LLM=1
```
### 动态证据通道
GhostTrace 不会在默认工作流中自动执行未知的二进制文件。相反,它支持从受控环境中引入结构化的证据。
Endpoints:
```
POST /evidence/
GET /evidence/
```
这允许关联 imports、strings、反编译、沙箱工件和调试器发现。
### 重构(targets、假设、草稿)
Web UI 暴露了一个由 LLM 辅助的重构流程,用于从分拣和证据中生成交付目标、假设、草稿和验证计划:
- `GET /reconstruction/` — 列出 bundle
- `POST /reconstruction//targets`, `.../targets/generate`
- `POST /reconstruction//hypotheses`, `.../hypotheses/generate`
- `POST /reconstruction//drafts`, `.../drafts/generate`
- `POST /reconstruction//validation_plans`, `.../validation_plans/generate`
- `GET /reconstruction//drafts//export`
### Windows 实验室
可选的 `windows-sandbox` 配置提供:
- 在 `http://127.0.0.1:8006` 上的 `noVNC`
- 在 `127.0.0.1:3389` 上的 `RDP`
- 在 `127.0.0.1:2222` 上的 `SSH`
- 通过 `Shared` 文件夹共享样本
#### 本地实验室凭据
可选的 Windows 实验室现在使用:
- 默认用户名:`Docker`
- 沙箱启动时自动生成的密码
- 保存在 `sandbox/credentials/windows-sandbox.env` 中的持久化凭据
密码由 `windows_sandbox` 本身在运行时生成,然后由 Web UI 显示。这样流程就是自动的,无需在仓库中留下固定的密钥,也无需依赖前置的手动步骤。
如果您想手动生成或轮换该文件:
```
python scripts/ensure_windows_sandbox_credentials.py
```
一旦可选的沙箱至少启动过一次,Web UI 就会加载并显示这些凭据。
沙箱端口默认绑定到 `127.0.0.1`:
- 在 `http://127.0.0.1:8006` 上的 `noVNC`
- 在 `127.0.0.1:3389` 上的 `RDP`
- 在 `127.0.0.1:2222` 上的 `SSH`
如果您决定将沙箱暴露在 localhost 之外,请将其视为特权实验室主机,并首先定义唯一的凭据。
### 主机端实用程序
Windows 实用程序:
- [`Invoke-WindowsSandboxSSH.ps1`](./sandbox/host-tools/Invoke-WindowsSandboxSSH.ps1)
- [`Invoke-WindowsSandboxPS.ps1`](./sandbox/host-tools/Invoke-WindowsSandboxPS.ps1)
- [`Copy-ToWindowsSandbox.ps1`](./sandbox/host-tools/Copy-ToWindowsSandbox.ps1)
- [`Copy-FromWindowsSandbox.ps1`](./sandbox/host-tools/Copy-FromWindowsSandbox.ps1)
通用实用程序:
- [`Invoke-SandboxSSH.ps1`](./sandbox/host-tools/Invoke-SandboxSSH.ps1)
- [`Copy-ToSandbox.ps1`](./sandbox/host-tools/Copy-ToSandbox.ps1)
- [`Copy-FromSandbox.ps1`](./sandbox/host-tools/Copy-FromSandbox.ps1)
### 公开网站
登录页位于 [`docs/index.html`](./docs/index.html) 并发布在 GitHub Pages 上:
- [https://0xcyberberserker.github.io/ghosttrace-lab/](https://0xcyberberserker.github.io/ghosttrace-lab/)
- 英文:[https://0xcyberberserker.github.io/ghosttrace-lab/en/](https://0xcyberberserker.github.io/ghosttrace-lab/en/)
- 西班牙文:[https://0xcyberberserker.github.io/ghosttrace-lab/es/](https://0xcyberberserker.github.io/ghosttrace-lab/es/)