Frascott05/SilenTrace
GitHub: Frascott05/SilenTrace
这是一个基于 Flask 和 Volatility 3 的内存取证 Web 应用,旨在通过可视化界面简化并加速对内存转储文件的分析流程。
Stars: 14 | Forks: 0
# SilentTrace

SilentTrace 是一个 **基于 Flask 的内存取证 Web 应用程序**,旨在使用 **Volatility 3** 分析内存转储。
它提供了一个简单的 UI 来管理调查并对上传的内存转储执行分析插件。
## ⚠️ 安全提醒
此项目**仅设计用于本地使用**:
- 个人机器
- 本地实验室环境
- 内部服务器 (LAN)
尽管实现了 JWT 身份验证,但此版本:
- **未针对生产环境进行加固**
- **不包含高级安全保护**
- 可能会暴露敏感的取证数据
👉 请仅在**受控环境**中使用
## 📁 项目结构
- `app/` → Flask 应用程序
- `dumps/` → 内存转储文件夹(挂载在容器内)
- `Volatility*Runner.py` → 运行 Volatility 的核心逻辑
- `docker-compose.yml` → 容器编排
- `Dockerfile` → 容器构建说明
- `.env` → 环境配置
## ⚙️ 配置 (.env)
### 🔐 重要设置
#### 1. SECRET_KEY (关键)
```
SECRET_KEY="your-secret-key"
```
- 用于 JWT 身份验证
- **必须在使用前进行更改**
- 切勿公开泄露
#### 2. JWT 过期时间
```
JWT_EXPIRATION_HOURS=24
```
控制令牌保持有效的时长。
#### 3. Volatility 路径
```
VOLATILITY_PATH="/opt/volatility3/vol.py"
```
- 容器内 Volatility 的路径
- 仅在您修改 Dockerfile 时更改它
- 我们强烈建议不要更改此设置,否则您还必须更改部分代码
#### 4. 转储路径 (非常重要)
```
PATH_TO_MOUT="dumps"
```
这定义了挂载在容器内的文件夹
👉 您可以:
- 使用本地文件夹 (`dumps`)
- 使用外部驱动器:
```
PATH_TO_MOUT="/media/external_drive/memory_dumps"
```
这允许:
- 持久化存储
- 处理大型转储文件
- 使用外部取证数据集
#### 5. 端口配置
```
PORT=5000
```
您可以随意更改它:
```
PORT=8080
```
#### 6. 调试模式
`DEBUG=True`
```在更稳定的环境中设置为 `False````
## 🧩 自定义 Volatility 插件
插件定义在:
```
app/services/enums/VolatilityPlugins.py
```
### 默认示例:
```
class VolatilityPlugins(Enum):
PSTREE = "pstree"
NETSCAN = "netscan"
HASHDUMP = "hashdump"
PSXVIEW = "psxview"
```
### ➕ 添加新插件
示例:添加关机注册表插件
```
class VolatilityPlugins(Enum):
PSTREE = "pstree" #DO NOT REMOVE
NETSCAN = "netscan"
HASHDUMP = "hashdump"
PSXVIEW = "psxview"
SHUTDOWN = "registry.shutdown"
```
注意:添加的插件越多,完全执行所有插件所需的时间就越长。我们强烈建议您只设置所需的插件并删除其他插件(pstree 除外)。
### 📌 注意事项
- 值必须与 Volatility 插件名称匹配
- 格式:
- 包含操作系统:`windows.pslist`
- 不包含操作系统:`pslist`
系统会自动构建如下命令:
python3 vol.py -f dump windows.pstree
## 💻 自定义默认操作系统
定义在:
```
app/services/enums/OperativeSystem.py
```
### 默认值:
```
class OperativeSystems(Enum):
WINDOWS = "windows"
MAC_OS = "mac"
LINUX = "linux"
DEFAULT = WINDOWS
```
### 🔧 更改默认操作系统
示例:将 Linux 设置为默认
```
DEFAULT = LINUX
```
## 🐳 Docker 使用
### 🔨 构建镜像
```
docker compose build
```
### 🚀 运行应用程序
```
docker compose run --service-ports silentrace
```
这将:
- 启动 Flask 服务器
- 暴露配置的端口
### 🌐 访问应用
打开您的浏览器:
http://localhost:5000
(或您配置的端口)
### 📂 管理转储文件 (已更新)
您可以:
#### 1. 在启动前放置转储文件
dumps/
├── memory1.vmem
├── memory2.raw
#### 2. 实时添加转储文件 (推荐 ✅)
由于该文件夹作为 Docker 卷挂载:
```
/${PATH_TO_MOUT}:/app/app/static/uploads
```
👉 您可以**在容器运行时添加转储文件**,只需:
- 将文件拖入配置的文件夹(例如 `dumps/`)
- 将文件复制到该目录
✔ 无需重启容器
✔ 文件在应用程序内立即可用
#### 3. 替代方案(手动复制)
```
docker cp file.vmem silentrace:/app/app/static/uploads/
```
## 管理面板文档
### 概述
此管理面板允许直接针对应用程序数据库执行原始 SQL 查询。它作为一个 Flask 蓝图实现:
- **路由:** `/api/admin`
- **访问:** 受 JWT 身份验证保护。
### 重要说明
默认情况下,访问控制代码已被**注释掉**,因此**每个注册用户都可以访问管理面板**。这是为了初次设置而有意为之。
### 初始设置步骤
1. **创建第一个用户**,通过标准注册流程。
2. **访问管理面板:**
```
http://:/api/admin
```
3. **将第一个用户提升为管理员:**
执行 SQL 查询以更新用户记录,例如:
```
UPDATE users SET is_admin = TRUE WHERE email = 'first_user@example.com';
```
4. **启用仅管理员访问:**
- 打开文件 `admin.py`。
- 取消注释以下几行以限制访问:
```
if not user or not user.is_admin:
flash("Access denied: only admins can access this panel", "danger")
return redirect(url_for("Login.html"))
```
5. **重启应用程序容器** 以应用更改。
## 🧪 开发模式
您可以修改:
\#CMD ["flask", "run"]
CMD ["/bin/bash"]
然后:
docker compose run --service-ports silentrace
并手动启动:
```
flask run
```
标签:DAST, DNS枚举, Docker, Flask, Forensics, JWT认证, Memory Forensics, NIDS, Python, SecList, Volatility 3, 内存取证, 内存转储分析, 安全防御评估, 容器化, 开源安全工具, 恶意软件分析, 数字取证, 无后门, 网络安全工具, 自动化脚本, 请求拦截, 逆向工具, 逆向工程平台