浏览器痕迹与下载执行链分析

浏览器痕迹与下载执行链分析

0x02电子取证 里,浏览器相关检查更多停留在“去哪里看主页、搜索引擎、TypedURLs 和缓存设置”。但在真实应急场景中,浏览器痕迹的价值远不止于“用户访问过什么网站”,它常常是把钓鱼邮件、恶意下载、脚本投递、落地执行串起来的关键纽带。

尤其是在办公网、终端主机和管理员工作站上,浏览器往往是攻击者完成初始执行的第一跳。只要把浏览器历史、下载记录、缓存、文件落地时间和进程创建日志拼起来,就能还原出一条非常完整的下载执行链。


0x01 浏览器痕迹在应急中的定位

浏览器取证重点不是回答“用户上过哪些网站”,而是回答以下问题:

  1. 受害者是否访问了恶意站点或钓鱼页面?
  2. 是否触发了下载,下载了什么,保存到了哪里?
  3. 下载文件有没有被执行、解压或二次加载?
  4. 后续是否形成了持久化、外联或横向移动?

如果说邮件是“诱饵入口”,那么浏览器通常就是“执行中转站”。


0x02 应重点关注的浏览器证据

不同浏览器证据位置不同,但分析逻辑相似。核心证据通常包括:

  • 访问历史记录
  • 下载记录
  • 缓存文件
  • Cookie / Session
  • 自动填充与登录信息
  • 用户手工输入过的 URL

1. Windows 上的 IE / Edge 旧痕迹

在老环境或特定内网系统中,IE 相关痕迹仍然值得关注:

  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
  • Internet 临时文件

TypedURLs 的价值在于:它通常保存的是用户手工输入或主动访问过的网址,对排查钓鱼站、临时恶意站点很有帮助。但要注意:

  • 它不是完整访问历史
  • 它可能被覆盖
  • 只能作为局部线索,不能单独当完整证据

2. Chrome / Edge / Firefox 的现代取证价值更高

现代浏览器更值得关注以下内容:

  • History 数据库中的访问记录
  • Downloads 记录中的源 URL、保存路径、开始时间
  • Cookies 中的登录态与站点关联
  • 缓存目录中的脚本、重定向页面、恶意载荷片段

其中真正的黄金证据往往是:

  • 下载来源 URL
  • 下载落地路径
  • 下载开始 / 完成时间
  • 是否曾被用户打开

这些信息可以直接和主机上的文件时间线、进程日志做关联。


0x03 下载执行链的典型路径

从浏览器痕迹还原攻击时,最常见的是下面这条链:

  1. 用户点击邮件或 IM 中的链接
  2. 浏览器访问恶意站点或跳转页
  3. 页面触发下载或引导下载
  4. 文件落地到 Downloads、桌面或临时目录
  5. 用户双击执行,或浏览器联动脚本执行
  6. 木马释放、外联、持久化

1. 钓鱼文档型

常见表现:

  • 下载 doc, xls, zip, rar, iso, lnk
  • 紧接着出现 Office、wscript.exepowershell.execmd.exe
  • 后续发生网络连接与任务创建

关键分析点:

  • 下载文件名是否伪装为通知、发票、采购单、密码器插件
  • 文件来源域名是否为新注册域名、可疑 CDN、对象存储临时链接
  • 文件落地时间与进程执行时间是否紧邻

2. 脚本投递型

常见表现:

  • 浏览器访问恶意站点后,不一定直接下载 EXE
  • 可能下载 .js, .hta, .ps1, .vbs
  • 后续由 wscript, mshta, powershell, rundll32 触发执行

这种情况下,浏览器记录只说明“用户碰到了入口”,真正恶意动作往往发生在浏览器之后的系统进程里。

3. 浏览器缓存触发型

某些恶意站点不会明显展示“下载完成”,而是通过:

  • 浏览器自动下载
  • 内联脚本拉取二次载荷
  • HTML/JS 重定向
  • 利用浏览器插件或协议处理器

这时缓存文件和访问历史就非常关键,因为它们可能是唯一能证明“浏览器确实访问过恶意资源”的证据。


0x04 如何把浏览器痕迹串成时间线

浏览器取证不能孤立看,建议按下面顺序做关联:

1. 先找访问入口

优先锁定:

  • 钓鱼域名
  • 短链接
  • 下载站
  • 对象存储临时下载 URL
  • 内网被植入后的跳转页面

