Файлы трассировки, или Prefetch-файлы, появились в Windows еще со времен XP. С тех пор они помогали специалистам по цифровой криминалистике и реагированию на компьютерные инциденты находить следы запуска программ, в том числе вредоносных. Ведущий специалист по компьютерной криминалистике Group-IB Олег Скулкин рассказывает, что можно найти с помощью Prefetch-файлов и как это сделать.

Prefetch-файлы хранятся в каталоге %SystemRoot%\Prefetch и служат для ускорения процесса запуска программ. Если мы посмотрим на любой из этих файлов, то увидим, что его имя состоит из двух частей: имени исполняемого файла и контрольной суммы от пути к нему, состоящей из восьми символов.

Prefetch-файлы содержат массу полезной с криминалистической точки зрения информации: имя исполняемого файла, количество его запусков, списки файлов и каталогов, с которыми взаимодействовал исполняемый файл, и, разумеется, временные метки. Обычно криминалисты используют дату создания того или иного Prefetch-файла для определения даты первого запуска программы. Кроме того, данные файлы хранят дату ее последнего запуска, а начиная с версии 26 (Windows 8.1) — временные метки семи последних запусков.

Давайте возьмем один из Prefetch-файлов, извлечем из него данные средствами PECmd Эрика Циммермана и посмотрим на каждую их часть. Для демонстрации я извлеку данные из файла CCLEANER64.EXE-DE05DBE1.pf.

Итак, начнем сверху. Разумеется, у нас есть временные метки создания, модификации и доступа к файлу:


За ними следуют имя исполняемого файла, контрольная сумма пути к нему, размер исполняемого файла, а также версия Prefetch-файла:


Так как мы имеем дело с Windows 10, далее мы увидим количество запусков, дату и время последнего запуска и еще семь временных меток, указывающих на предыдущие даты запуска:


За ними следует информация о томе, включая его серийный номер и дату создания:


И последнее, но не менее важное — список каталогов и файлов, с которыми взаимодействовал исполняемый файл:


Итак, каталоги и файлы, с которыми взаимодействовал исполняемый файл, — это как раз то, на чем я хочу сегодня сосредоточиться. Именно эти данные позволяют специалистам по цифровой криминалистике, реагированию на компьютерные инциденты или проактивному поиску угроз установить не только факт исполнения того или иного файла, но и, в некоторых случаях, — реконструировать конкретные тактики и техники атакующих. Сегодня злоумышленники достаточно часто используют инструменты для безвозвратного удаления данных, например, SDelete, поэтому способность восстанавливать хотя бы следы использования тех или иных тактик и техник просто необходима любому современному защитнику — компьютерному криминалисту, специалисту по реагированию на инциденты, ThreatНunter-эксперту.

Давайте начнем с тактики Initial Access (TA0001) и самой популярной техники — Spearphishing Attachment (T1193). Некоторые киберпреступные группы относятся к выбору таких вложений довольно творчески. Например, группа Silence использовала для этого файлы в формате CHM (Microsoft Compiled HTML Help). Таким образом, перед нами еще одна техника — Compiled HTML File (T1223). Такие файлы запускаются с помощью hh.exe, следовательно, если мы извлечем данные из его Prefetch-файла, то узнаем, какой именно файл был открыт жертвой:


Продолжим работать с примерами из реальных дел и перейдем к следующей тактике Execution (TA0002) и технике CSMTP (T1191). Microsoft Connection Manager Profile Installer (CMSTP.exe) может использоваться атакующими для запуска вредоносных сценариев. Хороший пример — группа Cobalt. Если мы извлечем данные из Prefetch-файла cmstp.exe, то снова сможем узнать, что именно было запущено:


Еще одна популярная техника — Regsvr32 (T1117). Regsvr32.exe также часто используется атакующими для запуска. Вот и еще один пример от группы Cobalt: если мы извлечем данные из Prefetch-файла regsvr32.exe, то снова увидим, что было запущено:


Следующие тактики — Persistence (TA0003) и Privilege Escalation (TA0004), а также Application Shimming (T1138) в качестве техники. Эта техника использовалась Carbanak/FIN7 для закрепления в системе. Обычно для работы с базами данных с информацией о совместимости программ (.sdb) используется sdbinst.exe. Следовательно, Prefetch-файл данного исполняемого файла может помочь нам узнать имена таких баз данных и их расположение:


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

Давайте взглянем на один из наиболее типичных примеров продвижения по сети (TA0008) — PsExec, использующего административные общие ресурсы (T1077). Служба с именем PSEXECSVC (разумеется, может использоваться и любое другое имя, если атакующие использовали параметр -r) будет создана на целевой системе, следовательно, если мы извлечем данные из Prefetch-файла, то увидим, что было запущено:


Закончу я, пожалуй, на том, с чего начинал — удаление файлов (T1107). Как я уже отмечал, многие атакующие используют SDelete для безвозвратного удаления файлов на разных стадиях жизненного цикла атаки. Если мы взглянем на данные из Prefetch-файла sdelete.exe, то увидим, что именно было удалено:



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