Перейти до змісту

Ярлики LNK

Що таке файли LNK

Файли Windows Shell Link (.lnk) описують ціль разом з аргументами запуску, робочим каталогом, значком, станом вікна, метаданими цілі, відомостями про том і мережу, елементами простору імен оболонки та необов'язковими ідентифікаторами розподіленого відстеження посилань (distributed link tracking). Windows і програми створюють їх у Recent Items, Desktop, Start Menu та інших розташуваннях; зловмисники також безпосередньо доставляють шкідливі ярлики.

Файл LNK у папці Recent може підтверджувати взаємодію користувача з ціллю, якої вже не існує, зокрема на знімному диску або мережевій спільній папці. Довільний файл LNK може існувати, навіть якщо по ньому жодного разу не клацали.

Найобґрунтованіший висновок: ярлик було створено/оновлено з записаним контекстом цілі. Чи підтверджує він використання, визначають його розташування та суміжні артефакти.

Розташування та збирання

%APPDATA%\Microsoft\Windows\Recent\*.lnk
%USERPROFILE%\Desktop\*.lnk
%APPDATA%\Microsoft\Windows\Start Menu\Programs\...
%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\...

Шукайте в усьому профілі користувача, а також у зібраних архівах і вмісті електронної пошти, а не лише в Recent. Зберігайте власні часові позначки та шлях вихідного файлу, оскільки розташування змінює інтерпретацію.

Застереження для аналітика

  • Часові позначки цілі, розмір, посилання MFT і дані тому — це знімки, збережені у файлі LNK; це не власні метадані файлу ярлика, і вони можуть бути застарілими.
  • MachineID, MAC-адреса та час створення трекера описують контекст розподіленого відстеження посилань, зазвичай комп'ютер, який створив/оновив посилання, — не обов'язково комп'ютер, на якому ви його знайшли.
  • Вузол UUID, схожий на MAC-адресу, може походити від віртуалізації, рандомізації або немережевих ідентифікаторів.
  • Args можуть зробити нешкідливий виконуваний файл (powershell.exe, rundll32.exe, mshta.exe) небезпечним.
  • Рядки ANSI потребують кодової сторінки вихідної системи; для багатьох японських посилань використовуйте --code-page 932.
  • Ярлик можна сфабрикувати або скопіювати. Не ототожнюйте його поля з виконанням без підтвердження з Prefetch, Jump List, RecentDocs, журналів подій або інших джерел.

Аналіз за допомогою Juntei

Usage: juntei parse-file lnk <INPUT> [OPTIONS]

Input:
  -d, --directory <DIR>  Recursively find *.lnk
  -f, --file <FILE>      Parse one shortcut
      --code-page <CP>   ANSI code page (default 1252; Japanese commonly 932)

Output:
  -o, --output <FILE>       Save records
  -t, --output-type <TYPE>  csv, json, or jsonl
juntei parse-file lnk -d evidence/ -o lnk.csv
juntei parse-file lnk -d evidence/ --code-page 932 -o lnk-ja.csv
juntei parse-file lnk -f suspicious.lnk -t jsonl | jq .

Поля виводу CSV

Група полів Поля та їх інтерпретація
Джерело SourceFile, SourceCreated, SourceModified, SourceAccessed: шлях до ярлика та часові позначки файлової системи хоста. Вони відокремлені від часових позначок цілі.
Часові позначки цілі TargetCreated, TargetModified, TargetAccessed: знімки, записані у файлі LNK; корисні історичні підказки, а не поточні метадані цілі.
Основні дані цілі FileSize, RelativePath, WorkingDirectory, FileAttributes, HeaderFlags: записаний контекст цілі/запуску. Аргументи можуть змінювати значення.
Том DriveType, VolumeSerialNumber, VolumeLabel: визначають контекст (фіксований/знімний/мережевий диск) і дають змогу зіставляти інші ярлики.
Шляхи LocalPath, NetworkPath, CommonPath, TargetIDAbsolutePath: взаємодоповнювальні представлення шляху. Перевіряйте розбіжності та шляхи простору імен оболонки.
Поведінка запуску Args, ShowWindow, HotKey, ShimLayer, DarwinId: як оболонка запускає або налаштовує ціль. Args має критичне значення.
Ідентичність NTFS TargetMFTEntryNumber, TargetMFTSequenceNumber: посилання на ціль на момент створення посилання; зіставляйте обидва значення з $MFT.
Відстеження MachineID, MachineMACAddress, TrackerCreatedOn, VolumeDroid, FileDroid, VolumeDroidBirth, FileDroidBirth: розподілене відстеження посилань. Використовуйте для зіставлення, а не як самостійну підставу для атрибуції.
Додаткові блоки ExtraBlocksPresent: перелік наявних необов'язкових структур; пояснює, які інші поля підтримуються.
Відображення Name, IconLocation, IconIndex, IconEnvironment, EnvironmentVariables: дані відображення та ціль із розгорнутими змінними середовища. Зловмисники можуть використовувати оманливі назви/значки.
Папки оболонки KnownFolder, SpecialFolder: декодовані ідентифікатори папок оболонки Windows.
Мережа NetworkDevice, NetworkProvider: контекст мережевої спільної папки/пристрою та постачальника.
Кодування ConsoleCodePage: записана кодова сторінка консолі, якщо вона є; не пов'язана з параметром парсера --code-page.
Кінцеві дані AppendedBytes: байти після логічного кінця. Неочікувані дані можуть свідчити про контрабанду даних (smuggling) або пошкоджені файли.
Перевірка Problems: пошкодження, усічення, неузгоджені блоки або обмеження декодування. Враховуйте під час перевірки.

JSON/JSONL додатково зберігає кожен елемент target-ID (тип, назва, GUID, часові позначки FAT і посилання MFT), усі блоки додаткових даних, властивості сховища властивостей, параметри консолі та необроблені структурні зв'язки. Для підозрілого ярлика використовуйте саме цей формат, а не покладайтеся лише на плаский рядок CSV. Вкладені часові позначки TargetItems походять із годинників елементів оболонки FAT без збереженого зміщення. Їх застаріле відображення із Z не доводить, що це UTC; auto-parse --timezone зберігає їх без змін. Значення FILETIME цілі в заголовку LNK і часові позначки трекера залишаються абсолютними часовими позначками, які можна перетворювати.

Стратегія розслідування

  1. Перш ніж інтерпретувати поля цілі, вивчіть розташування та часові позначки вихідного файлу.
  2. Відтворіть фактичний запуск на основі шляху до цілі, Args, WorkingDirectory і блоків середовища.
  3. Шукайте посилання MFT на ціль, серійний номер тому, мережевий шлях, droid-ідентифікатори, MachineID і MAC-адресу в інших доказах.
  4. Перевірте Prefetch і журнали подій на ознаки виконання; перевірте Jump Lists/RecentDocs на ознаки взаємодії користувача.
  5. Для шкідливих вкладень зберігайте додані дані, обчислюйте хеш і аналізуйте сам файл LNK.

Додаткові відомості