news 2026/9/10 21:39:15

Hindsight 浏览器取证 API 参考:用 Hindsight 解析 Chromium 数据库提取上网行为证据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hindsight 浏览器取证 API 参考:用 Hindsight 解析 Chromium 数据库提取上网行为证据

Hindsight 浏览器取证 API 参考:用 Hindsight 解析 Chromium 数据库提取上网行为证据

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

本文是一份围绕 Hindsight 浏览器取证工具的实战技术指南,基于本仓库中 analyzing-browser-forensics-with-hindsight 技能的 API 参考文档 展开。它系统讲解 Hindsight CLI 的调用语法、浏览器类型与输出工件、Chrome 三大 SQLite 数据库(History、Cookies、Web Data)的取证查询、Chrome 时间戳换算、各平台浏览器配置文件路径以及访问过渡类型(Transition Types)的语义。读者读完可以独立完成一次完整的浏览器取证分析:从定位配置文件、运行 Hindsight、解读输出时间线,到用仓库自带的 process.py 与 agent.py 脚本直接解析取证镜像中的 Chrome 数据库,并将浏览器行为与系统时间线关联。

Hindsight 是什么:面向 Chromium 的统一时间线提取器

Hindsight 是一款开源浏览器取证工具,专门解析 Google Chrome 及其他基于 Chromium 内核的浏览器(Microsoft Edge、Brave、Opera、Vivaldi)产生的工件。它并非只读取单个数据库,而是从多个浏览器数据库文件中抽取并相互关联数据,最终生成一份统一的上网活动时间线(unified timeline)。

根据技能元数据,Hindsight 可解析的工件范围包括:URL 访问历史、下载历史、缓存记录、书签、自动填充记录、保存的密码、浏览器偏好(Preferences)、浏览器扩展、HTTP Cookie、Local Storage(HTML5 存储)、登录数据(Login Data)以及会话/标签页信息。输出格式支持 XLSX、JSON、SQLite,供调查人员在事件响应、内部威胁调查与刑事案件中重建用户的完整网络活动。

从本仓库技能映射看,该技能对应 NIST CSF 的 RS.AN-03、DE.AE-02、RS.MA-01,以及 MITRE ATT&CK 的 T1217(浏览器信息发现)、T1539(窃取 Web 会话 Cookie)、T1555.003(来自 Web 浏览器的凭证)、T1185(浏览器会话劫持),可用于验证安全监控覆盖范围。

使用前提与运行环境

在运行 Hindsight 之前需要满足以下前提(来自 SKILL.md):

  • Python 3.8+,并已安装 Hindsight(pip install pyhindsight);
  • 能访问取证镜像中的浏览器配置文件目录(Profile Directory);
  • 浏览器配置文件数据未被操作系统级加密(否则需先解密或配合 DPAPI 相关技能);
  • 用于结果分析的工具:Timeline Explorer 或任意电子表格应用(打开 XLSX)。

浏览器配置文件位置

Chrome 及各 Chromium 浏览器在各平台上的默认配置文件路径如下:

浏览器Windows 配置文件路径
Chrome%LOCALAPPDATA%\Google\Chrome\User Data\Default\
Edge%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\
Brave%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\
Opera%APPDATA%\Opera Software\Opera Stable\
Vivaldi%LOCALAPPDATA%\Vivaldi\User Data\Default\
Chrome (macOS)~/Library/Application Support/Google/Chrome/Default/
Chrome (Linux)~/.config/google-chrome/Default/

其中 Windows 与 Linux 路径在仓库的 agent.py 中也有对应实现——find_browser_profiles()会依次探测 Windows 的 Chrome/Edge/Brave 路径与 Linux 的google-chromechromiummicrosoft-edge路径,并返回真实存在的配置目录,可作为自动化定位配置文件的参考实现。

Hindsight CLI 完整参考

命令语法

本 API 参考给出了 Hindsight 的命令行核心用法:

