Артефакты активности: Prefetch, ShellBags, LNK, Jump Lists

Даже если пользователь удалил файлы и почистил историю, Windows оставляет «отпечатки» запусков программ и открытых папок. Эти артефакты позволяют реконструировать действия по таймлайну.

Артефакт активности — побочный след, который ОС создаёт автоматически при обычной работе пользователя (запуск программ, открытие папок, недавние файлы), не предназначенный для хранения, но крайне ценный для расследования.

Материал образовательный и оборонительный: разбираем артефакты на своих системах и в учебной лаборатории, чтобы понимать, как реконструируют события при легальном расследовании инцидента. Анализ чужих машин допустим только при наличии правовых оснований.

Зачем это знать следователю

Главный вопрос расследования — «что человек (или вредонос) реально делал на машине». Журналы можно отключить, файлы — стереть, но артефакты Prefetch, ShellBags, LNK и Jump Lists создаются прозрачно для пользователя и потому часто переживают попытки замести следы. Из них собирают таймлайн действий: что запускали, какие папки открывали, к каким документам обращались.

Сила этих артефактов — в избыточности и независимости источников. Один и тот же факт (открыли документ с флешки) может подтвердиться сразу из нескольких мест: LNK-ярлык хранит путь и серийный номер тома, ShellBag — что открывали папку на этом носителе, Jump List — что файл открывали конкретным приложением. Когда несколько независимых артефактов сходятся на одном выводе, доказательство становится устойчивым к возражениям защиты «это случайность». Именно поэтому эксперт не довольствуется одним источником, а ищет перекрёстное подтверждение — и в этом же ценность артефактов для Blue Team: подчистить все следы разом атакующему гораздо труднее, чем один журнал.

Prefetch: доказательство запуска

Чтобы ускорять старт приложений, Windows кладёт в C:\Windows\Prefetch файлы ИМЯ-ХЭШ.pf. Для следователя это прямая улика «программа запускалась»: внутри — имя исполняемого файла, время последнего запуска (и до 8 предыдущих в новых версиях), счётчик запусков и список файлов/каталогов, к которым программа обращалась.

C:\Windows\Prefetch\NOTEPAD.EXE-9B5DDE2D.pf
   Последний запуск : 2026-06-20 14:03:11
   Запусков всего   : 7
   Том              : \VOLUME{...}

Даже если сам .exe удалён, .pf-файл подтверждает факт и время его работы. Защитная сторона использует это при разборе атак: появление Prefetch для неизвестного бинаря — повод для расследования.

ShellBags: какие папки открывали

Когда пользователь открывает папку в Проводнике и меняет вид (значки/таблица, размер окна), Windows запоминает это в ShellBags — внутри UsrClass.dat (разделы BagMRU/Bags). Ценность в том, что запись остаётся даже после удаления самой папки или флешки. Эксперт восстанавливает дерево когда-то открытых каталогов, включая пути на съёмных носителях и в сетевых ресурсах — это показывает, куда «заглядывал» пользователь.

LNK: ярлыки как свидетели

При открытии документа Windows автоматически создаёт .lnk-ярлык в ...\Recent\. Формат LNK хранит богатые метаданные: полный путь к целевому файлу, его размер, метки времени, серийный номер тома и иногда имя машины-источника. Так по ярлыку устанавливают, что конкретный файл существовал и открывался — даже если оригинал давно удалён с диска или находился на внешнем носителе.

Jump Lists: история по приложениям

Jump Lists (список «последних» в контекстном меню значка на панели задач) лежат в ...\AutomaticDestinations\ и CustomDestinations\. Файл назван по AppID приложения и внутри устроен как составной OLE-контейнер со встроенными LNK-записями. Из него извлекают, какие файлы открывались конкретной программой и когда — например, какие документы открывал Word или какие адреса посещал браузер.

Как это работает под капотом

Все четыре артефакта объединяет то, что ОС пишет их ради удобства и скорости, а не для аудита, — поэтому пользователь о них обычно не думает. LNK и Jump Lists используют формат Shell Link и Compound File Binary; ShellBags хранят бинарные ITEMIDLIST (PIDL) — закодированные пути; Prefetch в свежих версиях сжат алгоритмом MAM. Сопоставляя метки времени из разных артефактов, эксперт выстраивает связную картину: «в 14:03 запустили программу → в 14:05 открыли папку на флешке → в 14:06 открыли оттуда документ».

Небольшая иллюстрация на стандартном Python — как из набора событий с разметкой времени собирают единый таймлайн:

events = [
    ("14:06", "LNK", "открыт report.docx с диска E"),
    ("14:03", "Prefetch", "запуск WINWORD.EXE"),
    ("14:05", "ShellBag", "открыта папка secret на диске E"),
]

# Криминалистический таймлайн — это события, отсортированные по времени.
for when, source, what in sorted(events):
    print(when, "|", source, "|", what)

Вывод:

14:03 | Prefetch | запуск WINWORD.EXE
14:05 | ShellBag | открыта папка secret на диске E
14:06 | LNK | открыт report.docx с диска E

Сохранение доказательств

Эти артефакты разбросаны по системным и пользовательским каталогам, и многие живут внутри кустов реестра. Поэтому их извлекают из криминалистического образа целиком, фиксируют хэши и анализируют офлайн инструментами вроде PECmd (Prefetch), ShellBags Explorer, LECmd (LNK) и JLECmd (Jump Lists). Каждое действие — в журнал расследования: цепочка хранения должна показывать, что артефакты не изменялись с момента изъятия.

Как защититься

С позиции Blue Team те же следы — инструмент обнаружения и контроля:

  • Собирайте Prefetch и ShellBags при разборе инцидента — они выдают запуск «бесфайловых» и уже удалённых вредоносов.
  • Помните, что артефакты раскрывают приватность: при выводе техники из эксплуатации очищайте Recent/Jump Lists штатными средствами, а носители — затиранием.
  • Контролируйте, что включён сбор Prefetch (на серверах его иногда отключают) — иначе при инциденте улик будет меньше.
  • Централизуйте логи и артефакты с конечных точек (EDR), чтобы атакующий не смог локально подчистить таймлайн.

Итоги

  • Prefetch доказывает факт, время и число запусков программы — даже удалённой.
  • ShellBags хранят историю открытых папок, переживая удаление каталога или извлечение флешки.
  • LNK-ярлыки и Jump Lists раскрывают, какие файлы и какими приложениями открывались, с путями и метками времени.
  • Сопоставление меток времени из разных артефактов даёт связный таймлайн действий пользователя.
  • Извлечение — из образа, с хэшированием и документированной цепочкой хранения.
Проверьте себя
1. Что доказывает наличие .pf-файла в папке Prefetch?
AЧто программа установлена, но никогда не запускалась
BЧто соответствующая программа запускалась (с временем и счётчиком запусков)
CЧто файл был удалён без возможности восстановления
DЧто пользователь админ
2. Чем ShellBags особенно ценны для следователя?
AОни хранят пароли от папок
BЗапись об открытой папке сохраняется даже после удаления самой папки или извлечения флешки
CОни шифруют историю просмотров
DОни доступны только администратору домена