Frascott05/SilenTrace

GitHub: Frascott05/SilenTrace

这是一个基于 Flask 和 Volatility 3 的内存取证 Web 应用,旨在通过可视化界面简化并加速对内存转储文件的分析流程。

Stars: 14 | Forks: 0

# SilentTrace ![SilentTrace Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/794feaa6bb204001.jpg) 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, 内存取证, 内存转储分析, 安全防御评估, 容器化, 开源安全工具, 恶意软件分析, 数字取证, 无后门, 网络安全工具, 自动化脚本, 请求拦截, 逆向工具, 逆向工程平台