hindsight.py -i <profile_path> # 分析 Chrome 配置文件 hindsight.py -i <path> -o <output_dir> # 保存结果 hindsight.py -i <path> -f xlsx # 导出为 Excel hindsight.py -i <path> -f sqlite # 导出为 SQLite hindsight.py -i <path> -b <browser_type> # 指定浏览器类型

支持的浏览器类型(-b 参数)

标志浏览器
ChromeGoogle Chrome
EdgeMicrosoft Edge (Chromium)
BraveBrave Browser
OperaOpera (Chromium)

结合 SKILL.md 中的实战命令示例,完整用法还包括:

# 基本分析:指定取证镜像中的 Chrome 配置文件并输出结果目录 hindsight.exe -i "C:\Evidence\Users\suspect\AppData\Local\Google\Chrome\User Data\Default" -o C:\Output\chrome_analysis # 显式指定浏览器类型 hindsight.exe -i "/path/to/profile" -o /output/analysis -b Chrome # 输出 JSONL 格式 hindsight.exe -i "C:\Evidence\Chrome\Default" -o C:\Output\chrome --format jsonl # 启用缓存解析(更慢但更完整) hindsight.exe -i "C:\Evidence\Chrome\Default" -o C:\Output\chrome --cache

参数要点说明:

  • -i指向的是浏览器配置文件目录Default目录),而非单个数据库文件;Hindsight 会识别该目录下的HistoryCookiesWeb DataLogin DataBookmarksPreferences等工件文件;
  • -o指定报告输出目录;
  • -f/--format控制输出格式,常用xlsxsqlitejsonl
  • --cache启用缓存解析,会显著增加耗时,但在需要恢复被删或未写入历史记录的缓存内容时不可或缺。

输出工件(Output Artifacts)

Hindsight 的输出时间线中包含以下关键表:

描述
urls带访问计数的浏览历史
downloads带来源 URL 的文件下载记录
cookiesCookie 值、所属域名、过期时间
autofill表单自动填充条目
bookmarks已保存书签
preferences浏览器配置
local_storage站点本地存储数据
login_data已保存凭证的元数据
extensions已安装扩展及其权限

这些表与 SKILL.md 中的"关键工件文件"清单一一对应:

文件内容
HistoryURL 访问、下载、关键词搜索
Cookies含域名、过期时间、值的 HTTP Cookie
Web Data自动填充条目、已保存的信用卡
Login Data已保存的用户名/密码(加密)
BookmarksJSON 书签树
Preferences浏览器配置与扩展
Local Storage/按域区分的 HTML5 Local Storage
Session Storage/按域区分的会话存储
Network Action Predictor之前输入过的 URL
ShortcutsOmnibox 快捷方式与预测
Top Sites高频访问站点

Chrome SQLite 数据库取证查询

浏览器取证的核心是对 SQLite 数据库的直接查询。下面给出本 API 参考中的三类核心数据库查询,可用于验证 Hindsight 输出或手动重建证据。

History 数据库(访问历史与下载)

-- 浏览历史 SELECT u.url, u.title, v.visit_time, v.transition FROM visits v JOIN urls u ON v.url = u.id ORDER BY v.visit_time DESC; -- 下载记录 SELECT target_path, tab_url, total_bytes, start_time, danger_type, mime_type FROM downloads ORDER BY start_time DESC;

补充表结构说明(来自 SKILL.md):

  • urls表关键列:id, url, title, visit_count, typed_count, last_visit_time
  • visits表关键列:id, url, visit_time, from_visit, transition, segment_id
  • downloads表关键列:id, current_path, target_path, start_time, end_time, received_bytes, total_bytes, state, danger_type, interrupt_reason, url, referrer, tab_url, mime_type, original_mime_type

transition字段低 8 位(transition & 0xFF)即"访问过渡类型",详见下文 Transition Types 一节;danger_type大于 0 表示下载被浏览器标记为危险,是排查恶意下载的重要线索。

