К основному содержанию
скилл CX Codex

analyzing-lnk-file-and-jump-list-artifacts — скилл для Claude Code

Разбирает ярлыки Windows и Jump List через LECmd, JLECmd и ручной парсинг Shell Link. Нужен, когда надо доказать доступ к файлу после его удаления.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-lnk-file-and-jump-list-artifacts -a claude-code
Открыть на GitHub

Что делает analyzing-lnk-file-and-jump-list-artifacts

Скилл ведёт агента по форензике Windows-артефактов: ярлыки .lnk и списки Jump List хранят путь к цели, метки времени, серийный номер тома, NetBIOS-имя и MAC-адрес машины. Эти данные остаются на диске, даже если сам файл давно стёрт. Поэтому по ним восстанавливают, кто и когда открывал документ или запускал программу.

Внутри — разбор заголовка Shell Link (76 байт) по смещениям полей, таблица расположения ярлыков в профиле пользователя и таблица AppID для Automatic Destinations. Для разбора даны команды LECmd.exe и JLECmd.exe с выгрузкой в CSV и JSON, плюс скрипт на Python, который читает заголовок и переводит FILETIME в дату. Для работы нужны сами утилиты, Python 3.8+ с pylnk3 или LnkParse3 и копия образа или триаж-сбор с Windows-системы.

Скрипт из скилла проверяет размер заголовка и возвращает ошибку, если он не равен 0x4C — на битых или нестандартных ярлыках разбор через него не пойдёт. Остальные поля читаются по фиксированным смещениям, так что повреждённый файл лучше сначала прогнать через LECmd.

Какие задачи решает

  • доказать, что пользователь открывал файл, которого уже нет на диске
  • собрать таймлайн запуска программ по Jump List
  • вытащить NetBIOS-имя и MAC-адрес машины из TrackerDataBlock
  • разобрать заголовок Shell Link вручную по смещениям полей
  • выгрузить ярлыки из папки Recent в CSV для Timeline Explorer

Примеры запросов агенту

  • Разбери ярлыки из C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent через LECmd и выгрузи в CSV
  • Пропарси AutomaticDestinations через JLECmd и покажи, какие программы запускались
  • Разбери заголовок этого .lnk по смещениям и переведи метки времени из FILETIME

Как установить analyzing-lnk-file-and-jump-list-artifacts

1Через Skills CLI (Vercel)

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-lnk-file-and-jump-list-artifacts -a claude-code

2Вручную: положить файлы

~/.claude/skills/analyzing-lnk-file-and-jump-list-artifacts/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/analyzing-lnk-file-and-jump-list-artifacts/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о analyzing-lnk-file-and-jump-list-artifacts

Как установить analyzing-lnk-file-and-jump-list-artifacts в Claude?

Выполните npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-lnk-file-and-jump-list-artifacts -a claude-code. Файл скилла появится по пути ~/.claude/skills/analyzing-lnk-file-and-jump-list-artifacts/SKILL.md.

Что делает этот скилл?

Описывает разбор ярлыков Windows и Jump List: команды LECmd и JLECmd, структуру заголовка Shell Link и скрипт на Python для чтения меток времени. По этим артефактам устанавливают факт доступа к файлу или запуска программы.

Что нужно для работы скилла?

Утилиты LECmd и JLECmd от Eric Zimmerman, Python 3.8+ с pylnk3 или LnkParse3, а также образ или триаж-сбор с Windows-системы. Для просмотра CSV пригодится Timeline Explorer.

Исходный текст

SKILL.md · Apache-2.0
---
name: analyzing-lnk-file-and-jump-list-artifacts
description: Analyze Windows LNK shortcut files and Jump List artifacts with LECmd,
  JLECmd, and manual Shell Link Binary Format parsing to establish evidence of file
  access, program execution, and user activity that persists even after the target
  file is deleted. Use when investigating Windows user activity, reconstructing file-access
  or program-execution timelines, or examining recent/frequently-used file evidence
  in a forensic exam.
domain: cybersecurity
subdomain: digital-forensics
tags:
- lnk-files
- jump-lists
- lecmd
- jlecmd
- windows-forensics
- shell-link
- user-activity
- file-access
- program-execution
- recent-files
version: '1.0'
author: mahipal
license: Apache-2.0
nist_csf:
- RS.AN-03
- DE.AE-02
- RS.MA-01
mitre_attack:
- T1547.009
- T1204.002
- T1059.001
---

# Analyzing LNK File and Jump List Artifacts

## Overview

