
Windows LNK 与 Jump List 取证分析指南从 Shell Link 二进制解析到报告产出【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills本文是《Anthropic-Cybersecurity-Skills》仓库中analyzing-lnk-file-and-jump-list-artifacts技能skill的深度技术解读。该技能面向安全分析师与取证调查人员讲解如何借助 Eric Zimmerman 的 LECmd / JLECmd、PythonLnkParse3 及手工 Shell Link 解析提取 Windows 快捷方式.lnk与 Jump List跳转列表中的文件访问、程序执行与用户行为证据——即使目标文件已被删除这些证据依然存在。读完本文你将掌握 LNK 文件二进制结构、LECmd/JLECmd 的完整命令行用法、Python 源码级解析原理、三类典型调查工作流以及如何基于仓库提供的报告模板产出规范化的取证报告。一、为什么 LNK 与 Jump List 是取证金矿LNKshortcut文件与 Jump List 是 Windows 取证中最有价值的用户行为痕迹之一其核心价值在于持久性当用户在 Windows 资源管理器中打开文件、或通过打开/另存为对话框操作文件时系统会自动创建对应的 .lnk 文件记录目标文件的原始路径、时间戳、卷序列号、主机 NetBIOS 名称乃至 MAC 地址。即使目标文件被删除这些 .lnk 痕迹仍然保留成为证明用户在特定时间访问过特定文件的关键证据。Jump List 自 Windows 7 引入按应用程序维度维护最近访问与频繁访问的文件列表能够重建某个应用如 Excel、记事本在时间轴上的文件操作记录。二者结合可支撑从单机用户行为分析、USB 可移动设备取证到网络共享访问重建的多类调查场景。从本仓库的技能元数据SKILL.md可以看到该技能的定位与适用范围领域cybersecurity / digital-forensics适用判断调查 Windows 用户活动、重建文件访问或程序执行时间线、检查最近/常用文件证据时使用框架映射对应 NIST CSF 的RS.AN-03分析、DE.AE-02异常活动分析、RS.MA-01缓解等能力项。二、何时使用本技能当出现以下任一种情况时应启动本技能的取证流程安全事件调查需要分析 LNK 文件与 Jump List 痕迹需要为本领域构建检测规则或威胁狩猎查询例如检测通过 LNK 投递的恶意载荷SOC 分析师需要一套结构化的分析规程standard operating procedure需要验证安全监控对相关攻击技术如 MITRE ATTCK T1547.009 快捷方式修改、T1204.002 用户执行恶意文件、T1059.001 PowerShell 执行的覆盖情况。三、前提条件与工具链根据 SKILL.md 的 Prerequisites 章节完整执行本技能需要工具用途LECmdEric ZimmermanLNK 文件解析JLECmdEric ZimmermanJump List 解析Python 3.8配合pylnk3或LnkParse3跨平台二进制解析Windows 系统的取证镜像或 triage 采集证据来源Timeline ExplorerCSV 结果的可视化与时间线分析Python 库的安装方式在 api-reference.md 中给出pip install LnkParse3取证标准依据本技能遵循的取证标准见 standards.mdMS-SHLLINKShell Link 二进制文件格式微软开放规范NIST SP 800-86取证技术整合指南SWGDE计算机取证最佳实践。四、LNK 文件的关键位置取证时优先采集以下位置的 .lnk 文件来自 SKILL.md位置说明%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent\最近访问的文件%USERPROFILE%\Desktop\用户创建的快捷方式%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\开始菜单快捷方式%USERPROFILE%\AppData\Roaming\Microsoft\Office\Recent\Office 最近文档五、LNK 文件二进制结构Shell Link Header理解二进制结构是手工解析与校验自动化工具结果的基础。LNK 文件遵循 MS-SHLLINK 规范其 Shell Link Header 固定为76 字节结构如下来自 SKILL.md 与 api-reference.md 一致偏移大小字段0x004HeaderSize恒为 0x0000004C0x0416LinkCLSID恒为 00021401-0000-0000-C000-0000000000460x144LinkFlags0x184FileAttributes0x1C8CreationTimeFILETIME0x248AccessTimeFILETIME0x2C8WriteTimeFILETIME0x344目标文件大小0x384IconIndex0x3C4ShowCommand0x402HotKey关键取证字段目标文件时间戳被引用文件的创建、访问、修改时间卷信息序列号、驱动器类型、卷标网络共享信息UNC 路径、共享名机器标识NetBIOS 名称、MAC 地址来自 TrackerDataBlock分布式链接跟踪Distributed Link TrackingMachine ID 与对象 GUID。六、使用 EZ Tools 进行实战分析6.1 LECmdLNK 文件解析# 解析 Recent 文件夹下所有 LNK 文件并导出 CSV LECmd.exe -d C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent --csv C:\Output --csvf lnk_analysis.csv # 解析单个 LNK 文件并输出完整详情JSON LECmd.exe -f C:\Evidence\Users\suspect\Desktop\Confidential.docx.lnk --json C:\Output # 以更高详细级别解析目录内所有 LNK LECmd.exe -d C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent --csv C:\Output --csvf lnk_all.csv --allLECmd 的完整参数速查api-reference.mdLECmd.exe -f file.lnk # 单个文件 LECmd.exe -d directory --all # 目录下所有文件 LECmd.exe -d dir --csv output_dir # CSV 导出 LECmd.exe -d dir --json output_dir # JSON 导出 LECmd.exe -f file.lnk -q # 安静模式 LECmd.exe -d dir -r # 仅处理可移动驱动器相关LECmd 输出的核心字段及其取证含义字段含义SourceFile.lnk 文件自身路径TargetCreated / TargetModified / TargetAccessed目标文件三时间戳FileSize目标文件大小RelativePath / LocalPath目标相对路径 / 完整本地路径WorkingDirectory / Arguments工作目录 / 命令行参数VolumeSerialNumber / DriveType目标卷序列号 / 驱动器类型Fixed、Removable、NetworkMachineID / MacAddress来自 tracker 块的 NetBIOS 名称 / MAC 地址6.2 JLECmdJump List 解析# 解析自动目标 Jump ListAutomatic Destinations JLECmd.exe -d C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations --csv C:\Output --csvf jumplists_auto.csv # 解析自定义目标 Jump ListCustom Destinations JLECmd.exe -d C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations --csv C:\Output --csvf jumplists_custom.csv # 解析全部 Jump List 并输出嵌入 LNK 的详细数据 JLECmd.exe -d C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations --csv C:\Output --csvf jumplists_auto.csv --ldJLECmd 参数速查JLECmd.exe -f jumplist_file # 单个文件 JLECmd.exe -d directory # 全部 Jump List JLECmd.exe -d dir --csv output # CSV 导出 JLECmd.exe -d dir --fd # 输出完整 LNK 细节 JLECmd.exe -d dir --dumpTo dir # 提取嵌入的 LNK 文件6.3 Jump List 存储位置%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\ %APPDATA%\Microsoft\Windows\Recent\CustomDestinations\七、Jump List 内部结构7.1 Automatic Destinations自动目标这类文件本质是OLE 复合文档Structured Storage文件名中的 AppID 哈希标识了对应应用程序。常用 AppID 对照表来自 SKILL.md并可由 scripts/agent.py 中的JUMP_LIST_APP_IDS字典印证AppID Hash应用程序5f7b5f1e01b83767Windows Explorer 固定/常用1b4dd67f29cb1962Windows Explorer 最近9b9cdc69c1c24e2b记事本Notepada7bd71699cd38d1cNotepad12dc1ea8e34b5a6Microsoft Paint7e4dca80246863e3控制面板1cf97c38a5881255Microsoft Edgef01b4d95cf55d32aWindows Explorer9d1f905ce5044aeeMicrosoft Excela4a5324453625195Microsoft Wordd00655d2aa12ff6dMicrosoft PowerPointbc03160ee1a59fc1Outlook仓库脚本 agent.py 中维护了更完整的映射额外覆盖 Google Chrome5d696d521de238c3、Firefoxecd21b58c2f65a4f、远程桌面 mstsc1bc392b8e104a00e、WinRARb91050d8b077a4e8、WinSCPb74736c2bd8cc8a5、PuTTYcfb56c56fa0f0478、Acrobat Reader DCfb3b0dbfee58fac8等应用可在批量扫描时自动将 AppID 映射为应用名。7.2 Custom Destinations自定义目标当用户将项目固定pin到应用跳转列表时生成文件内容为连续的 LNK 条目序列取证价值在于记录用户主动固定的文件/程序。八、Python 源码级解析原理8.1 手工 Shell Link 头解析process.py仓库提供了不依赖任何第三方库的纯 Python 解析器 scripts/process.py其核心逻辑直接对应第五节介绍的二进制布局import struct import os import sys import json import csv from datetime import datetime, timedelta from pathlib import Path FILETIME_EPOCH datetime(1601, 1, 1) def filetime_to_datetime(ft_bytes: bytes): Convert Windows FILETIME to datetime. ft struct.unpack(Q, ft_bytes)[0] if ft 0: return None try: return FILETIME_EPOCH timedelta(microsecondsft // 10) except (OverflowError, OSError): return None def parse_lnk_file(filepath: str) - dict: Parse a Windows LNK file and extract forensic metadata. with open(filepath, rb) as f: data f.read() if len(data) 76: return {error: File too small for LNK header} header_size struct.unpack(I, data[0:4])[0] if header_size ! 0x4C: return {error: Invalid LNK header signature} link_flags struct.unpack(I, data[0x14:0x18])[0] file_attrs struct.unpack(I, data[0x18:0x1C])[0] result { file: filepath, file_size_lnk: len(data), creation_time: str(filetime_to_datetime(data[0x1C:0x24])), access_time: str(filetime_to_datetime(data[0x24:0x2C])), write_time: str(filetime_to_datetime(data[0x2C:0x34])), target_file_size: struct.unpack(I, data[0x34:0x38])[0], flags: { has_target_id_list: bool(link_flags 0x01), has_link_info: bool(link_flags 0x02), has_name: bool(link_flags 0x04), has_relative_path: bool(link_flags 0x08), has_working_dir: bool(link_flags 0x10), has_arguments: bool(link_flags 0x20), has_icon_location: bool(link_flags 0x40), }, attributes: { readonly: bool(file_attrs 0x01), hidden: bool(file_attrs 0x02), system: bool(file_attrs 0x04), directory: bool(file_attrs 0x10), archive: bool(file_attrs 0x20), } } return result实现要点FILETIME 转换filetime_to_datetime将自 1601-01-01 起以 100 纳秒为单位的 64 位整数换算为 datetimeft // 10即换算为微秒头部校验先检查文件长度 ≥ 76 字节再校验HeaderSize 0x4C不满足即判定无效防止误解析非 LNK 文件LinkFlags 位解码通过位与运算解析各标志位判断是否存在 TargetIDList、LinkInfo、相对路径、工作目录、命令行参数、图标位置等可选数据块这些标志决定了后续解析器应读取哪些结构。scan_directory函数递归遍历目录中所有.lnk文件并输出 JSON 报告命令行用法为python process.py lnk_directory output_dir8.2 基于 LnkParse3 的完整解析 Agentagent.pyscripts/agent.py 是功能更完整的取证 Agent具备三层解析能力LnkParse3 深度解析parse_lnk_with_lnkparse3当环境中安装了 LnkParse3 时自动提取目标相对路径、工作目录、命令行参数、图标位置、卷序列号、卷标、驱动器类型以及DISTRIBUTED_LINK_TRACKER_BLOCK中的 Machine ID、MAC 地址、Droid Volume/File ID原始字节手工解析parse_lnk_header_raw作为 LnkParse3 缺失时的回退方案还额外解码ShowCommand1Normal、3Maximized、7Minimized可疑 LNK 检测detect_suspicious_lnk通过正则匹配内置的恶意模式清单包括检测模式风险含义powershell通过 LNK 执行 PowerShellcmd\.exe\s*/c通过 LNK 执行命令行mshtaHTA 载荷执行certutil.*-decodeCertUtil 解码文件下载bitsadmin.*transferBitsAdmin 文件下载regsvr32.*scrobjRegsvr32 COM scriptlet 执行wscript\|cscript脚本宿主执行\\\\[0-9]\.[0-9]\.[0-9]\.[0-9]\\指向 IP 的 UNC 路径http[s]?://LNK 参数中含 URL-enc\s[A-Za-z0-9/]{20,}Base64 编码的 PowerShell同时若目标位于网络驱动器DRIVE_REMOTE也会标记为可疑。这些模式与 api-reference.md 中Suspicious LNK Indicators表格一致覆盖了典型的 Living-off-the-land 执行链mshta/wscript/cscript。Agent 的三种调用模式python agent.py # 显示帮助与依赖状态 python agent.py file.lnk # 分析单个 LNK含 SHA-256 哈希 python agent.py directory # 扫描目录LNK AutomaticDestinations Jump List目录扫描模式下scan_jump_lists会同时匹配*.automaticDestinations-ms与*.customDestinations-ms文件并根据 AppID 字典输出应用名将 LNK 与 Jump List 两条分析线合二为一。九、三大取证调查工作流workflows.md 给出了三个可直接套用的标准工作流工作流 1用户文件访问调查收集 Recent 目录的 LNK 文件 ↓ 使用 LECmd 解析为 CSV ↓ 按目标路径过滤特定文件/位置 ↓ 提取时间戳、卷序列号、NetBIOS 名称 ↓ 与 MFT 和事件日志时间戳交叉关联 ↓ 记录文件访问时间线工作流 2Jump List 应用活动分析收集 AutomaticDestinations 和 CustomDestinations ↓ 使用 JLECmd 解析为 CSV ↓ 将 AppID 哈希映射到应用程序 ↓ 按应用提取嵌入的 LNK 条目 ↓ 构建按应用维度的文件访问时间线 ↓ 识别可移动介质与网络路径工作流 3可移动介质USB使用分析按盘符E:、F:、G:过滤 LNK 文件 ↓ 提取卷序列号 ↓ 与 SYSTEM 注册表 USBSTOR 条目比对 ↓ 识别具体被访问过的 USB 设备 ↓ 构建用户-设备-文件时间线十、典型调查用例详解10.1 文件访问证据解析 Recent 文件夹中的 LNK 文件以识别被访问的文档与 MFT 时间戳和 USN Journal 条目交叉印证注意LNK 在目标文件被删除后仍然保留是重建已删除文件曾存在且被访问事实的可靠来源。10.2 可移动介质访问引用 E:、F:、G: 等盘符的 LNK 表明存在可移动介质使用行为LNK 中记录的卷序列号可唯一标识具体设备TrackerDataBlock 中的MAC 地址可标识来源主机。10.3 网络共享活动含 UNC 路径\\server\share的 LNK 表明存在网络文件访问NetBIOS 名称标识远程服务器时间戳确定访问发生的具体时间。十一、Windows 10 与 Windows 11 的差异根据 SKILL.md 引用的 2025 年 IEEE 研究Windows 11 产生的 LNK 与 Jump List 痕迹与 Windows 10 存在差异分析时需注意对某些文件类型Windows 11 生成的自动 LNK 文件更少现代应用UWP/MSIX的 Jump List 行为发生变化可能不再生成传统 Jump ListWindows 11 的 Quick Access快速访问取代了部分 Recent 功能。这些差异意味着在 Windows 11 环境中LNK/Jump List 覆盖范围可能收缩分析时应结合 MFT、USN、Prefetch 等其他痕迹交叉验证。十二、产出规范化取证报告基于仓库模板仓库提供了现成的取证报告模板 assets/template.md其结构恰好覆盖了上述工作流的全部产出建议按以下方式组织最终报告案件信息Case Information字段值案件编号Case Number填写案件唯一编号检验人Examiner填写分析师姓名证据来源Evidence Source填写镜像/采集来源与哈希LNK 文件摘要表LNK 文件目标路径目标创建时间目标修改时间卷序列号Machine IDQ4_Report.xlsx.lnkC:\Users\jsmith\Downloads\Q4_Report.xlsm2024-01-15 14:33:45 UTC2024-01-15 14:33:45 UTCA4E7-3F21DESKTOP-J5M1TH该表直接对应 LECmd 输出字段TargetCreated/TargetModified/VolumeSerialNumber/MachineID实现工具输出到报告的无损迁移。Jump List 摘要表应用程序AppID访问的文件日期范围Microsoft Excel12dc1ea8e34b5a6C:\Users\jsmith\Downloads\Q4_Report.xlsm\FILESERV01\Finance\Budget_2024.xlsx2024-01-10 ~ 2024-01-15可移动介质引用表盘符卷序列号卷标访问的文件E:填写填写填写发现Findings在 Findings 章节用一段话总结通过 LNK/Jump List 分析建立的用户活动结论如证据表明用户 jsmith 于 2024-01-15 14:33-14:36 期间访问了 Q4_Report.xlsm并通过隐藏窗口执行了 update_client.exe同时访问了 E:\Backup 可移动介质与 \FILESERV01 网络共享。十三、参考输出示例以下为 SKILL.md 提供的真实运行效果示例可作为报告数据格式的对照基准$ LECmd.exe -d C:\Evidence\Users\jsmith\AppData\Roaming\Microsoft\Windows\Recent --csv /analysis/lnk_output LECmd v1.11.0 - LNK File Parser Processing 47 LNK files... --- LNK File: Q4_Report.xlsx.lnk --- Source: C:\Evidence\Users\jsmith\Recent\Q4_Report.xlsx.lnk Target Path: C:\Users\jsmith\Downloads\Q4_Report.xlsm Target Created: 2024-01-15 14:33:45 UTC Target Modified: 2024-01-15 14:33:45 UTC Target Accessed: 2024-01-15 14:35:12 UTC File Size: 251,904 bytes Drive Type: Fixed (C:) Volume Serial: A4E7-3F21 Machine ID: DESKTOP-J5M1TH MAC Address: 48:2A:E3:5C:9B:01 --- LNK File: update_client.exe.lnk --- Source: C:\Evidence\Users\jsmith\Recent\update_client.exe.lnk Target Path: C:\ProgramData\Updates\update_client.exe Target Created: 2024-01-15 14:34:02 UTC Target Modified: 2024-01-15 14:34:02 UTC Target Accessed: 2024-01-15 14:36:30 UTC File Size: 1,258,496 bytes Drive Type: Fixed (C:) Volume Serial: A4E7-3F21 Machine ID: DESKTOP-J5M1TH Working Dir: C:\ProgramData\Updates Arguments: --silent --no-update-check Run Window: Hidden $ JLECmd.exe -d C:\Evidence\Users\jsmith\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations --csv /analysis/jumplist_output JLECmd v1.5.0 - Jump List Parser Processing 23 AutomaticDestinations files... --- Application: Microsoft Excel (AppID: 12dc1ea8e34b5a6) --- Entries: 15 Most Recent: Entry 0: C:\Users\jsmith\Downloads\Q4_Report.xlsm (2024-01-15 14:35:12 UTC) Entry 1: \\FILESERV01\Finance\Budget_2024.xlsx (2024-01-14 09:22:30 UTC) Entry 2: C:\Users\jsmith\Documents\Expenses\Dec2023.xlsx (2024-01-10 16:45:00 UTC) --- Application: Windows Explorer (AppID: f01b4d95cf55d32a) --- Entries: 28 Most Recent: Entry 0: C:\ProgramData\Updates\ (2024-01-15 14:36:25 UTC) Entry 1: E:\Backup\ (2024-01-15 15:30:00 UTC) Entry 2: \\FILESERV01\HR\Employees\ (2024-01-15 16:12:45 UTC) --- Application: cmd.exe (AppID: 9b9cdc69c1c24e2b) --- Entries: 5 Most Recent: Entry 0: C:\Windows\System32\cmd.exe (2024-01-15 14:36:00 UTC) Summary: Total LNK files processed: 47 Total Jump List entries: 156 Suspicious artifacts: 3 (hidden window execution, USB drive access, network shares) CSV exported to: /analysis/lnk_output/ and /analysis/jumplist_output/注意上例中Run Window: Hidden、E:\Backup可移动介质与\\FILESERV01网络共享三个要素正是仓库脚本detect_suspicious_lnk与DRIVE_REMOTE检测逻辑在真实场景中的对应物。十四、MITRE ATTCK 关联与扩展阅读本技能在 SKILL.md 元数据中声明的威胁框架映射包括MITRE ATTCKT1547.009快捷方式修改、T1204.002用户执行恶意文件、T1059.001PowerShell 执行NIST CSFRS.AN-03、DE.AE-02、RS.MA-01。这与 standards.md 中记录的 T1547.009 与 T1204.002 保持一致。防御视角下这些映射可用于构建LNK 投递恶意载荷类攻击的检测与狩猎规则。深入阅读当前仓库技能主文档SKILL.md工具命令速查api-reference.md标准工作流workflows.md取证标准与工具清单standards.md纯 Python 手工解析实现scripts/process.py完整解析 可疑检测 Agentscripts/agent.py取证报告模板assets/template.md结语LNK 文件与 Jump List 之所以在取证中不可替代在于它们记录了系统自动沉淀的用户行为痕迹且不随目标文件删除而消失。掌握 MS-SHLLINK 二进制结构、熟练使用 LECmd/JLECmd 两条工具链并能用仓库提供的 Python 脚本完成手工解析与可疑模式检测即可在文件访问重建、USB 设备追踪、网络共享活动确认等调查场景中形成完整证据链最终按模板产出可审计的规范化报告。分析 Windows 11 环境时请务必结合其他痕迹交叉验证以弥补新版系统在 LNK/Jump List 覆盖上的缩减。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考