Cookies 数据库

SELECT host_key, name, value, creation_utc, expires_utc, is_secure, is_httponly FROM cookies ORDER BY creation_utc DESC;

Cookies 表扩展列:encrypted_value(加密后的值)、pathlast_access_utchas_expiresis_persistentprioritysamesite。需要强调的是,现代 Chrome 中 Cookie 的value列通常为空,实际值在encrypted_value中,需借助 Hindsight 或 DPAPI 解密能力才能还原会话令牌。

Web Data 数据库(自动填充)

SELECT name, value, count, date_created, date_last_used FROM autofill ORDER BY date_last_used DESC;

注意:Web Data 中自动填充条目的date_createddate_last_used字段在较新版本 Chrome 中可能以秒为单位存储(与 History/Cookies 的微秒 FILETIME 不同),仓库 agent.py 的parse_autofill()在转换时对这两个字段乘以1000000再走标准时间戳换算,正是对这一差异的处理,可直接参考。

Chrome 时间戳转换(Chrome/WebKit 时间格式)

时间格式

Chrome 数据库中的时间戳(visit_timecreation_utcexpires_utc等)采用Windows FILETIME 基准自 1601 年 1 月 1 日以来的微秒数(microseconds since January 1, 1601)。

Python 转换代码

import datetime def chrome_to_datetime(chrome_time): epoch = datetime.datetime(1601, 1, 1) return epoch + datetime.timedelta(microseconds=chrome_time)

SQL 转换写法

若直接用 SQLite 查询,可转换为 Unix 时间戳(秒):

-- Chrome/WebKit 时间戳转可读时间 datetime((visit_time/1000000)-11644473600, 'unixepoch')

其中11644473600是 1601-01-01 到 1970-01-01 之间的秒数差。仓库中 process.py 与 agent.py 的chrome_time_to_datetime()实现则额外处理了两种边界情况,值得在取证脚本中沿用:

def chrome_time_to_datetime(chrome_time): """Convert Chrome timestamp (microseconds since 1601-01-01) to datetime.""" if not chrome_time or chrome_time == 0: return None # 0 值时间戳视为无时间 try: epoch = datetime.datetime(1601, 1, 1) delta = datetime.timedelta(microseconds=chrome_time) return (epoch + delta).isoformat() + "Z" except (OverflowError, OSError): return None # 溢出或无效值安全返回

不同浏览器的时间戳格式对照

来自 standards.md:

浏览器时间戳格式
Chrome/WebKit自 1601-01-01 UTC 起的微秒数
Firefox/Mozilla自 Unix 纪元起的微秒数
Safari/Mac自 2001-01-01 UTC 起的秒数

跨浏览器取证时必须分别换算,混用会导致时间线错位数百年。

访问过渡类型(Transition Types)

visits表中的transition字段记录了本次访问的成因,是区分"用户主动访问"与"程序自动导航"的关键证据。通过visit_transition & 0xFF取低 8 位核心类型:

类型描述
0LINK点击链接进入
1TYPED在地址栏手动输入 URL
2AUTO_BOOKMARK通过书签进入
3AUTO_SUBFRAME子框架导航
5GENERATED生成的访问(例如搜索结果页)
7FORM_SUBMIT表单提交
8RELOAD页面刷新

取证解读示例:

  • TYPED (1)表示用户直接在地址栏输入,多为主动访问目标站点,而LINK (0)多为从某页面跳转;
  • AUTO_SUBFRAME (3)通常由页面内嵌资源加载产生,对判断"用户是否真的访问过某内容"意义有限;
  • FORM_SUBMIT (7)对应登录/搜索等表单提交动作,可与凭证窃取类攻击(T1555.003)关联。

仓库 agent.py 的parse_history()在查询中直接使用transition & 0xFF提取核心类型并输出到结果字典,可在自动化脚本中复刻。

用仓库脚本快速复现分析

