ОБСУЖДЕНИЕ

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

0 ответов 54
Автор темы
Win Triniti.webp


Пользователь удалил файл, очистил историю и утверждает, что ничего не запускал. Для обычного администратора на этом расследование может закончиться. Для специалиста по компьютерной криминалистике это только начало.
Операционная система оставляет информацию о работе пользователя в разных местах. Где-то сохраняется путь к файлу, где-то время запуска программы, где-то сведения о подключенном USB-устройстве. Отдельно эти записи дают ограниченную картину. Если сопоставить их по времени, пути и другим признакам, можно восстановить последовательность действий значительно точнее.

В этой статье разберем несколько артефактов Windows и соберем из них единый сценарий расследования.

Исходная ситуация​

Представим рабочую станцию сотрудника, на которой произошел инцидент.

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

Сам файл на компьютере уже отсутствует.

Сотрудник утверждает, что:
  • USB-накопитель к компьютеру не подключал;
  • подозрительную программу не запускал;
  • документ не открывал;
  • после инцидента ничего не удалял.
Есть образ диска. Время предполагаемого инцидента известно: с 17:55 до 18:00.

Задача специалиста состоит не в том, чтобы найти один «волшебный» артефакт, который подтвердит или опровергнет слова пользователя. Нужно собрать последовательность событий из независимых источников.

1. UserAssist: что запускалось через интерфейс Windows​

​

UserAssist находится в профиле пользователя:

HKEY_CURRENT_USER\
Software\Microsoft\Windows\
CurrentVersion\Explorer\UserAssist


В этой ветке Windows хранит сведения о некоторых действиях пользователя, связанных с запуском программ и объектов через графическую оболочку.

Названия отдельных записей закодированы ROT13. Например:
PPyraner64.rkr
после декодирования превращается в:
CCleaner64.exe
В зависимости от версии Windows и конкретного объекта запись может содержать счетчик запусков и сведения о последнем выполнении.

Для анализа удобно использовать Registry Explorer.

При расследовании UserAssist полезен как один из источников подтверждения запуска приложения. При этом отсутствие записи само по себе ничего не доказывает. Программа могла быть запущена другим способом, данные могли быть изменены или соответствующий объект мог не попасть в этот механизм.

Практический смысл: UserAssist отвечает на вопрос, есть ли в профиле пользователя след запуска определенного объекта через оболочку Windows.

2. MUICache: следы программ в профиле пользователя​

​

MUICache также находится в пользовательском профиле и может содержать сведения о приложениях и их отображаемых именах.


Для расследования интерес представляют записи, связанные с подозрительными исполняемыми файлами и путями.

Например, на компьютере может не оказаться самого файла:

C:\Users\User\Desktop\portable.exe


но запись, связанная с этим приложением, сохранится в профиле.

MUICache нельзя рассматривать как самостоятельное доказательство запуска. Это дополнительный источник, который имеет смысл сопоставлять с UserAssist, Prefetch, AmCache и другими артефактами.

Особенно полезен такой подход при анализе программ, которые не устанавливались в систему обычным способом.

3. ShimCache: информация о файлах и путях​


AppCompatCache, который часто называют ShimCache, хранится в SYSTEM hive.

Для его разбора можно использовать AppCompatCacheParser.

Пример команды:
AppCompatCacheParser.exe --csv "C:\Report" -f "C:\Evidence\SYSTEM"
На выходе получается таблица с информацией об обнаруженных записях.

В расследовании может встретиться, например:
C:\Users\User\Desktop\portable.exe
или:
E:\Tools\scanner.exe
Второй вариант особенно интересен, если E: ранее соответствовал внешнему накопителю.

При этом здесь важно не сделать распространенную ошибку.

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

Именно поэтому ShimCache лучше рассматривать как элемент общей цепочки.

4. AmCache: когда нужно идентифицировать конкретный файл​


AmCache находится по пути:
C:\Windows\AppCompat\Programs\AmCache.hve
Это отдельный улей реестра, который содержит информацию о программах и файлах.

Один из важных признаков, который можно получить из AmCache, это SHA-1 хэш файла.

Предположим, в ShimCache найден:
C:\Users\User\Downloads\scanner.exe
Сам файл давно удален. По одной записи определить, что именно находилось по этому пути, затруднительно.

Если соответствующая информация сохранилась в AmCache, можно получить дополнительные сведения о файле и его хэше.

Дальше уже можно сравнить хэш с известными базами или использовать внутренние средства анализа организации.

Получается другая последовательность:
ShimCache
↓
путь к файлу
↓
AmCache
↓
характеристики файла
↓
SHA-1
↓
идентификация образца
Это гораздо полезнее, чем просто искать в системе имя scanner.exe.

5. Prefetch: один из основных источников при анализе запуска​

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

Файлы находятся в:

C:\Windows\Prefetch

Для анализа используется PECmd.

Пример:
PECmd.exe -d "C:\Evidence\Prefetch" --csv "C:\Report"
В результате можно получить сведения о Prefetch-файлах, в том числе время выполнения, количество запусков и другие связанные данные.

