谷歌浏览器网络取证案例研究
立即解锁
发布时间: 2025-08-22 01:50:03 阅读量: 1 订阅数: 1 


数据库取证实战指南:从理论到应用
### 谷歌浏览器网络取证案例研究
#### 1. 下载记录分析
谷歌浏览器将下载记录与历史记录存储在同一个SQLite文件中,但位于不同的表。在“history”SQLite文件中,有几个表用于跟踪下载,包括“downloads”、“downloads_reroute_info”、“downloads_slices”和“downloads_url_chains”。
- **“downloads”表**:该表目前有26个字段,我们重点关注其中13个,如下表所示:
| 字段 | 描述 |
| --- | --- |
| id | 自动递增的唯一ID |
| current_path | 当前磁盘位置 |
| target_path | 最终磁盘位置 |
| start_time | 下载开始时间(Google WebKit UTC时间戳) |
| end_time | 下载完成时间(Google WebKit UTC时间戳) |
| last_access_time | 最后访问时间(Google WebKit UTC时间戳) |
| last_modified | 最后修改头信息(文本UTC时间戳) |
| referrer | HTTP引用 |
| site_url | 发起站点的URL |
| tab_url | 发起者的标签URL |
| tab_referrer_url | 发起者的标签引用URL |
| state | 1 = 完成,4 = 中断 |
| interrupt_reason | 下载中断原因(当前值为0 - 3、5 - 7、10 - 15、20 - 24、30 - 39、40 - 41、50) |
在SQLite语句中解析“interrupt_reason”时,如果遇到非预期值,应进行标记,以便研究新值并更新SQLite语句。
- **“downloads_url_chains”表**:该表目前有3个字段,如下表所示:
| 字段 | 描述 |
| --- | --- |
| id | 指向“downloads”表中id的外键 |
| chain_index | URL在链中的索引,0为初始目标,最大值为重定向后的目标 |
| url | URL |
可以使用喜欢的SQLite浏览器手动浏览该表。需要注意的是,“id”是指向“downloads”表中“id”的外键。例如,id为1和2的记录各只有一个URL;id为4的记录有两个链,意味着从第一个URL重定向到第二个URL进行下载;id为5的记录有5个条目,在查看“downloads”表中id为5的记录时,也需要考虑该表中的这5条记录,最后一条记录包含实际下载的URL。
虽然可以编写SQLite语句返回“downloads_url_chains”表中的每条记录以及“downloads”表中的相关数据,但输出太宽,无法在一页中显示。
此外,在Windows计算机上从互联网下载文件并保存到NTFS文件系统时,除了文件本身,还会创建一个备用数据流(ADS),虽然本文不详细介绍ADS,但了解它是有必要的。
- **不同的下载方式**:从浏览器下载文件有几种不同的方式,包括点击链接下载、右键选择“另存为”以及选择运行文件。为了更好地理解下载痕迹的含义,应该测试每种场景下的下载痕迹。
#### 2. 搜索词分析
证明用户意图是取证人员面临的挑战之一。用户可能声称并非有意访问特定URL。“history”SQLite文件中有一个名为“keyword_search_terms”的表。
- **“keyword_search_terms”表**:该表目前有4个字段,如下表所示:
| 字段 | 描述 |
| --- | --- |
| keyword_id | 指向“web data”SQLite文件中“keywords”表“id”字段的外键 |
| url_id | 指向“history”SQLite文件中“urls.id”的外键 |
| term | 用户输入的搜索词 |
| normalized_term | 转换为全小写的搜索词 |
要理解这些信息,不仅需要处理同一SQLite文件中指向其他表的外键,还需要处理指向另一个SQLite文件中表的外键,手动解析会很繁琐。
- **“keywords”表**:“web data”SQLite文件中的“keywords”表目前有24个字段,我们仅使用其中5个。以下是一个基本查询示例:
```sql
SELECT id, short_name, keyword, url,
date_created,
CASE date_created
WHEN 0 THEN NULL
ELSE datetime(date_created/1000000-11644473600,'unixepoch')
END AS "Decoded keywords.date_created (UTC)"
FROM keywords
```
该查询会输出相关结果。单独查询该表有一定价值,例如其中一条记录的创建日期可追溯到2015年2月。由于历史记录仅保留90天,且用户可能一段时间内未访问某些条目,该表中的并非所有条目都有历史记录,但该表会无限期保留信息,直到用户明确清除浏览器中的所有活动。
- **联合查询以显示意图**:跨不同SQLite文件的表进行查询并不比在单个SQLite文件中的表进行查询困难很多。如果使用DB Browser for SQLite,只需加载第一个SQLite文件(如“web data”),然后附加第二个文件(如“history”)并为其命名。以下是一个SQLite语句示例:
```sql
SELECT keywords.keyword AS "Search Engine",
history.urls.url,
history.keyword_search_terms.term,
history.urls.visit_count,
history.urls.last_visit_time,
datetime(history.urls.last_visit_time/1000000-11644473600, 'unixepoch') AS "Decoded history.last_vi
```
0
0
复制全文
相关推荐