除了 Hindsight 本身,本仓库提供了两个可独立运行的 Python 分析脚本,可以直接对取证镜像中的 Chrome 配置文件执行解析,用于快速复现和交叉验证。

process.py:最小化历史/下载提取

process.py 是精简版分析器,仅解析History数据库中的访问记录与下载记录,输出 JSON 报告:

python skills/analyzing-browser-forensics-with-hindsight/scripts/process.py <chrome_profile> <output>

其核心特点:

  • 以只读方式打开数据库(sqlite3.connect(f"file:{history_db}?mode=ro", uri=True)),避免污染证据;
  • 访问记录取最近 2000 条,下载记录取最近 500 条;
  • 输出browser_forensics.json,包含visitsdownloads数量统计与明细。

agent.py:覆盖历史/下载/Cookie/自动填充/扩展的完整分析

agent.py 是更完整的取证分析代理,覆盖五类工件解析:

python skills/analyzing-browser-forensics-with-hindsight/scripts/agent.py <profile_path> # 例:python agent.py ~/AppData/Local/Google/Chrome/User\ Data/Default

各解析函数及对应数据库:

函数解析内容数据源
parse_history()访问历史(URL、标题、时间、过渡类型、访问计数)History
parse_downloads()下载记录(目标路径、来源 URL、大小、起止时间、danger_type、MIME)History
parse_cookies()Cookie(域名、名称、路径、创建/过期时间、Secure/HttpOnly/SameSite)CookiesNetwork/Cookies
parse_autofill()自动填充条目(字段名、值、使用次数、创建/最后使用时间)Web Data
parse_extensions()已安装扩展(ID、名称、版本、权限清单)Extensions/*/manifest.json

两个值得注意的实现细节:

  1. Cookie 路径兼容:较新版本 Chrome 将 Cookies 数据库移入Network/子目录,parse_cookies()会先尝试根目录再回退到Network/Cookies
  2. 自动填充时间戳换算parse_autofill()date_created/date_last_used乘以1000000再换算(秒 → 微秒),与 History/Cookies 保持同一时间基准。

可疑活动自动标记

agent.py 的detect_suspicious_activity()给出了自动化 IOC 命中逻辑,可直接借鉴用于调查:

  • 可疑域名黑名单pastebin.comngrok.ioraw.githubusercontent.comtransfer.shfile.iotemp.shanonfiles.com——命中即输出suspicious_url发现;
  • 危险 MIME 类型application/x-msdownloadapplication/x-msdos-programapplication/x-executableapplication/vnd.ms-excel.sheet.macroEnabled——命中即输出suspicious_mime
  • 危险下载标记downloads.danger_type > 0时输出dangerous_download,与 Chrome 的安全浏览标记直接对应。

运行后终端会打印各工件数量与前若干条记录,以及可疑活动发现列表,适合在 SOC 场景下快速形成初步判断。

取证工作流与报告输出

标准分析流程

结合 workflows.md,一次完整的 Chrome 配置文件分析遵循如下步骤:

定位浏览器配置文件目录 | 对配置文件路径运行 Hindsight | 审阅生成的时间线(XLSX/JSON) | 分析 URL 历史中的可疑站点 | 检查下载中的恶意软件/被外泄数据 | 审阅 Cookie 中的会话劫持证据 | 检查自动填充与已保存凭证 | 将浏览器活动与系统时间线关联

其中最后一步"与系统时间线关联"最为关键:浏览器历史中的某个下载动作应能与系统日志中的文件创建时间、进程执行时间互相印证,形成完整证据链。

报告模板

仓库提供了可直接套用的 浏览器取证报告模板,包含:

  • 案件信息:案件编号、浏览器、配置文件路径;
  • 活动汇总:URL 访问数、下载数、已保存密码数、Cookie 数;
  • 值得关注的 URL 表:时间戳、URL、标题;
  • 下载表:时间戳、文件、来源 URL、大小。

典型输出解读

以下是一个典型分析输出片段(来自 SKILL.md 的示例输出),展示如何从时间线中识别可疑行为模式:

[+] Parsing History database... URL records: 12,456 Download records: 234 Search terms: 567 [+] Parsing Cookies database... Cookie records: 8,923 Encrypted cookies: 6,712 [+] Parsing Web Data (Autofill)... Autofill entries: 1,234 Credit card entries: 2 (encrypted) [+] Parsing Login Data... Saved credentials: 45 (encrypted)

时间线中值得警惕的组合模式:

  • 短时间内先后访问mega.nzpastebin.comtransfer.sh等文件分享/匿名站点,配合可疑下载(如update_client.exe)指向数据外泄(Exfiltration)行为;
  • 直接访问https://192.168.1.50:8443/admin之类的内网管理面板,结合TYPED过渡类型,可推断用户主动访问;
  • 会话 Cookie 出现在非预期域名(如SESSION_ID对应.corporate.com),需结合 T1539(窃取 Web 会话 Cookie)评估会话劫持风险。
--- Downloads (Suspicious) --- 2024-01-15 14:33:15.000 Q4_Financial_Report.xlsm https://phish-domain.com/docs/report 245 KB 2024-01-15 14:34:02.000 update_client.exe https://cdn.evil-updates.com/client.exe 1.2 MB

辅助工具与兼容性提示

根据 standards.md,浏览器取证生态中常与 Hindsight 搭配使用的工具包括:

  • Hindsight:主分析工具,产出统一时间线;
  • DB Browser for SQLite:直接检查 Chrome 各 SQLite 数据库结构(History、Cookies、Web Data、Login Data);
  • ChromeCacheView(NirSoft):缓存分析,配合 Hindsight 的--cache参数可交叉验证缓存中恢复的内容。

使用限制说明:

  • 本技能面向Chromium 系浏览器(Chrome、Edge、Brave、Opera、Vivaldi);Firefox 使用不同的时间戳基准(Unix 微秒)与数据库结构,需用其他工具处理;
  • 若浏览器配置文件受操作系统级加密保护(如 Windows 上使用 DPAPI 加密的登录数据与 Cookie),Hindsight 解析出的加密字段需配合 DPAPI 解密技能才能还原明文,这一点在 SKILL.md 的前置条件中已明确列出;
  • 读取取证镜像中的数据库时务必使用只读模式(mode=ro),仓库两个脚本均遵循这一证据保全要求。

小结

围绕 api-reference.md 这份核心参考,本文完整覆盖了 Hindsight CLI 语法与输出工件、Chrome 三大取证数据库的 SQL 查询、Chrome 微秒时间戳的双路转换(Python 与 SQL)、各平台配置文件路径、访问过渡类型语义,并引入仓库中的 process.py 与 agent.py 展示了从零实现浏览器取证解析的可行路径。无论是事件响应中重建攻击者行为、内部威胁调查中的违规取证,还是刑事案件中的上网行为还原,这套"CLI 工具 + SQLite 查询 + 时间戳换算 + 自动化标记"的组合都能形成可落地、可复现、可交叉验证的取证方法。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 21:39:06

鹤城区AI短视频:怀化主城区营销阵地

来源&#xff1a;唐sirAI&#xff08;www.tangsir.cc&#xff09; | 电话&#xff1a;18874530691━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━怀化鹤城区的企业和商家们&#xff0c;您是否还在为高昂的短视频制作费用而烦恼&#xff1f…

作者头像 李华
网站建设 2026/9/10 21:32:03

管式土壤墒情监测仪:从数据采集到灌溉决策的全流程落地指南

干了这么多年农业物联网&#xff0c;我见过太多“装完就吃灰”的墒情监测项目。设备花几万块往地里一插&#xff0c;手机APP上数据天天跳&#xff0c;但真正拿这些数据去做灌溉决策、生产指挥的人却少得可怜。多数情况是数据归数据、经验归经验&#xff0c;两套系统长期并行&am…

作者头像 李华