这一步的目标是确认“恶意访问是否发生”。

2. 再找下载动作

重点确认:

  • 下载时间
  • 保存路径
  • 原始 URL
  • 下载文件名
  • 浏览器是否标记为危险文件

这一步的目标是确认“恶意文件是否真正进入主机”。

3. 再找系统侧执行

将下载记录和以下证据关联:

  • Windows 4688 新进程创建
  • Prefetch
  • Amcache / Shimcache
  • Recent Files
  • Linux 桌面环境的最近打开记录
  • 文件修改 / 解压时间

如果浏览器下载时间和进程创建时间只差几十秒到几分钟,通常就能构成强关联。

4. 最后找后续危害

继续关联:

  • 出站连接
  • 服务、计划任务、启动项
  • 新增用户或公钥
  • 横向连接

这样才能从“下载过一个文件”上升到“这次下载引发了入侵事件”。


0x05 典型恶意特征

浏览器痕迹中,以下场景要重点提高敏感度:

1. 下载路径异常

例如文件被保存到:

  • %TEMP%
  • %AppData%
  • C:\Users\Public\
  • 桌面伪装文件夹
  • 用户目录隐藏路径

这通常意味着文件不是正常办公文档,而是后续会被脚本直接调用的载荷。

2. 文件类型和业务场景不符

例如:

  • 财务岗位下载 .iso.js.hta
  • 运维岗位下载与业务无关的“浏览器更新包”
  • 普通用户下载看似文档实则 rar 包中的 lnk

3. 下载后立即执行

若时间线表现为:

  1. 浏览器下载
  2. 用户目录生成文件
  3. cmd / powershell / Office / wscript 迅速启动

这基本可以判断为下载执行链。

4. 多级重定向

浏览器历史中常见:

  • 短链接 -> 临时跳转域 -> 文件托管域
  • 钓鱼页 -> 云盘下载页 -> 本地文件落地

如果只看最终域名,可能会漏掉真正的引流入口。因此浏览器缓存、历史和网络请求应结合看。


0x06 浏览器痕迹中的反取证信号

攻击者或受害者有时会主动清理浏览器痕迹。常见信号包括:

  • 历史记录明显断层
  • 缓存目录被批量清空
  • 下载记录缺失但文件仍然存在
  • TypedURLs 被清空或只剩少量正常站点
  • 使用 InetCpl.cpl,ClearMyTracksByProcess 清理 IE 痕迹

需要注意的是,清理痕迹不一定是攻击者做的,也可能是:

  • 受害者误操作
  • 浏览器自动清理策略
  • 安全软件优化功能

因此依旧要结合时间、身份和其他证据判断。


0x07 两类高价值实战场景

1. 钓鱼邮件落地分析

常见闭环:

  1. 邮件主题诱导点击
  2. 浏览器访问恶意站点
  3. 下载压缩包或脚本
  4. 解压后执行诱饵程序
  5. 后门上线

这里浏览器痕迹是连接“邮件”和“主机执行”的关键桥梁。

2. 管理员工作站被二次利用

常见闭环:

  1. 管理员访问可疑工具站或内网被投毒页面
  2. 下载远控、运维伪装工具或木马更新包
  3. 工具启动后窃取凭据
  4. 再进行横向移动

这类场景中,浏览器下载痕迹往往能解释“高权限账户为何突然参与攻击链”。


0x08 建议的交付方式

建议把浏览器取证结果整理成表:

时间浏览器行为URL/来源本地文件后续动作结论
09:12:04访问页面hxxp://a.example[.]com/invoice跳转下载页钓鱼入口
09:12:22下载文件hxxp://cdn.example[.]com/invoice.zipC:\Users\A\Downloads\invoice.zip30 秒后解压载荷落地
09:13:01打开文件本地双击invoice.lnkpowershell.exe 启动下载执行
09:13:20外联连到陌生 IP木马上线

这比单独罗列浏览器历史更适合报告、复盘和后续加固。


0x09 公开案例与现场命令

1. 案例一:ClickFix / ClearFake 诱导用户执行 PowerShell

Proofpoint 在 2024 年连续披露的 ClickFix / ClearFake 案例,非常适合作为浏览器下载执行链的标准样本:

  • 用户先访问被植入或伪造网页
  • 页面弹出错误提示或“修复指引”
  • 引导用户复制粘贴 PowerShell
  • PowerShell 再下载 ZIP、HTA 或下阶段载荷
  • 最终落地 DarkGate、NetSupport、信息窃取器等

