mcpField
E
extracting-browser-history-artifacts

extracting-browser-history-artifacts

github.com/mukul975安全35.2k97 次安装8 周前更新
代码仓库

关于 extracting-browser-history-artifacts

面向数字取证人员的浏览器历史提取技能,涵盖 Chrome、Firefox 和 Edge 等浏览器配置文件。它通过 SQLite 查询和取证工具支持活动重建、时间线关联及调查报告整理。

主要功能

  1. 01定位浏览器取证文件
  2. 02查询历史记录与下载
  3. 03提取 Cookie 和凭据
  4. 04使用 Hindsight 分析 Chrome
  5. 05关联浏览器取证时间线

适用场景

  1. 01调查钓鱼链接访问情况
  2. 02追踪云服务数据外传
  3. 03核查违规浏览活动
  4. 04分析恶意软件下载路径

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill extracting-browser-history-artifacts

安装后在 Claude Code 中输入/extracting-browser-history-artifacts确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
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.sqliteFirefox 合并的历史记录和书签数据库
SQLite WAL预写日志,可能包含最近删除的浏览器记录
会话恢复在重启后保留打开标签页的浏览器数据
IndexedDB基于浏览器的数据库,可能包含 Web 应用程序数据

工具与系统

工具用途
Hindsight全面的 Chrome/Chromium 取证分析工具
sqlite3命令行 SQLite 数据库查询工具
DB Browser for SQLite用于浏览 SQLite 数据库的 GUI 工具
BrowsingHistoryViewNirSoft 工具,用于查看所有浏览器的浏览历史
ChromeCacheViewNirSoft 工具,用于检查 Chrome 缓存内容
MZCacheViewNirSoft 工具,用于 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