Если расследуется запуск:
portable.exe
и найден соответствующий Prefetch, это уже другой тип свидетельства по сравнению с одной записью ShimCache.

При этом необходимо учитывать состояние системы и особенности работы Prefetch. Его отсутствие нельзя автоматически интерпретировать как доказательство того, что программа никогда не запускалась.

​

6. LNK: путь к файлу, который уже удален​

​

LNK-файлы часто остаются в пользовательском профиле после работы с файлами.

Для анализа можно использовать LECmd.

В зависимости от конкретного файла LNK содержит сведения о целевом объекте, включая путь, временные метки, размер, информацию о томе и другие данные.

Пример:
LECmd.exe -d "C:\Evidence\Recent" --csv "C:\Report"
Допустим, исследователь получает запись:
Report.lnk
Target: E:\Documents\Report.docx
Самого Report.docx на компьютере уже нет.

LNK не восстанавливает содержимое документа. Он дает информацию о том, какой объект был связан с ярлыком и какие сведения о нем сохранились.

Для расследования это может быть существенным признаком, особенно если путь указывает на внешний накопитель.

7. USBSTOR: какой накопитель подключался​


Историю USB-устройств можно искать в реестре:
HKEY_LOCAL_MACHINE\
SYSTEM\
CurrentControlSet\
Enum\
USBSTOR
Здесь могут сохраняться сведения о подключавшихся USB Mass Storage устройствах, включая производителя, модель и серийный номер.

Например:
Vendor: SanDisk
Product: Ultra Fit
Serial Number: 4C53000123456789
Само наличие записи говорит о подключении соответствующего устройства в прошлом.

Но и здесь нельзя перепрыгивать через несколько логических ступеней.

USBSTOR не говорит, какой именно файл пользователь скопировал на накопитель.

Чтобы связать устройство с конкретным действием, нужны другие источники: системные события, MountedDevices, LNK, ShellBags, Jump Lists, файловая система и временные метки.

8. Jump Lists: какие файлы открывались через приложения​


Jump Lists хранят историю объектов, связанных с определенными приложениями.

Наиболее интересны файлы:
*.automaticDestinations-ms
*.customDestinations-ms
Для разбора используется JLECmd.

Пример:
JLECmd.exe -d "C:\Evidence\JumpLists" --csv "C:\Report"
В результате можно получить записи, связанные с недавно использовавшимися файлами.

Например:
Application: Microsoft Word
File: E:\Documents\Report.docx
Если одновременно существует LNK с тем же путем, совпадают временные признаки, а USBSTOR показывает подключение соответствующего накопителя, отдельные записи начинают складываться в одну последовательность.

9. Почему один артефакт ничего не решает​

​

Представим, что исследователь обнаружил только ShimCache:

E:\Tools\scanner.exe


Можно сказать:

Windows сохранила сведения о файле scanner.exe, который находился на диске E:.

Но нельзя без дополнительных данных написать:

Пользователь запустил scanner.exe.

Теперь добавим Prefetch:
SCANNER.EXE-XXXX.pf
Last Run Time: 17:56:12
Появился дополнительный признак выполнения.

Добавим USBSTOR:
SanDisk Ultra Fit
Serial: 4C53000123456789
Теперь известно, что соответствующий тип накопителя подключался.


Добавим LNK:
Target: E:\Tools\scanner.exe
И Jump List:
Microsoft Word
E:\Documents\Report.docx
Наконец, системный журнал показывает подключение USB-устройства около 17:55.

Каждая запись отвечает только на свою часть вопроса:

АртефактЧто можно установить
USBSTORсведения о подключавшемся USB-накопителе
UserAssistзаписи, связанные с использованием объектов через оболочку
MUICacheсведения о программах в пользовательском профиле
ShimCacheсведения о файлах и путях, сохраненные механизмом совместимости
AmCacheдополнительные сведения о файлах, включая хэш в соответствующих записях
Prefetchсведения, связанные с выполнением приложения
LNKданные о целевом объекте ярлыка
Jump Listsисторию объектов, связанных с приложением

Поэтому форензика редко строится вокруг одного ключа реестра или одного файла.

10. Собираем события в единую временную шкалу​

​

Самая полезная часть анализа начинается после извлечения отдельных артефактов.

Допустим, получилась такая последовательность:
17:55:03
USB-устройство подключено

17:55:15
Появляется обращение к каталогу на внешнем носителе

17:55:40
Зафиксирована запись, связанная с файлом Report.docx

17:56:12
Prefetch содержит сведения о запуске scanner.exe

17:57:04
В Jump List появляется Report.docx

17:58:20
LNK указывает на объект на внешнем накопителе

18:00:11
USB-устройство отключено

Отдельно каждая строка имеет ограниченное значение.

Вместе они дают рабочую гипотезу о последовательности действий.

Именно поэтому при расследовании имеет смысл создавать super-timeline, в которой события из разных источников приведены к единому времени и представлены в одной таблице.

Простейший вариант:

ВремяИсточникСобытие
17:55:03System Log / USBПодключено USB-устройство
17:55:15ShellBags / Jump ListОбращение к каталогу
17:55:40LNKОбнаружена запись о файле
17:56:12PrefetchЗапуск приложения
17:57:04Jump ListРабота с документом
18:00:11USB / System LogУстройство отключено

Такой формат позволяет увидеть не отдельные артефакты, а последовательность событий.

11. Что делать, если пользователь пытался удалить следы​


Удаление исходного файла не означает автоматического удаления всех связанных артефактов.

Пользователь мог удалить:

E:\Documents\Report.docx


но на компьютере могли остаться:
  • LNK;
  • запись в Jump List;
  • сведения в Prefetch;
  • записи в реестре;
  • данные о подключенном USB-устройстве;
  • другие записи файловой системы.
Кроме того, сам факт запуска программы очистки также может оставить следы.

Поэтому обнаружение утилиты очистки нельзя автоматически трактовать как доказательство сокрытия инцидента. Нужно установить, что именно запускалось, когда это произошло и какие артефакты были затронуты.

Если до предполагаемого события присутствует нормальная история работы системы, а сразу после него одновременно исчезает несколько независимых источников, это уже повод отдельно исследовать возможное противодействие анализу.

12. Как не ошибиться в выводах​


Факт:
В SYSTEM обнаружена запись USB Mass Storage
SanDisk Ultra Fit, Serial Number XXXXX.

Факт:
В Prefetch обнаружена запись scanner.exe
с соответствующим временем выполнения.

Факт:
LNK содержит путь к scanner.exe на диске E:.


Вывод:
Полученные артефакты согласуются между собой и указывают
на использование приложения scanner.exe с внешнего носителя
в исследуемый период.

Это отличается от формулировки:

Сотрудник Иванов запустил scanner.exe с флешки.


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

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

В исходном материале эта граница также выделена отдельно: фактические наблюдения необходимо отделять от выводов и вероятностных оценок.

13. Минимальный набор инструментов​


Для базового анализа рассмотренных артефактов достаточно нескольких инструментов из набора Eric Zimmerman.

ЗадачаИнструмент
Анализ реестраRegistry Explorer
LNKLECmd
Jump ListsJLECmd
PrefetchPECmd
ShimCacheAppCompatCacheParser
AmCacheAmcacheParser
Образ диска
↓
Извлечение артефактов
↓
Registry Explorer
↓
LECmd / JLECmd
↓
PECmd
↓
AppCompatCacheParser
↓
AmcacheParser
↓
Сведение временных меток
↓
Super-timeline
↓
Выводы
На практике эти инструменты используются не последовательно по принципу «открыли один, потом второй». Исследователь возвращается к разным источникам по мере появления новых признаков.

Например, найденный в LNK путь к E:\Tools\scanner.exe становится поисковым признаком для анализа USBSTOR, AmCache, Prefetch и других источников.

14. Небольшая лабораторная работа​


Для самостоятельной практики можно создать тестовую машину Windows и провести эксперимент.

Шаг 1. Подготовить файл​


Создайте каталог:

C:\ForensicsLab

Поместите туда тестовый исполняемый файл.

Шаг 2. Запустить программу​


Запустите ее обычным способом через Проводник.

После этого проверьте:

UserAssist
Prefetch
MUICache
AmCache
ShimCache

Шаг 3. Создать документ​

​

Откройте тестовый документ через Word или другой редактор.

После этого исследуйте:

Recent
Jump Lists
LNK

Шаг 4. Использовать внешний накопитель​


Подключите USB-накопитель и выполните несколько действий с тестовыми файлами.

После отключения накопителя проверьте:
USBSTOR
MountedDevices
LNK
Jump Lists
ShellBags

Шаг 5. Удалить файлы​


Удалите тестовые объекты и повторите анализ.

Задача эксперимента состоит не в том, чтобы доказать существование «неудаляемых следов». Нужно посмотреть, какие артефакты действительно сохраняются на конкретной версии Windows и в конкретном сценарии.

Что в итоге остается от одного действия​


Возьмем простую последовательность:

Пользователь подключил USB
↓
Открыл каталог
↓
Запустил программу
↓
Открыл документ
↓
Закрыл приложение
↓
Удалил файл
↓
Отключил USB

На диске может остаться не сам документ, а набор разрозненных записей.

Одна будет связана с USB-устройством.

Другая с путем к файлу.

Третья с запуском приложения.

Четвертая с недавно открытым документом.

Пятая с временными характеристиками.

Задача специалиста состоит в том, чтобы проверить, относятся ли эти записи к одному событию.

В этом и заключается практическая ценность Windows-артефактов. Они не дают готового протокола действий пользователя. Исследователь получает набор технических следов и восстанавливает последовательность событий на их основе.

Чем больше независимых источников согласуются между собой, тем обоснованнее становится вывод.

А если источники противоречат друг другу, это не повод выбирать удобную версию. Такое противоречие само становится частью расследования.