Windows LNK (shortcut) files and Jump Lists are critical forensic artifacts that provide evidence of file access, program execution, and user behavior. LNK files are created automatically when a user opens a file through Windows Explorer or the Open/Save dialog, storing metadata about the target file including its original path, timestamps, volume serial number, NetBIOS name, and MAC address of the host system. Jump Lists, introduced in Windows 7, extend this by maintaining per-application lists of recently and frequently accessed files. These artifacts persist even after the target files are deleted, making them invaluable for establishing that a user accessed specific files at specific times.


## When to Use

- When investigating security incidents that require analyzing lnk file and jump list artifacts
- When building detection rules or threat hunting queries for this domain
- When SOC analysts need structured procedures for this analysis type
- When validating security monitoring coverage for related attack techniques

## Prerequisites

- LECmd (Eric Zimmerman) for LNK file parsing
- JLECmd (Eric Zimmerman) for Jump List parsing
- Python 3.8+ with pylnk3 or LnkParse3 libraries
- Forensic image or triage collection from Windows system
- Timeline Explorer for CSV analysis

## LNK File Locations

| Location | Description |
|----------|-------------|
| `%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent\` | Recent files accessed |
| `%USERPROFILE%\Desktop\` | User-created shortcuts |
| `%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\` | Start Menu shortcuts |
| `%USERPROFILE%\AppData\Roaming\Microsoft\Office\Recent\` | Office recent documents |

## LNK File Structure

### Shell Link Header (76 bytes)

| Offset | Size | Field |
|--------|------|-------|
| 0x00 | 4 | HeaderSize (always 0x0000004C) |
| 0x04 | 16 | LinkCLSID (always 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 | FileSize of target |
| 0x38 | 4 | IconIndex |
| 0x3C | 4 | ShowCommand |
| 0x40 | 2 | HotKey |

### Key Forensic Fields in LNK Files

- **Target file timestamps**: Creation, access, modification times of the referenced file
- **Volume information**: Serial number, drive type, volume label
- **Network share information**: UNC path, share name
- **Machine identifiers**: NetBIOS name, MAC address (from TrackerDataBlock)
- **Distributed Link Tracking**: Machine ID and object GUID

## Analysis with EZ Tools

### LECmd - LNK File Parser

```powershell
# Parse all LNK files in Recent folder
LECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent" --csv C:\Output --csvf lnk_analysis.csv

# Parse a single LNK file with full details
LECmd.exe -f "C:\Evidence\Users\suspect\Desktop\Confidential.docx.lnk" --json C:\Output

# Parse LNK files with additional detail levels
LECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent" --csv C:\Output --csvf lnk_all.csv --all
```

### JLECmd - Jump List Parser

```powershell
# Parse Automatic Jump Lists
JLECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations" --csv C:\Output --csvf jumplists_auto.csv

# Parse Custom Jump Lists
JLECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations" --csv C:\Output --csvf jumplists_custom.csv

# Parse all jump lists with detailed output
JLECmd.exe -d "C:\Evidence\Users\suspect\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations" --csv C:\Output --csvf jumplists_auto.csv --ld
```

## Jump List Structure

### Automatic Destinations (automaticDestinations-ms)

These are OLE Compound files (Structured Storage) identified by AppID hash in the filename:

| AppID Hash | Application |
|-----------|-------------|
| 5f7b5f1e01b83767 | Windows Explorer Pinned/Frequent |
| 1b4dd67f29cb1962 | Windows Explorer Recent |
| 9b9cdc69c1c24e2b | Notepad |
| a7bd71699cd38d1c | Notepad++ |
| 12dc1ea8e34b5a6 | Microsoft Paint |
| 7e4dca80246863e3 | Control Panel |
| 1cf97c38a5881255 | Microsoft Edge |
| f01b4d95cf55d32a | Windows Explorer |
| 9d1f905ce5044aee | Microsoft Excel |
| a4a5324453625195 | Microsoft Word |
| d00655d2aa12ff6d | Microsoft PowerPoint |
| bc03160ee1a59fc1 | Outlook |

### Custom Destinations (customDestinations-ms)

Created when users pin items to application jump lists. These files contain sequential LNK entries.

## Python Analysis Script

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

FILETIME_EPOCH = datetime(1601, 1, 1)

def filetime_to_datetime(filetime_bytes: bytes) -> datetime:
    """Convert Windows FILETIME (100-ns intervals since 1601) to datetime."""
    ft = struct.unpack("<Q", filetime_bytes)[0]
    if ft == 0:
        return None
    return FILETIME_EPOCH + timedelta(microseconds=ft // 10)

def parse_lnk_header(lnk_path: str) -> dict:
    """Parse the Shell Link header from an LNK file."""
    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": "Invalid LNK header"}

    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
```

## Investigation Use Cases

