rahimgujjar/WhatsApp-WAL-XRay

GitHub: rahimgujjar/WhatsApp-WAL-XRay

一套确定性 SQLite WAL 解析取证框架,旨在审计 Windows 原生消息应用客户端通过预写日志泄露的隐私数据。

Stars: 2 | Forks: 0

# WhatsApp-WAL-XRay:确定性 WAL 解析框架 **独立客户端漏洞研究(2025 年 10 月 – 2025 年 12 月初)** ## 📑 执行摘要 WAL-XRay 是一套定制的内存映射与数据库取证套件,旨在审计原生 Windows (UWP/WinUI) 消息传递环境中的客户端数据泄露问题。 本研究成功逆向工程了该平台专有的本地存储机制,演示了如何通过直接从活动的 SQLite Write-Ahead Logs (`.db-wal`) 中提取“幽灵数据”来绕过服务端隐私控制。 🚨 **[在此阅读完整的安全影响分析](./Security_Impact_Analysis.md)** 🚨 *详细说明了调查结果的完整范围,包括恢复已删除的消息、无痕查看状态、提取阅后即焚媒体缩略图以及精确的反应/编辑时间线。* *⚠️ **负责任披露声明:** 此工具已被重构为命令行取证框架。为防止被武器化,已移除硬编码的目标和密钥。供应商此后已迁移至 WebView2 架构,间接弃用了本仓库中审计的原生框架。作者不承担任何责任,也不对任何不道德或未经授权使用此取证工具集的行为负责。* ## 🏗️ 系统架构与核心引擎 (`/core-engine`) 该框架没有依赖标准的 SQLite 库,而是通过 AI 辅助开发从头构建了一个低级、确定性的二进制解析器。 * **`wal_forensic_parser.py`**:主要的目标拦截引擎。它利用 Windows API 共享句柄直接从活动 RAM 中提取 `.db-wal` 文件。它能主动解密 AES-OFB 帧,在字节级别解析可变整数,并将实时遥测数据提取到结构化数据库中,且不会触发 OS 文件锁定竞态条件。 ### 使用说明 该引擎需要用户提供自己的目标数据库以及通过 DP-API 提取的 AES-OFB 密钥。 ``` python wal_forensic_parser.py --wal "C:\path\to\messages.db-wal" --key "<64-character-hex-key>" ``` ## 🔐 数据隐私与 PII 合规 (`/data-privacy-compliance`) 这项取证研究的一个关键组成部分是确保安全处理截获的个人身份信息 (PII) 以及对提取的数据库进行系统性的脱敏处理。 * **`replace_global_pii.py`**:一个部署确定性 HMAC-SHA256 逻辑的加密化名工具。它会自动识别并脱敏国际电话号码和非区域性标识符,以确保在分析过程中零 PII 暴露。 * **`log_cleaner.py`**:一个数据脱敏流水线,旨在对瞬态数据库事件进行去重并剥离元数据噪声。它为每个结构帧生成加密签名,以安全地丢弃冗余的遥测数据块。 ## 🔬 诊断工具 (`/diagnostic-tools`) 在构建核心引擎之前,数据库架构是通过定制的诊断脚本进行盲逆向工程的,这些脚本旨在探测、映射和分类未知的二进制结构。 * **`remove_events.py`**:模块化的遥测过滤引擎。它通过 CLI 运行,执行逻辑 AND/OR 求值和 RegEx 模式匹配,从工作数据集中系统地剥离后台网络噪声、系统标头片段和自动握手信息。 * **`wal_universal_mapper.py`**:重型发现扫描器。它盲目映射任何 SQLite WAL 文件,对所有列的数据类型进行迭代猜测,并递归解码未知的 Protobuf 结构(wire type 0、1、2、5)以生成原始 Schema 蓝图。 * **`wal_pattern_finder.py`**:启发式 regex 扫描器和威胁情报引擎。它将未知的结构化 payload 分类为标准的父子关系矩阵,以构建具有可操作性的数据映射。 * **`thumbnail_extract.py`**:取证二进制雕刻工具。它被设计用于摄取从 Protobuf 列中提取的原始十六进制字符串,并将阅后即焚媒体 payload(例如加密的缩略图)重建为标准图像文件(低质量:例如缩略图)。 * **`wal_check_header.py`**:加密状态审计器。它通过分析低级标头字节分配并确认 `0x0D` 解密叶表签名来验证数据库的活动解密状态。 * **`wal_debug_cols.py`**:端点路由遥测扫描器。它解析操作块以映射、验证和提取标准架构网络端点(JID、LID 和 Broadcast 频道)。 * **`wal_inspect_col_ranges.py`**:结构化 Schema 完整性审计器。它将提取的数据与基准定义进行交叉引用,以标记驻留在意外参数列中的异常、损坏或嵌套数据类型。 * **`wal_io_latency_tester.py`**:低级系统诊断框架。它监控预写日志的 I/O 延迟,以量化 OS 报告的虚拟缓存限制与真实物理字节流之间的差异。 ## 📂 工作证明与 Schema (`/schemas-and-logs`) 为了维持严格的道德边界,此仓库中不包含任何原始的 `.db` 或 `.wal` 文件。相反,我们提供了全面的架构文档和脱敏后的分析日志。 * **`WhatsApp-DBs_Architectural_Schema.md`**:专有应用程序数据库 Schema 的逆向工程主状态映射。 * **`Vulnerability_Mapping_Scenarios.md`**:架构威胁模型和行为案例研究。此文档将前端用户界面操作(例如,编辑、阅后即焚、回应)映射到其对应的低级 SQLite 行生成机制。 * **`WhatsApp_States_Types.md`**:参考索引,将从本地数据库列中提取的专有整数代码映射到其操作状态(例如,将 `1027` 映射为 Message Edit,或将 `1046` 映射为 Ephemeral Media)。 * **`WAL_Sanitization_Pipeline.md`**:通过 `remove_events.py` 引擎部署的严格顺序执行流水线。它记录了将原始日志过滤为纯净分析资产所需的分步 CLI 部署过程。 * **`WA-WAL_Telemetry_State_Ledger.md`**:启发式账本扫描器(`wal_pattern_finder.py`)生成的威胁情报输出,详细说明了结构化 payload 和子分类。 * **`Undeniable_Output_of_Working_WAL_Parser.md`**:脱敏后的概念验证输出,展示了核心引擎在启发式分类瞬态数据事件、提取 JSON 矩阵以及实时隔离 Media Key payload 方面的能力。 ## 🛡️ 供应商缓解措施说明 在 2026 年初,供应商通过完全弃用原生 UWP 框架并转向基于 Chromium 的 WebView2 包装器,解决了这些本地数据泄露问题。 虽然这种过渡通过将数据处理迁移到基于浏览器的存储 中,成功关闭了 `.db-wal` 拦截攻击向量,但它只是绕过了结构缺陷,而没有从根本上解决原生 SQLite 实现的问题。这种缓解策略导致应用程序变得更加臃肿且严重依赖在线环境,为了维护统一的代码库,牺牲了原始 OS 性能并削弱了离线功能。
标签:HTTP工具, SQLite解析, 客户端安全, 数字取证, 数据提取, 端点可见性, 自动化脚本, 逆向工具