这条链说明浏览器取证不能只看“访问过哪个网址”,还要继续看:

  • 网页访问后是否紧跟下载动作
  • 下载后是否出现 PowerShell / mshta / wscript
  • 浏览器历史和进程日志能否形成闭环

公开来源:

2. 案例二:OWA 凭据钓鱼后再下载恶意 Excel

Proofpoint 早期关于 OWA 钓鱼链的公开案例也很适合作为浏览器专题补充:

  • 用户先被导向假 OWA 登录页
  • 随后又被诱导下载 ViolationReport.xls
  • 宏进一步调用 PowerShell 下载后续载荷

这个案例非常适合说明浏览器取证里一个常见误区:

  • 浏览器有时不是最终入口,而是连接“凭据钓鱼”和“样本执行”的中间层

公开来源:

3. Chrome / Edge 下载记录现场查询

在 Windows 和 Linux 现场上,真正高价值的浏览器证据通常在 SQLite 数据库里。

Chrome / Edge History 数据库

# Linux / macOS
sqlite3 ~/.config/google-chrome/Default/History \
  "select datetime(last_visit_time/1000000-11644473600,'unixepoch','localtime'), url, title from urls order by last_visit_time desc limit 50;"

sqlite3 ~/.config/google-chrome/Default/History \
  "select datetime(start_time/1000000-11644473600,'unixepoch','localtime'), tab_url, target_path from downloads order by start_time desc limit 50;"
# Windows 先复制再查,避免锁文件
Copy-Item "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\History" C:\Temp\ChromeHistory.db -Force
Copy-Item "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\History" C:\Temp\EdgeHistory.db -Force

如果现场已有 sqlite3

sqlite3 C:\Temp\ChromeHistory.db "select datetime(start_time/1000000-11644473600,'unixepoch','localtime'), tab_url, target_path from downloads order by start_time desc limit 50;"
sqlite3 C:\Temp\ChromeHistory.db "select datetime(last_visit_time/1000000-11644473600,'unixepoch','localtime'), url, title from urls order by last_visit_time desc limit 50;"

4. TypedURLs、Recent 与下载目录辅助排查

reg query "HKCU\Software\Microsoft\Internet Explorer\TypedURLs"

Get-ChildItem "$env:USERPROFILE\Downloads" -Force -ErrorAction SilentlyContinue |
  Sort-Object LastWriteTime -Descending |
  Select-Object -First 50 FullName, LastWriteTime, Length

Get-ChildItem "$env:APPDATA\Microsoft\Windows\Recent" -Force -ErrorAction SilentlyContinue |
  Sort-Object LastWriteTime -Descending |
  Select-Object -First 50 FullName, LastWriteTime

5. 把浏览器痕迹和执行链串起来

$start=(Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688; StartTime=$start} |
  Where-Object {
    $_.Message -match 'powershell\.exe|mshta\.exe|wscript\.exe|cscript\.exe|excel\.exe|winword\.exe'
  } |
  Select-Object TimeCreated, Message

如果你已经从浏览器数据库中找到了某个时间点的下载动作,再去比对这一时间点前后 1-5 分钟内的 4688,往往就能把“下载”升级成“下载并执行”。

6. 一条可直接执行的实战流程

建议按下面顺序落地:

  1. 先查浏览器 History / downloads 表,锁定 URL、下载来源和本地路径
  2. 再查 Downloads 目录、Recent、Prefetch,确认本地文件是否被打开
  3. 再查 4688 看是否触发 powershell/mshta/wscript/Office
  4. 最后再看是否继续出现外联、任务创建、代理隧道或木马落地

这样浏览器证据才不会停留在“访问过网站”,而是能直接进入攻击链主干。


0x0A 总结

浏览器痕迹分析真正有价值的地方,不在“用户曾访问过什么”,而在于它能够帮助我们证明:

  • 恶意入口确实被触达
  • 恶意文件确实被下载
  • 本地载荷确实被执行
  • 后续入侵动作与此次下载存在时间闭环

换句话说,浏览器取证不是一项孤立的桌面痕迹检查,而是把钓鱼、下载、执行、驻留、外联串成同一条攻击链的重要一环。这也是它从 0x02 的采集项,升级为 0x03 分析能力的核心意义。