### Evidence of File Access
1. Parse LNK files from Recent folder to identify accessed documents
2. Cross-reference with MFT timestamps and USN Journal entries
3. Note that LNK files persist even after target files are deleted

### Removable Media Access
1. LNK files referencing drive letters E:, F:, G: indicate removable media usage
2. Volume serial number in LNK identifies the specific device
3. MAC address in TrackerDataBlock identifies the source machine

### Network Share Activity
1. LNK files with UNC paths (\\server\share) indicate network file access
2. NetBIOS name identifies the remote server
3. Timestamps establish when access occurred

## Differences Between Windows 10 and Windows 11

Recent research (IEEE 2025) shows that Windows 11 produces different LNK and Jump List artifacts:
- Fewer automatic LNK files generated for certain file types
- Modified Jump List behavior for modern applications
- UWP/MSIX applications may not generate traditional Jump Lists
- Windows 11 Quick Access replaces some Recent functionality

## References

- Shell Link Binary File Format: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-shllink/
- Magnet Forensics LNK Analysis: https://www.magnetforensics.com/blog/forensic-analysis-of-lnk-files/
- Jump Lists Forensics 2025: https://www.cybertriage.com/blog/jump-list-forensics-2025/
- Eric Zimmerman's LECmd/JLECmd: https://ericzimmerman.github.io/

## Example Output

```text
$ 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/
```

© mahipal · Apache-2.0 · mukul975/Anthropic-Cybersecurity-Skills

Похожие скиллы

Всё по теме «Безопасность» →
shipping-artifacts phuryn Формирует набор обязательной документации для ИИ-проектов перед релизом. Помогает подготовить архитектуру, потоки доступов и карту тестов к аудиту безопасности. CX Codex +1 1 700установок supabase-audit-buckets-list yoanbernabeu Перечисляет все storage-бакеты проекта Supabase вместе с настройками и помечает публичные как риск. Пригодится перед проверкой прав доступа к файлам. CX Codex +1 474установок web-artifacts-builder официальный anthropics Скилл собирает сложные HTML-артефакты для claude.ai на React, Tailwind CSS и shadcn/ui. Подходит для интерфейсов с состоянием и маршрутизацией. 112 122установок artifacts-builder nexu-io Скилл помогает создавать сложные многокомпонентные HTML-артефакты для claude.ai. В работе опирается на React и Tailwind CSS с библиотекой shadcn/ui. CX Codex +1 2 800установок harvard-artifacts-collection-data-engineering reason-machines Скилл собирает данные из Harvard Art Museums API в MySQL и показывает их в Streamlit. Пригодится, когда нужен рабочий пример ETL от API до дашборда. CX Codex +1 1 900установок harvard-artifacts-collection-etl-analytics reason-machines Скилл для сборки ETL-пайплайна и аналитического дашборда на данных Harvard Art Museums API: Python, SQL и Streamlit. CX Codex +1 1 900установок

Из того же набора89

analyzing-memory-dumps-with-volatility Скилл помогает расследовать дампы оперативной памяти через Volatility 3: выявляет скрытые процессы, инъекции кода, открытые сокеты и извлекает пароли из RAM. CX Codex +1 354установок testing-oauth2-implementation-flaws Скилл для проверки OAuth 2.0 и OpenID Connect на перехват кода, подмену redirect URI, CSRF, утечку токенов и обход PKCE. CX Codex +1 350установок implementing-api-rate-limiting-and-throttling Скилл внедряет алгоритмы sliding window и token bucket через Redis, защищая эндпоинты API от перебора паролей и исчерпания ресурсов. CX Codex +1 348установок analyzing-malware-family-relationships-with-malpedia Скилл связывает псевдонимы вредоносных семейств, YARA-правила и группы угроз через Malpedia. Нужен для анализа цепочек загрузчик-нагрузка и атрибуции. CX Codex +1 349установок analyzing-macro-malware-in-office-documents Разбирает вредоносные VBA-макросы в документах Word, Excel и PowerPoint. Нужен для проверки подозрительных вложений и восстановления цепочки атаки. CX Codex +1 336установок testing-for-business-logic-vulnerabilities Скилл помогает вручную искать ошибки бизнес-логики в веб-приложениях через Burp Suite. Нужен для проверки цен, многошаговых процессов и прав доступа. CX Codex +1 333установок testing-websocket-api-security Проверяет безопасность WebSocket API: аутентификацию при рукопожатии, токены и уязвимость к CSWSH. Пригодится при аудите защищённости сокетов. CX Codex +1 328установок analyzing-mft-for-deleted-file-recovery Скилл для криминалистического анализа NTFS: разбирает $MFT, $LogFile, $UsnJrnl и slack space, чтобы восстановить метаданные и содержимое удалённых файлов. CX Codex +1 326установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой