# Analyzing Lnk File And Jump List Artifacts

> 分析 Windows LNK 快捷方式文件和 Jump List 制品，使用 LECmd、JLECmd 以及对 Shell Link 二进制格式的手动解析，以建立文件访问、程序执行和用户活动的证据。

- **Type:** Skill
- **Install:** `agentstack add skill-killvxk-cybersecurity-skills-zh-analyzing-lnk-file-and-jump-list-artifacts`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [killvxk](https://agentstack.voostack.com/s/killvxk)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [killvxk](https://github.com/killvxk)
- **Source:** https://github.com/killvxk/cybersecurity-skills-zh/tree/master/skills/analyzing-lnk-file-and-jump-list-artifacts

## Install

```sh
agentstack add skill-killvxk-cybersecurity-skills-zh-analyzing-lnk-file-and-jump-list-artifacts
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 分析 LNK 文件和 Jump List 制品

## 概述

Windows LNK（快捷方式）文件和 Jump List 是关键的取证制品（forensic artifact），提供文件访问、程序执行和用户行为的证据。当用户通过 Windows 资源管理器或"打开/保存"对话框打开文件时，会自动创建 LNK 文件，其中存储了目标文件的元数据，包括原始路径、时间戳、卷序列号、NetBIOS 名称以及主机系统的 MAC 地址。Windows 7 引入的 Jump List 通过维护每个应用程序最近和频繁访问文件的列表来扩展这一功能。即使目标文件被删除，这些制品仍然存在，使其成为证明用户在特定时间访问特定文件的宝贵手段。

## 前置条件

- LECmd（Eric Zimmerman）用于 LNK 文件解析
- JLECmd（Eric Zimmerman）用于 Jump List 解析
- Python 3.8+ 及 pylnk3 或 LnkParse3 库
- 来自 Windows 系统的取证镜像或分诊（triage）收集
- Timeline Explorer 用于 CSV 分析

## LNK 文件位置

| 位置 | 描述 |
|----------|-------------|
| `%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 头部（76 字节）

| 偏移 | 大小 | 字段 |
|--------|------|-------|
| 0x00 | 4 | HeaderSize（始终为 0x0000004C） |
| 0x04 | 16 | LinkCLSID（始终为 00021401-0000-0000-C000-000000000046） |
| 0x14 | 4 | LinkFlags |
| 0x18 | 4 | FileAttributes |
| 0x1C | 8 | CreationTime（FILETIME） |
| 0x24 | 8 | AccessTime（FILETIME） |
| 0x2C | 8 | WriteTime（FILETIME） |
| 0x34 | 4 | 目标文件大小 |
| 0x38 | 4 | IconIndex |
| 0x3C | 4 | ShowCommand |
| 0x40 | 2 | HotKey |

### LNK 文件中的关键取证字段

- **目标文件时间戳**：被引用文件的创建、访问、修改时间
- **卷信息**：序列号、驱动器类型、卷标
- **网络共享信息**：UNC 路径、共享名称
- **机器标识符**：NetBIOS 名称、MAC 地址（来自 TrackerDataBlock）
- **分布式链接跟踪**：机器 ID 和对象 GUID

## 使用 EZ Tools 分析

### LECmd——LNK 文件解析器

```powershell
# 解析 Recent 文件夹中的所有 LNK 文件
LECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent" --csv C:\Output --csvf lnk_analysis.csv

# 解析单个 LNK 文件并输出完整详情
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 --all
```

### JLECmd——Jump List 解析器

```powershell
# 解析自动 Jump List
JLECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations" --csv C:\Output --csvf jumplists_auto.csv

# 解析自定义 Jump List
JLECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations" --csv C:\Output --csvf jumplists_custom.csv

# 解析所有 Jump List 并输出详细信息
JLECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations" --csv C:\Output --csvf jumplists_auto.csv --ld
```

## Jump List 结构

### 自动目标（automaticDestinations-ms）

这些是 OLE 复合文件（结构化存储），由文件名中的 AppID 哈希标识：

| AppID 哈希 | 应用程序 |
|-----------|-------------|
| 5f7b5f1e01b83767 | Windows 资源管理器固定/频繁 |
| 1b4dd67f29cb1962 | Windows 资源管理器最近 |
| 9b9cdc69c1c24e2b | Notepad |
| a7bd71699cd38d1c | Notepad++ |
| 12dc1ea8e34b5a6 | Microsoft Paint |
| 7e4dca80246863e3 | 控制面板 |
| 1cf97c38a5881255 | Microsoft Edge |
| f01b4d95cf55d32a | Windows 资源管理器 |
| 9d1f905ce5044aee | Microsoft Excel |
| a4a5324453625195 | Microsoft Word |
| d00655d2aa12ff6d | Microsoft PowerPoint |
| bc03160ee1a59fc1 | Outlook |

### 自定义目标（customDestinations-ms）

当用户将条目固定到应用程序 Jump List 时创建。这些文件包含连续的 LNK 条目。

## Python 分析脚本

```python
import struct
import os
from datetime import datetime, timedelta

FILETIME_EPOCH = datetime(1601, 1, 1)

def filetime_to_datetime(filetime_bytes: bytes) -> datetime:
    """将 Windows FILETIME（自 1601 年起的 100 纳秒间隔）转换为 datetime。"""
    ft = struct.unpack(" dict:
    """解析 LNK 文件的 Shell Link 头部。"""
    with open(lnk_path, "rb") as f:
        header = f.read(76)

    header_size = struct.unpack("<I", header[0:4])[0]
    if header_size != 0x4C:
        return {"error": "无效的 LNK 头部"}

    link_flags = struct.unpack("<I", header[0x14:0x18])[0]
    file_attrs = struct.unpack("<I", header[0x18:0x1C])[0]

    result = {
        "header_size": header_size,
        "link_flags": hex(link_flags),
        "file_attributes": hex(file_attrs),
        "creation_time": filetime_to_datetime(header[0x1C:0x24]),
        "access_time": filetime_to_datetime(header[0x24:0x2C]),
        "write_time": filetime_to_datetime(header[0x2C:0x34]),
        "file_size": struct.unpack("<I", header[0x34:0x38])[0],
        "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),
    }
    return result
```

## 调查使用场景

### 文件访问证据
1. 解析 Recent 文件夹中的 LNK 文件以识别访问的文档
2. 与 MFT 时间戳和 USN Journal 条目交叉比对
3. 注意：即使目标文件被删除，LNK 文件仍然存在

### 可移动媒体访问
1. 引用驱动器盘符 E:、F:、G: 的 LNK 文件表明使用了可移动媒体
2. LNK 中的卷序列号标识具体设备
3. TrackerDataBlock 中的 MAC 地址标识源机器

### 网络共享活动
1. 包含 UNC 路径（\\server\share）的 LNK 文件表明有网络文件访问
2. NetBIOS 名称标识远程服务器
3. 时间戳确定访问发生的时间

## Windows 10 与 Windows 11 的差异

最新研究（IEEE 2025）表明 Windows 11 产生不同的 LNK 和 Jump List 制品：
- 某些文件类型自动生成的 LNK 文件减少
- 现代应用的 Jump List 行为已修改
- UWP/MSIX 应用可能不生成传统 Jump List
- Windows 11 快速访问（Quick Access）取代了部分最近功能

## 参考资料

- Shell Link 二进制文件格式：https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-shllink/
- Magnet Forensics LNK 分析：https://www.magnetforensics.com/blog/forensic-analysis-of-lnk-files/
- Jump List 取证 2025：https://www.cybertriage.com/blog/jump-list-forensics-2025/
- Eric Zimmerman 的 LECmd/JLECmd：https://ericzimmerman.github.io/

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [killvxk](https://github.com/killvxk)
- **Source:** [killvxk/cybersecurity-skills-zh](https://github.com/killvxk/cybersecurity-skills-zh)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** yes
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-killvxk-cybersecurity-skills-zh-analyzing-lnk-file-and-jump-list-artifacts
- Seller: https://agentstack.voostack.com/s/killvxk
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
