| name | extracting-browser-history-artifacts |
| description | 从 Chrome、Firefox 和 Edge 中提取并分析浏览器历史记录、Cookie、缓存、下载记录和书签,以获取用户网络活动的取证证据。 |
| domain | cybersecurity |
| subdomain | digital-forensics |
| tags | ["forensics","browser-forensics","chrome","firefox","edge","web-history","artifact-extraction"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
提取浏览器历史制品
适用场景
- 在取证检查中调查用户网络活动时
- 在内部威胁调查中建立数据外泄模式时
- 追踪用户访问恶意或违反策略的网站时
- 将浏览器活动与其他取证制品和时间线相关联时
- 在钓鱼攻击调查中识别点击了哪些链接时
前置条件
- 取证镜像或用户配置文件目录的访问权限
- SQLite3 用于查询浏览器数据库
- Hindsight、BrowsingHistoryView 或 DB Browser for SQLite
- 了解各操作系统中浏览器制品文件的位置
- 安装 sqlite3 模块的 Python 3,用于自动化提取
- 了解 Chrome、Firefox 和 Edge 的存储格式
工作流程
步骤 1:定位浏览器制品文件
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence
CHROME_WIN="/mnt/evidence/Users/suspect/AppData/Local/Google/Chrome/User Data/Default"
FIREFOX_WIN="/mnt/evidence/Users/suspect/AppData/Roaming/Mozilla/Firefox/Profiles/*.default-release"
EDGE_WIN="/mnt/evidence/Users/suspect/AppData/Local/Microsoft/Edge/User Data/Default"
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
find /cases/case-2024-001/browser/ -type f -exec sha256sum {} \; \
> /cases/case-2024-001/browser/artifact_hashes.txt
步骤 2:提取 Chrome 浏览历史和下载记录
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
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
步骤 3:提取 Firefox 浏览历史
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
步骤 4:提取 Cookie 和存储的凭据
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(last_access_utc/1000000-11644473600, 'unixepoch') AS last_access,
is_secure, is_httponly
FROM cookies ORDER BY last_access_utc DESC;
SQL
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,
times_used
FROM logins ORDER BY date_last_used DESC;
SQL
步骤 5:使用 Hindsight 进行全面的 Chrome 分析
pip install pyhindsight
hindsight -i "/cases/case-2024-001/browser/chrome/" \
-o /cases/case-2024-001/analysis/hindsight_report \
-f xlsx
关键概念
| 概念 | 描述 |
|---|
| Chrome 时间戳 | 自 1601 年 1 月 1 日起的微秒数(WebKit/Chrome 纪元) |
| Firefox 时间戳 | 自 1970 年 1 月 1 日起的微秒数(Unix 纪元,微秒级) |
| 跳转类型(Transition types) | URL 的访问方式:直接输入(1)、链接(0)、重定向(5/6) |
| DPAPI 加密 | Windows 数据保护 API,用于加密存储的密码和 Cookie |
| places.sqlite | Firefox 合并的历史记录和书签数据库 |
| SQLite WAL | 预写日志,可能包含最近删除的浏览器记录 |
工具与系统
| 工具 | 用途 |
|---|
| Hindsight | 全面的 Chrome/Chromium 取证分析工具 |
| sqlite3 | SQLite 数据库命令行查询工具 |
| DB Browser for SQLite | 用于浏览 SQLite 数据库的 GUI 工具 |
| BrowsingHistoryView | NirSoft 跨浏览器历史记录查看工具 |
| KAPE | 包含浏览器数据的自动化制品收集工具 |
| Autopsy | 带有浏览器制品摄取模块的完整取证平台 |
常见场景
场景 1:钓鱼调查
提取报告的钓鱼事件时间段附近的浏览器历史,识别被访问的钓鱼 URL,检查恶意附件的下载记录,检查可能已被盗取的会话令牌 Cookie。
场景 2:通过云服务进行数据外泄
搜索云存储 URL(Dropbox、Google Drive、OneDrive、Mega),检查下载和上传记录,查看调查期间活跃的云服务会话 Cookie。
场景 3:违规行为调查
提取调查期间的完整浏览历史,对访问的网站进行分类,记录时间戳和访问时长,与网络代理日志相关联进行验证。
场景 4:恶意软件投递向量分析
追踪导致偷渡式下载的重定向链,检查下载数据库中的恶意软件负载,检查漏洞利用工具包落地页的缓存。