gaestu/SurfSifter

GitHub: gaestu/SurfSifter

从 E01/EWF 磁盘镜像中提取并分析浏览器痕迹、缓存媒体和操作系统电子证据的跨平台图形化取证工作站。

Stars: 4 | Forks: 0

SurfSifter Logo

# SurfSifter 一个用于分析浏览器痕迹、缓存媒体以及来自磁盘镜像(E01/EWF 格式)的操作系统电子证据的跨平台取证工作站。基于 PySide6 构建,提供原生 GUI 界面,用于在不修改原始证据的情况下进行提取、分析、标记和报告生成。 ![SurfSifter 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ed34f74cad071215.png) ## 状态 **v0.3.7-beta** — 核心功能已完善,正在积极测试中。[下载预构建版本](https://github.com/gaestu/surfsifter/releases) 或从源码构建。 主要在 Fedora 和 Ubuntu 上进行了测试 —— 在 Windows 上运行尚不稳定 :-) 建议在 Windows 上使用 WSL 运行本应用。 ## 功能简介 SurfSifter 是一款取证分流工作站,旨在帮助调查人员: - **提取** 浏览器痕迹(历史记录、Cookie、缓存等)和图像文件,从 E01 磁盘镜像中提取且不修改证据 - **分析** 通过专用查看器检视恢复的痕迹:按时间顺序浏览 URL,通过感知哈希聚类相似图像,查看浏览器会话,检查系统指标 - **关联** 使用时间线融合(13+ 种痕迹来源)、针对参考列表的 URL 模式匹配,以及基于哈希的文件情报来关联调查结果 - **报告** 通过带有取证截图和标记结果的可定制 PDF 报告输出结果 - **安全浏览** — 所有提取均离线进行;提供可选的沙盒浏览器预览(firejail)用于受控的 URL 检查 专为在任何平台(Linux/macOS/Windows 宿主机)上分析 Windows 证据而设计。 ## 可选运行时依赖 - 导出主报告 PDF 需要安装 **WeasyPrint**。 - **Chromium 内核浏览器 131+**(`Chromium`、`Google Chrome`、`Microsoft Edge` 或 `Brave`)在可用时将作为默认的附录 PDF 渲染器,尤其推荐在包含大量图片的附录中使用。 - 如果缺少 Chromium `131+`、不受支持,或在运行时 Chromium 附录渲染失败,在已安装 WeasyPrint 的情况下,附录 PDF 导出将回退到较慢的 WeasyPrint 方案;否则,附录 PDF 导出功能将不可用。 ## 快速入门 ### 方式 1:Linux 安装脚本(推荐) 无需克隆仓库。直接以单行命令运行安装程序: ``` wget -qO- https://raw.githubusercontent.com/gaestu/surfsifter/main/scripts/install.sh | bash ``` ### 升级 标准更新命令: ``` wget -qO- https://raw.githubusercontent.com/gaestu/surfsifter/main/scripts/install.sh | \ bash -s -- --from-release --release-version latest --non-interactive ``` 预期输出摘要片段: ``` Install summary: source: release () previous version: installed version: ``` 实用参数标志: - `--verify-only` 仅检查工具而不安装 - `--dry-run` 仅打印命令而不改变系统 - `--prefix /path` 安装到自定义前缀路径下 - `--bin-source /path/to/binary` 从本地构建产物而不是 release 版本进行安装 ### 方式 2:预构建发布版(手动) 从 [Releases 页面](https://github.com/gaestu/surfsifter/releases) 下载: - **Linux:** 解压并运行 `./surfsifter` - **Windows:** 运行 `surfsifter.exe` ### 方式 3:从源码安装 ``` # Clone repository git clone https://github.com/gaestu/surfsifter.git cd surfsifter # 使用 Poetry 安装(推荐) poetry install poetry run surfsifter # 或使用 pip pip install -e . python -m app.main ``` ### 入门指南 1. **创建案件** → 文件菜单 → “Open/Create Case” → 选择空目录 2. **添加证据** → 证据 (Evidence) 标签页 → 添加 E01 镜像(自动检测分段文件) 3. **运行提取器** → 提取 (Extraction) 标签页 → 选择所需的提取器 → 开始 4. **查看结果** → 浏览各个标签页(URL、图像、浏览器清单、时间线) 5. **标记与报告** → 标记发现的线索 → 生成 PDF 报告 ## 功能特性 ### 证据处理 - **只读 E01/EWF 访问** 通过 libewf + pytsk3 实现(不修改证据) - 支持多分区及自动片段检测 - 集成 SleuthKit 进行文件系统枚举 - 并行提取引擎(在多核系统上提速 3-4 倍) ### 浏览器痕迹提取 **Chromium 系列** (Chrome, Edge, Brave, Opera, Vivaldi — 包括 beta/dev/canary/nightly): - 历史记录与访问 (transition types, from_visit, visit_duration) - Cookie (DPAPI 加密检测, SameSite 属性) - 书签 (文件夹层次结构, 同步元数据) - 下载 (状态/风险分析, URL 链, 来源页) - 缓存 (simple cache v2, blockfile legacy, Service Worker caches) - 会话 (SNSS 标签页状态, 窗口重建, 导航历史) - 自动填充 (表单数据, 配置文件, 已保存凭证, 信用卡, 搜索引擎) - 扩展程序 (元数据, 权限风险评分, 主机权限) - 存储 (Local Storage, Session Storage, IndexedDB 包含 blob 提取) - 传输安全 (HSTS 预加载, 域名固定) - 网站图标与常用站点 (图标提取, 页面映射) - 媒体历史 (播放会话, 来源关联) - 同步数据 (账号元数据, 已同步设备) - 权限 (来自 Preferences 的特定站点权限) **Firefox / Tor Browser**: - 历史记录与访问 (places.sqlite, frecency, typed input, visit types) - Cookie (secure/httpOnly 标志, originAttributes, 容器隔离, 隐私浏览) - 书签 (文件夹层次结构, jsonlz4 备份及 mozLz4 解压) - 下载 (现代 moz_annos + 旧版 moz_downloads) - 缓存 (cache2 支持 gzip/brotli/zstd 解压) - 会话 (sessionstore.jsonlz4, 窗口/标签页状态, 导航历史) - 自动填充 (表单历史, 已保存凭证, 已删除的表单条目) - 扩展程序 (extensions.json 风险分类, AMO 元数据) - 存储 (Local Storage, Session Storage, IndexedDB) - 权限 (站点权限, 内容偏好设置) - 网站图标 (图标提取, 页面映射, 旧版 schema 支持) - 同步数据 (来自 signedInUser.json 的账号元数据, 已同步设备) - 传输安全 (HSTS 及明文域名) - Tor 状态 (Tor Browser 特有的链路/守卫节点数据) **Internet Explorer / Legacy Edge**: - WebCache (通过 libesedb-python 解析 ESE 数据库:历史记录、下载、缓存元数据) - Cookie (WebCache 元数据 + 基于文件的 INetCookies 及低完整性级别跟踪) - 收藏夹 (.url 文件及文件夹层次结构) - 输入的 URL (注册表 NTUSER.DAT 提取) - DOM 存储 (WebCache DOMStore 容器 + Edge Legacy DOMStore 文件) - 标签页恢复 (IE Recovery .dat 文件, Edge 会话数据) - Legacy Edge container.dat (用于历史/Cookie/存储的 UWP ESE 数据库) - 阅读列表 (Edge 阅读列表作为书签导入) **Safari** (实验性): - History.db 解析 - 二进制 Cookie (需要 `binarycookies`) - 书签,下载 ### 媒体与文件雕刻 - **文件系统镜像:** 从证据中提取带有路径/时间戳上下文、签名验证、MACB 时间戳的图像 - **文件雕刻工具:** foremost 和 scalpel 用于未分配空间的雕刻(速度较慢,单线程) - **批量提取:** bulk_extractor 用于提取 URL、电子邮件、域名、IP、电话号码、比特币/以太坊地址 - **SwiftBeaver:** 多格式图像雕刻 (JPEG/PNG/GIF/WebP/BMP/TIFF/HEIC/ICO) 和原生支持 E01 的 URL 提取 - **浏览器雕刻:** 深度扫描以雕刻浏览器 SQLite 数据库(历史记录/Cookie)并提取原始 URL - **图像分析:** 感知哈希 聚类,重复检测,相似性搜索 - **格式支持:** JPEG, PNG, GIF, WebP, BMP, ICO, TIFF, SVG, AVIF, HEIC/HEIF - **元数据:** EXIF 提取,缩略图生成,稀疏文件检测 ### 系统痕迹 - **Windows 注册表** (通过 regipy:系统信息、网络配置文件、启动项、用户活动) - **Jump Lists** (AutomaticDestinations, CustomDestinations, Recent Items 包含浏览器 URL 提取) - **平台指纹识别** (操作系统版本,计算机名称,系统标识符) - **文件列表关联** (SleuthKit fls 生成,FTK/EnCase CSV 导入,哈希/路径/扩展名匹配) ### 分析工具 - **时间线融合**(13+ 种痕迹来源) - **URL 模式匹配**(针对参考列表的通配符/正则表达式匹配) - **哈希匹配**(已知文件哈希) - **文件列表情报**(路径/扩展名匹配) - **标签管理**(跨痕迹的统一标记) - **下载管理器**(带有哈希相似性搜索的分页查看器) ### 报告 - **PDF 生成**(通过 Jinja2 + WeasyPrint 的可定制模板) - **取证截图**(带注释的案件证据捕获) - **CSV 导出**(按痕迹类型或过滤后的结果导出) - **审计日志**(只追加的流程记录) 更多细节请查阅 wiki。 ## 项目治理 - 安全策略:[SECURITY.md](SECURITY.md) - 贡献指南:[CONTRIBUTING.md](CONTRIBUTING.md) - 行为准则:[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) ## 系统要求 ### 必需依赖 **Linux (Debian/Ubuntu):** ``` sudo apt-get install libewf-dev libtsk-dev build-essential python3-dev \ libpango-1.0-0 libcairo2 libgdk-pixbuf2.0-0 shared-mime-info ``` 对于 Ubuntu/Fedora 上的打包二进制文件安装,建议使用: ``` wget -qO- https://raw.githubusercontent.com/gaestu/surfsifter/main/scripts/install.sh | bash ``` 安装程序会自动处理发行版软件包的映射和工具验证。 **Python 包**(由 Poetry 自动安装): - Python ≥3.10, <3.14 - PySide6, pytsk3, libewf-python, Pillow, pillow-heif, imagehash, WeasyPrint, regipy ### 内置 Python 依赖 所有痕迹解析库都会被自动安装: - brotli, zstandard (Chromium 缓存解压) - olefile, LnkParse3 (Windows Jump Lists) - binarycookies (Safari 支持) - ccl-chromium-reader (浏览器存储数据库) - libesedb-python (IE/Edge ESE 解析) - pillow-heif (用于图像缩略图预览的 HEIC/HEIF 解码) 如果缺少 HEIC/HEIF 预览功能,请确认 `pillow-heif` 能否在您的运行时 环境中加载(尤其是带有原生编解码器库的打包构建版本)。 ### 外部工具(可选) 会在系统 `PATH` 中自动发现: - **foremost** — 文件雕刻(图像、文档) - **scalpel** — 高级文件雕刻 - **bulk_extractor** — URL/电子邮件/加密货币提取 - **swiftbeaver** — 图像雕刻和 URL 提取(原生支持 E01) - **exiftool** — EXIF 元数据提取 - **firejail** — 浏览器沙盒(安全特性) 工具状态可在(应用程序 GUI 中的)**工具标签页** 中查看。 ## 开发 ### 测试 ``` # Fast test suite(不含 GUI/E01 测试) poetry run pytest -k "not gui and not e01" -q # GUI 测试(需要 display server 或 Xvfb) poetry run pytest -m gui_offscreen # Full test suite poetry run pytest ``` **注意:** 由于 PyEWF/PyTSK3 的线程问题,E01 测试可能会发生段错误。在 CI 流水线中请使用 `-k "not e01"`。 ### 构建可执行文件 发布版本由 GitHub Actions 工作流(`.github/workflows/release.yml`)处理。 有关 PyInstaller 规范请参见 `packaging/` 目录。 ## 架构 ``` src/ ├── app/ # PySide6 GUI (feature-sliced tabs) ├── core/ # Domain logic (database, evidence access, tools) ├── extractors/ # Modular extraction units (browser, system, media, carvers) └── reports/ # PDF report generation ``` **核心原则:** - 提取器绝不导入 GUI 代码 - 通过 helpers 访问数据库(UI 中无原始 SQL) - 通过 `EvidenceFS` 抽象层访问证据 - 取证可靠性:只追加的审计日志,确定性的输出 详情请参阅 [agents.md](agents.md)。 ## 文档 - **用户指南:** `docs/` (计划中) - **开发者指南:** [agents.md](agents.md) - **兼容性政策:** `docs/compatibility.md` - **提取器文档:** `docs/extractors/` - **参考列表:** `reference_lists/` (URL/哈希/文件匹配模式) - **合规信息:** `docs/compliance/` (许可证,第三方声明) ## 许可证 Apache-2.0 — 详情请见 [LICENSE](LICENSE)。 第三方依赖列表详见 `docs/compliance/LICENSES.md`。
标签:E01镜像, EWF镜像, PDF报告, PySide6, Python, Triage工作站, 司法鉴定, 图片聚类, 域渗透, 库, 应急响应, 感知哈希, 数字取证, 无后门, 无损提取, 沙箱分析, 浏览器取证, 电子数据取证, 痕迹分析, 磁盘取证, 离线分析, 缓存分析, 网络安全, 自动化脚本, 身份验证滥用, 逆向工具, 隐私保护