浏览器下载与LNK和JumpList用户操作链分析
浏览器下载与LNK和JumpList用户操作链分析
0x02电子取证/浏览器相关检查 解决的是“历史、下载、缓存、相关目录在哪,怎么取出来”。到了 0x03取证分析,更关键的问题不是“浏览器有没有下载记录”,而是:
- 用户到底有没有看到这个文件
- 是浏览器静默落地,还是用户明确点击、打开过
- 下载之后是只停留在磁盘上,还是已经被 Explorer、Office、脚本宿主或其他程序接力
- 哪些 Artifact 只能说明“文件来过”,哪些已经能说明“用户操作推动了执行”
浏览器事件分析里,真正难的往往不是证明“下载发生过”,而是证明下载之后是否发生了用户操作和后续执行。
0x01 这篇对应 0x02 里的什么内容
这篇主要承接 浏览器相关检查 取回来的这些证据:
- 浏览器
History Downloads- 缓存目录
- 下载文件路径
RecentLNKJump List
同时也和这些证据强相关:
重点文件检查Recent / Prefetch / Amcache- 进程创建日志
因此本文重点不是下载入口本身,而是把“下载之后的用户操作链”讲清楚。
0x02 先把浏览器下载后的行为分层
1. 仅下载成立
这时通常只能证明:
- 文件被浏览器拉下来了
- 存在源 URL、保存路径、开始/结束时间
但还不能证明:
- 用户看见了
- 双击了
- 打开了
2. 用户接触成立
这时常见证据是:
Recent.lnk- Jump List
它们更偏向说明:
- 用户在桌面或资源管理器层面接触过目标对象
3. 执行链推进成立
这时常见证据会进一步出现:
PrefetchAmcache- 4688 / Sysmon 进程日志
- 后续网络连接
这已经接近“程序执行成立”或“文档被打开并继续触发后续动作”。
0x03 下载记录如何解释成结论
1. 只有浏览器 Downloads 命中时,最稳妥的结论只是“文件被引入主机”
如果结果类似:
更合理的分析结论是:
- 浏览器确实把该对象下载到了本地
- 当前可确认“引入主机”成立
- 但不能仅凭此写成“用户已打开”或“已执行恶意载荷”
2. 下载路径落在桌面或下载目录,更像需要用户后续交互
如果目标路径是:
DesktopDownloadsDocuments
更常见的语义是:
- 文件被放在用户可见、可点击位置
- 攻击链通常需要进一步依赖用户操作推进
这和直接落到 %TEMP% 或浏览器缓存里的静默脚本载荷,语义并不一样。
3. 下载对象是 iso、zip、rar、lnk、docm 时,更应优先查“后续接触链”
因为这类对象在攻击里经常只是载体,不是终点:
iso/zip需要挂载或解压lnk/js/hta需要被点开docm需要被 Office 打开
所以对这类下载结果,真正重要的不是“下载完成”,而是“后续有没有接触和执行”。
0x04 Recent 与 LNK 如何把结论从“下载”升级到“用户接触”
1. Recent 指向下载对象,说明用户会话层面碰过这个文件
如果看到:
更合理的分析结论是:
- 用户至少在 Explorer 或相关程序中接触过该对象
- 这比“文件静默存在于磁盘”更强
- 但仍要克制,不宜直接写成“恶意程序已执行”
2. .lnk 指向从压缩包中解出的二级文件,说明下载链已推进了一步
例如:
这类结果的意义明显强于:
- 只指向原始下载包
因为它更说明:
- 用户或系统已经进入了解压、挂载、浏览二级内容阶段
3. LNK 的卷序列号、路径和时间,适合把“接触动作”嵌回完整时间线
也就是说,LNK 最重要的价值不是“多了一个快捷方式”,而是:
- 告诉你用户接触的是哪个对象
- 接触时间大致落在哪
- 是否来自本地下载目录、网络共享、U 盘或挂载卷
0x05 Jump List 如何把“用户接触”升级为“按应用打开”
1. Jump List 的价值在于“是哪个应用处理了这个对象”
如果结果显示:
更合理的分析结论是:
- 不只是文件存在或被点击
- 而是某个具体应用与该对象发生了交互
- 这让“用户真的打开过这个文件”更接近成立
2. Jump List 命中已删除对象时,特别适合支撑“曾访问过”
如果目标对象本体已经没了,但 Jump List 仍保留:
- 说明文件曾被应用层面访问过
- 攻击者后续即使删文件,也未必抹掉这一层痕迹
- 这在清痕场景里价值很高
3. Jump List 指向网页、云盘、下载对象时,特别适合还原“用户看到了什么”
有些应用的 Jump List 会保留:
- 最近打开文档
- 浏览器最近站点
- 任务栏最近访问对象
这类结果不一定直接证明恶意执行,但很适合支撑:
- 用户是否真的浏览到了诱导内容
- 是否曾多次返回某一下载对象或某个站点
0x06 从“下载”到“执行”的升级判断
1. Downloads + Recent/LNK
更适合写成:
- 下载已发生
- 用户接触已发生
- 但执行仍需更多旁证
2. Downloads + Jump List
更适合写成:
- 下载已发生
- 某具体应用已打开或处理该对象
- 对“用户操作推动了后续链条”支持更强
3. Downloads + Recent/LNK + Jump List
这时可以更有把握地写成:
- 文件不仅落地,还被用户/应用层明确访问过
4. 再叠加 Prefetch/Amcache/4688
此时就可以把结论抬到:
- 下载后的执行链成立
- 浏览器不是单独入口,而是完整执行链的起点
0x07 三个最容易误判的边界
1. 有下载记录,不等于用户已打开
下载可能是:
- 自动下载
- 浏览器预取
- 脚本静默拉取
所以仅有 Downloads 不能直接推执行。
2. 有 Recent/LNK,不等于恶意载荷一定执行
它更偏向:
- 用户接触
- 文件浏览
- 资源管理器交互
执行仍需更强 Artifact。
3. 有 Jump List,不等于一定是本次事件
Jump List 很容易保留历史使用痕迹。因此必须和:
- 下载时间
- 文件时间
- 进程时间
- 当前事件窗口
做严格对齐。
0x08 如何把这些结果串成用户操作链
场景一:钓鱼附件下载后点击执行
Downloads记录显示下载invoice.isoRecent/LNK指向invoice.iso- Jump List 指向
invoice.iso或其中对象 Prefetch/ 4688 记录二级文件执行- 后续出现 C2 或持久化
场景二:压缩包下载后解压再打开
- 浏览器记录下载
update.zip LNK指向解压目录里的run.exe- Jump List 记录某应用打开该对象
- 进程日志显示后续载荷执行
场景三:文档型诱导链
- 下载
docm/xlsm/pdf Recent和 Jump List 说明用户打开过文档- 后续出现 Office 子进程、脚本宿主或命令行解释器
这类链条很适合回答一个现场最常被问的问题:
- 文件是不是只是“下载过”,还是“真的被人点开了”
0x09 和其他分析篇怎样联动
这篇最适合和以下专题联动:
浏览器痕迹与下载执行链分析Recent与Prefetch和Amcache执行痕迹交叉分析重点目录异常文件与落地载荷关联分析可疑进程树与父子进程异常取证分析
因为这几类证据合起来,才能把:
- 下载
- 用户接触
- 应用打开
- 后续执行
连成一条完整链。
0x0A 公开资料与分析借鉴
下面这些资料适合继续深挖:
- Jump Lists Forensics
- Windows Forensic Artifacts for User Activity
- Windows Taskbar Jump Lists: A Forensic Goldmine
- RDP, Prefetch, LNK, Jump Lists
这些资料最值得借鉴的一点是:浏览器下载只是起点,LNK、Jump List、Recent 和执行 Artifact 的交叉,才是证明用户操作链的关键。
0x0B 建议的交付结构
浏览器用户操作链分析结果建议整理为如下表格:
| 时间 | Artifact | 对象 | 解释 | 结论强度 |
|---|---|---|---|---|
| 01:12:03 | Downloads | invoice.iso | 文件被浏览器下载 | 弱 |
| 01:13:11 | Recent/LNK | invoice.iso | 用户接触或点击对象 | 中 |
| 01:14:22 | Jump List | invoice.iso / run.bat | 某应用打开或处理对象 | 中到强 |
| 01:15:09 | Prefetch / 4688 | run.exe | 执行成立 | 强 |
| 01:15:40 | 网络 / 服务 | 后续 C2 / 持久化 | 下载执行链完成推进 | 强 |
0x0C 总结
浏览器下载分析的关键,不是只证明“文件下来了”,而是要回答:
- 用户有没有接触这个文件
- 哪个应用处理过这个文件
- 下载之后链条有没有推进到打开和执行
- 哪些结论只能写“接触成立”,哪些已经能写“执行成立”
当你把 Downloads、LNK、Recent、Jump List 和执行 Artifact 串起来时,0x02 里的“浏览器相关检查”才真正升级成 0x03 的“用户操作链分析”。