Ярлики 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 і часові позначки трекера залишаються абсолютними часовими позначками, які можна перетворювати.
Стратегія розслідування¶
- Перш ніж інтерпретувати поля цілі, вивчіть розташування та часові позначки вихідного файлу.
- Відтворіть фактичний запуск на основі шляху до цілі,
Args,WorkingDirectoryі блоків середовища. - Шукайте посилання MFT на ціль, серійний номер тому, мережевий шлях, droid-ідентифікатори, MachineID і MAC-адресу в інших доказах.
- Перевірте Prefetch і журнали подій на ознаки виконання; перевірте Jump Lists/RecentDocs на ознаки взаємодії користувача.
- Для шкідливих вкладень зберігайте додані дані, обчислюйте хеш і аналізуйте сам файл LNK.