关于 extracting-browser-history-artifacts
面向数字取证人员的浏览器历史提取技能,涵盖 Chrome、Firefox 和 Edge 等浏览器配置文件。它通过 SQLite 查询和取证工具支持活动重建、时间线关联及调查报告整理。
主要功能
- 01定位浏览器取证文件
- 02查询历史记录与下载
- 03提取 Cookie 和凭据
- 04使用 Hindsight 分析 Chrome
- 05关联浏览器取证时间线
适用场景
- 01调查钓鱼链接访问情况
- 02追踪云服务数据外传
- 03核查违规浏览活动
- 04分析恶意软件下载路径
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill extracting-browser-history-artifacts安装后在 Claude Code 中输入/extracting-browser-history-artifacts确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
提取浏览器历史记录痕迹
适用场景
- 在取证检查中调查用户网络活动时
- 在内部威胁调查中确定数据泄露模式时
- 在追踪用户访问恶意或违反策略的网站时
- 将浏览器活动与其他取证痕迹和时间线关联时
- 在调查钓鱼攻击以确定点击了哪些链接时
前提条件
- 取证镜像或对用户配置文件目录的访问权限
- 用于查询浏览器数据库的 SQLite3
- Hindsight、BrowsingHistoryView 或 DB Browser for SQLite
- 了解各操作系统的浏览器痕迹文件位置
- 用于自动化提取的带 sqlite3 模块的 Python 3
- 了解 Chrome、Firefox 和 Edge 的存储格式
工作流
步骤 1:定位浏览器痕迹文件
# Mount forensic image
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence
# Chrome artifact locations (Windows)
CHROME_WIN="/mnt/evidence/Users/suspect/AppData/Local/Google/Chrome/User Data/Default"
# Key files: History, Cookies, Login Data, Web Data, Bookmarks, Preferences,
# Cache/, GPUCache/, Local Storage/, Session Storage/, IndexedDB/
# Firefox artifact locations (Windows)
FIREFOX_WIN="/mnt/evidence/Users/suspect/AppData/Roaming/Mozilla/Firefox/Profiles/*.default-release"
# Key files: places.sqlite, cookies.sqlite, formhistory.sqlite, logins.json,
# key4.db, sessionstore.jsonlz4, webappsstore.sqlite
# Edge (Chromium) artifact locations (Windows)
EDGE_WIN="/mnt/evidence/Users/suspect/AppData/Local/Microsoft/Edge/User Data/Default"
# Copy artifacts to working directory
mkdir -p /cases/case-2024-001/browser/{chrome,firefox,edge}
cp -r "$CHROME_WIN"/{History,Cookies,Downloads,"Login Data","Web Data",Bookmarks} \
/cases/case-2024-001/browser/chrome/ 2>/dev/null
cp -r $FIREFOX_WIN/{places.sqlite,cookies.sqlite,formhistory.sqlite,logins.json} \
/cases/case-2024-001/browser/firefox/ 2>/dev/null
cp -r "$EDGE_WIN"/{History,Cookies,Downloads} \
/cases/case-2024-001/browser/edge/ 2>/dev/null
# Hash artifacts for integrity
find /cases/case-2024-001/browser/ -type f -exec sha256sum {} \; \
> /cases/case-2024-001/browser/artifact_hashes.txt
步骤 2:提取 Chrome 浏览历史和下载记录
# Query Chrome History database
sqlite3 /cases/case-2024-001/browser/chrome/History << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/chrome_history.csv
SELECT
urls.url,
urls.title,
datetime(urls.last_visit_time/1000000-11644473600, 'unixepoch') AS last_visit,
urls.visit_count,
urls.typed_count,
visits.transition & 0xFF AS transition_type
FROM urls
LEFT JOIN visits ON urls.id = visits.url
ORDER BY urls.last_visit_time DESC;
SQL
# Extract Chrome downloads
sqlite3 /cases/case-2024-001/browser/chrome/History << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/chrome_downloads.csv
SELECT
current_path,
tab_url AS source_url,
total_bytes,
datetime(start_time/1000000-11644473600, 'unixepoch') AS start_time,
datetime(end_time/1000000-11644473600, 'unixepoch') AS end_time,
state,
danger_type,
mime_type
FROM downloads
ORDER BY start_time DESC;
SQL
# Extract Chrome search terms
sqlite3 /cases/case-2024-001/browser/chrome/History << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/chrome_searches.csv
SELECT
term,
urls.url,
datetime(urls.last_visit_time/1000000-11644473600, 'unixepoch') AS search_time
FROM keyword_search_terms
JOIN urls ON keyword_search_terms.url_id = urls.id
ORDER BY urls.last_visit_time DESC;
SQL
步骤 3:提取 Firefox 浏览历史
# Query Firefox places.sqlite for history
sqlite3 /cases/case-2024-001/browser/firefox/places.sqlite << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/firefox_history.csv
SELECT
moz_places.url,
moz_places.title,
datetime(moz_historyvisits.visit_date/1000000, 'unixepoch') AS visit_date,
moz_places.visit_count,
moz_historyvisits.visit_type
FROM moz_places
JOIN moz_historyvisits ON moz_places.id = moz_historyvisits.place_id
ORDER BY moz_historyvisits.visit_date DESC;
SQL
# Extract Firefox bookmarks
sqlite3 /cases/case-2024-001/browser/firefox/places.sqlite << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/firefox_bookmarks.csv
SELECT
moz_bookmarks.title,
moz_places.url,
datetime(moz_bookmarks.dateAdded/1000000, 'unixepoch') AS date_added,
datetime(moz_bookmarks.lastModified/1000000, 'unixepoch') AS last_modified
FROM moz_bookmarks
JOIN moz_places ON moz_bookmarks.fk = moz_places.id
WHERE moz_bookmarks.type = 1
ORDER BY moz_bookmarks.dateAdded DESC;
SQL
# Extract Firefox form history (search terms, form fills)
sqlite3 /cases/case-2024-001/browser/firefox/formhistory.sqlite << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/firefox_forms.csv
SELECT
fieldname,
value,
timesUsed,
datetime(firstUsed/1000000, 'unixepoch') AS first_used,
datetime(lastUsed/1000000, 'unixepoch') AS last_used
FROM moz_formhistory
ORDER BY lastUsed DESC;
SQL
步骤 4:提取 Cookie 和存储的凭据
# Extract Chrome cookies
sqlite3 /cases/case-2024-001/browser/chrome/Cookies << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/chrome_cookies.csv
SELECT
host_key,
name,
path,
datetime(creation_utc/1000000-11644473600, 'unixepoch') AS created,
datetime(expires_utc/1000000-11644473600, 'unixepoch') AS expires,
datetime(last_access_utc/1000000-11644473600, 'unixepoch') AS last_access,
is_secure,
is_httponly,
is_persistent
FROM cookies
ORDER BY last_access_utc DESC;
SQL
# Extract Firefox cookies
sqlite3 /cases/case-2024-001/browser/firefox/cookies.sqlite << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/firefox_cookies.csv
SELECT
host,
name,
path,
datetime(creationTime/1000000, 'unixepoch') AS created,
datetime(expiry, 'unixepoch') AS expires,
datetime(lastAccessed/1000000, 'unixepoch') AS last_access,
isSecure,
isHttpOnly
FROM moz_cookies
ORDER BY lastAccessed DESC;
SQL
# Note: Chrome Login Data is encrypted with DPAPI (Windows) or keychain (Mac)
# Extract stored login URLs (passwords are encrypted)
sqlite3 /cases/case-2024-001/browser/chrome/"Login Data" << 'SQL'
.headers on
.mode csv
.output /cases/case-2024-001/analysis/chrome_logins.csv
SELECT
origin_url,
action_url,
username_value,
datetime(date_created/1000000-11644473600, 'unixepoch') AS date_created,
datetime(date_last_used/1000000-11644473600, 'unixepoch') AS date_last_used,
times_used
FROM logins
ORDER BY date_last_used DESC;
SQL
步骤 5:使用 Hindsight 进行全面的 Chrome 分析
# Install Hindsight
pip install pyhindsight
# Run Hindsight against Chrome profile
hindsight -i "/cases/case-2024-001/browser/chrome/" \
-o /cases/case-2024-001/analysis/hindsight_report \
-f xlsx
# Hindsight automatically extracts:
# - Browsing history with timestamps
# - Downloads with source URLs
# - Cookies with decryption (where possible)
# - Cache records
# - Local Storage entries
# - Autofill data
# - Saved passwords (encrypted)
# - Preferences and extensions
# - Session/tab recovery data
# For JSONL output (easier to parse)
hindsight -i "/cases/case-2024-001/browser/chrome/" \
-o /cases/case-2024-001/analysis/hindsight_report \
-f jsonl
关键概念
| 概念 | 描述 |
|---|---|
| Chrome 时间戳 | 自 1601 年 1 月 1 日起的微秒数(WebKit/Chrome 纪元) |
| Firefox 时间戳 | 自 1970 年 1 月 1 日起的微秒数(Unix 纪元微秒) |
| 转换类型 | URL 的访问方式:输入(1)、链接(0)、书签(1)、重定向(5/6) |
| DPAPI 加密 | Windows 数据保护 API 加密存储的密码和 Cookie |
| places.sqlite | Firefox 合并的历史记录和书签数据库 |
| SQLite WAL | 预写日志,可能包含最近删除的浏览器记录 |
| 会话恢复 | 在重启后保留打开标签页的浏览器数据 |
| IndexedDB | 基于浏览器的数据库,可能包含 Web 应用程序数据 |
工具与系统
| 工具 | 用途 |
|---|---|
| Hindsight | 全面的 Chrome/Chromium 取证分析工具 |
| sqlite3 | 命令行 SQLite 数据库查询工具 |
| DB Browser for SQLite | 用于浏览 SQLite 数据库的 GUI 工具 |
| BrowsingHistoryView | NirSoft 工具,用于查看所有浏览器的浏览历史 |
| ChromeCacheView | NirSoft 工具,用于检查 Chrome 缓存内容 |
| MZCacheView | NirSoft 工具,用于 Firefox 缓存分析 |
| KAPE | 自动化痕迹收集,包括浏览器数据 |
| Autopsy | 完整的取证平台,带有浏览器痕迹导入模块 |
常见场景
场景 1:钓鱼调查 提取报告钓鱼时间段前后的浏览器历史,识别被访问的钓鱼 URL,检查下载中是否有恶意附件,检查 Cookie 中可能被窃取的会话令牌,与电子邮件标头分析关联。
场景 2:通过云服务的数据泄露 在历史记录中搜索云存储 URL(Dropbox、Google Drive、OneDrive、Mega),检查下载和上传,检查表单历史中输入的文件名,查看调查期间活跃云服务会话的 Cookie。
场景 3:策略违规调查 提取调查期间的完整浏览历史,对访问的网站分类,识别对禁止内容类别的访问,记录时间戳和访问时长,与网络代理日志关联以进行验证。
场景 4:恶意软件投递途径分析 追溯导致路过式下载的重定向链,检查下载数据库中的恶意软件有效载荷,检查缓存中的漏洞利用工具包着陆页,识别启动感染链的初始引用 URL。
输出格式
Browser Forensics Summary:
User Profile: suspect (Windows 10)
Browsers Found: Chrome 120, Firefox 121, Edge 120
Chrome Analysis:
History Entries: 12,456
Downloads: 234
Saved Passwords: 67 sites (encrypted)
Cookies: 3,456
Bookmarks: 89
Firefox Analysis:
History Entries: 5,678
Form Entries: 234
Bookmarks: 45
Cookies: 1,234
Suspicious Findings:
- Visited known phishing URL at 2024-01-15 14:32 UTC
- Downloaded "invoice_update.exe" from suspicious domain
- Cloud storage (mega.nz) accessed 15 times in 2-hour window
- Search queries: "how to encrypt files", "secure file transfer"
Reports:
Chrome History: /analysis/chrome_history.csv
Firefox History: /analysis/firefox_history.csv
Full Report: /analysis/hindsight_report.xlsx
评论
支持 Markdown