Исследование

Король умер, да здравствует новый король! EOL Windows 10 и криминалистические артефакты Windows 11

Введение

Windows 11 вышла четыре года назад, но получила довольно слабое распространение в корпоративной среде. По статистике, основанной на данных расследований глобальной команды экстренного реагирования на киберинциденты (GERT), в начале 2025 года Windows 7, которая не поддерживается с 2020-го, встречалась у заказчиков лишь немногим реже, чем новейшая ОС. Большинство же систем до сих пор работает под управлением Windows 10.

Основные версии Windows, присутствующие в инфраструктуре организаций. Статистика основана на данных команды экстренного реагирования на киберинциденты (GERT) (скачать)

При этом самая распространенная ОС вышла более 10 лет назад, и с 14 октября 2025 года Microsoft перестает ее поддерживать, а значит, мы так или иначе будем наблюдать рост числа систем под управлением Windows 11 в организациях, которым оказываем услуги по расследованию инцидентов. Поэтому мы решили поделиться кратким обзором изменений в криминалистических артефактах в этой системе, который может пригодиться нашим коллегам по цеху. Описанные артефакты актуальны для Windows 11 24H2 — последней версии ОС на момент написания статьи.

Нововведения в Windows 11

Recall

Функцию Recall впервые представили в мае 2024 года. Она позволяет вспоминать все, что делал пользователь на компьютере за последние месяцы. Работает она следующим образом: каждые несколько секунд система делает снимки всего экрана. Затем локальный искусственный интеллект анализирует их в фоновом режиме, извлекая всю полезную информацию, которая впоследствии сохраняется в базу данных. По этой базе ведется умный поиск. С мая 2025 года функция Recall широко доступна на компьютерах, имеющих NPU (специальный чип для ИИ-вычислений, в настоящее время совместимый лишь с процессорами архитектуры ARM).

Microsoft Recall — это определенно одна из самых громких и спорных из заявленных функций Windows 11. С самого первого анонса она стала предметом критики в ИБ-сообществе, поскольку ставила под угрозу конфиденциальность данных. К релизу Microsoft доработала Recall, однако определенные опасения на ее счет все же остались. Из-за неоднозначности опция по умолчанию отключена в корпоративных сборках Windows 11, однако рассмотреть ее артефакты стоит на случай, если ее активировали злоумышленники или вредоносное ПО. В теории, включить Recall может и IT-служба организации с помощью групповых политик, но мы считаем такой сценарий маловероятным.

Как мы упоминали ранее, Recall работает на основе снимков экрана, которые, естественно, нужно где-то временно хранить, пока они не будут проанализированы. Необработанные изображения в формате JPEG можно найти по пути %AppData%\Local\CoreAIPlatform.00\UKP\{GUID}\ImageStore\*. В качестве имен файлов используются идентификаторы снимков экрана (о них далее).

Вместе со снимками экрана сохраняются их метаданные, которые записываются в стандартный тег Exif.Photo.MakerNote (0x927c) и содержат множество интересной информации: границы окна на переднем плане, временную метку (когда был сделан снимок), заголовок окна, идентификатор окна, полный путь процесса, запустившего окно; если во время создания снимка экрана используется браузер, могут быть сохранены URI, домен и т. д.

Функция Recall активируется отдельно для каждого пользователя. За включение и отключение сохранения снимков экрана отвечает ключ пользовательского куста реестра Software\Policies\Microsoft\Windows\WindowsAI\. Также в последних сборках Windows 11 Microsoft добавили несколько новых ключей реестра, связанных с управлением Recall.

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

Для быстрого поиска по всем данным, полученным из снимков экрана, используются две векторные базы данных DiskANN (SemanticTextStore.sidb и SemanticImageStore.sidb), но наиболее интересной для исследования будет обычная база данных SQLite: %AppData%\Local\CoreAIPlatform.00\UKP\{GUID}\ukg.db, состоящая из 20 таблиц. В последнем релизе она доступна без прав администратора, однако зашифрована. На момент написания статьи нет публично известных способов расшифровать базу данных напрямую, поэтому рассмотрим наиболее интересные таблицы из бета-релиза Windows 11 с Recall от 2024 года.

  • В таблице App  находятся данные о процессе, запустившем окно графического интерфейса приложения.
  • Таблица AppDwellTime содержит данные о полном пути процесса, запустившего окно графического интерфейса приложения (столбец WindowsAppId), о дате и времени его запуска (HourOfDay, DayOfWeek, HourStartTimestamp) и продолжительности просмотра окна (DwellTime).
  • Таблица WindowCapture содержит тип события (столбец Name).
    • WindowCreatedEvent — событие создания первого экземпляра окна приложения. Его можно связать с процессом, создавшим окно.
    • WindowChangedEvent — событие изменения экземпляра окна. Оно позволяет отслеживать перемещения и изменения размера экземпляра окна с помощью столбца WindowId, содержащего идентификатор окна.
    • WindowCaptureEvent — событие создания снимка экрана, содержащего окно приложения. Помимо идентификатора окна, оно содержит идентификатор изображения (ImageToken), по значению которого позднее можно получить JPEG-файл снимка экрана из ранее упомянутой директории ImageStore (имя файла будет соответствовать идентификатору изображения).
    • WindowDestroyedEvent — событие закрытия окна приложения.
    • ForegroundChangedEvent — событие не содержит полезных данных с точки зрения криминалистического анализа.

    Также в таблице WindowCapture есть отметка о том, выведено ли окно приложения на передний план (столбец IsForeground), границы окна в виде координат на экране (WindowBounds), заголовок окна (WindowTitle), служебное поле свойств (Properties) и временная метка события (TimeStamp).

  • WindowCaptureTextIndex_content содержит распознанный при помощи OCR (Optical Character Recognition) текст со снимка экрана (столбец с2), заголовок окна (WindowTitle), путь к приложению (App.Path), временную метку снимка экрана (TimeStamp) и имя (Name). Эту таблицу можно использовать совместно с WindowCapture (в столбцах c0 и Id содержатся идентичные данные, на основе которых можно объединить таблицы) и App (одинаковые данные содержится в столбцах AppId и Id).

Артефакты Recall (если он был включен на системе до инцидента) представляют собой золотую жилу для специалиста по реагированию на инциденты. Благодаря им можно подробно восстановить активность злоумышленника в скомпрометированной системе. С другой стороны, эта функция может быть использована и во вред: как ранее упоминалось, фильтр приватной информации в Recall работает неидеально, поэтому злоумышленники и вредоносное ПО могут использовать ее для поиска учетных данных и другой конфиденциальной информации.

Обновленные стандартные приложения

В Windows 11 обновлению подверглись в том числе и стандартные приложения, причем у некоторых поменялся не только интерфейс, но и функциональность. В частности, такие приложения, как Блокнот, Проводник и Командная строка в рассматриваемой версии ОС поддерживают работу в режиме «несколько вкладок в одном окне». При этом Блокнот хранит состояние вкладок даже после завершения процесса.

Соответственно, в Windows 11 появились и новые артефакты, связанные с использованием этого приложения. Их в деталях исследовал наш коллега Абдулрхман Альфаифи (AbdulRhman Alfaifi), с работой которого можно ознакомиться тут.

Основная директория артефактов Блокнота в Windows 11 — %LOCALAPPDATA%\Packages\Microsoft.WindowsNotepad_8wekyb3d8bbwe\LocalState\.

Она содержит две директории.

  • TabState хранит файл состояния {GUID}.bin для каждой вкладки Блокнота. В нем находится содержимое вкладки в случае, если она не была сохранена в файл, а для сохраненных вкладок — полный путь к сохраненному содержимому вкладки, хэш SHA-256 от содержимого вкладки, само содержимое, время последней записи в файл и т. д.
  • WindowsState хранит информацию о состоянии окна приложения (общее количество вкладок, их порядок, активная вкладка, размеры и позиция окна приложения на экране). Файл состояния называется *.0.bin или *.1.bin.

Структура файла {GUID}.bin для сохраненных вкладок выглядит следующим образом.

Поле Тип Значение и пояснения
Сигнатура [u8;2] NP
? u8 00
Файл_сохранен bool 00 — файл не сохранен по указанному пути
01 — файл сохранен
Длина_пути uLEB128 Длина полного пути в символах к файлу, в который было записано содержимое вкладки
Путь_к_файлу UTF-16LE Полный путь к файлу, в который было записано содержимое вкладки
Размер_файла uLEB128 Размер файла, в который было записано содержимое вкладки, на диске
Кодировка u8 Кодировка файла:
0x01 — ANSI
0x02 — UTF-16LE
0x03 — UTF-16BE
0x04 — UTF-8BOM
0x05 — UTF-8
Каретка_тип u8 Тип перевода каретки на новую строку:
0x01 — CRLF
0x02 — CR
0x03 — LF
Время_последней_записи uLEB128 Время последней записи (сохранения вкладки) в файл (в формате FILETIME)
хэш_sha256 [u8;32] Хэш SHA-256 содержимого вкладки
? [u8;2] 00 01
Старт_секции uLEB128 Смещение старта секции от начала файла
Конец_секции uLEB128 Смещение конца секции от начала файла
Конфигурация ConfigBlock Конфигурация в структуре типа ConfigBlock
Длина_контента uLEB128 Длина текста в файле
Контент UTF-16LE Содержимое файла до модификации новыми данными. Отсутствует в случае сохранения вкладки на диск без последующей модификации.
Содержит_несохраненные_данные bool 00 — содержимое вкладки в файле {GUID}.bin совпадает с содержимым вкладки в файле на диске
01 — изменения на вкладке не сохранены на диск
Контрольная_сумма [u8;4] Контрольная сумма CRC32 содержимого файла {GUID}.bin со сдвигом 0x03 от начала файла
Несохраненные_чанки [UnsavedChunk] Перечень структур UnsavedChunk. Отсутствует в случае сохранения вкладки на диск без последующей модификации
Пример содержимого файла {GUID.bin} для вкладки Блокнота, сохраненной в файл, а затем модифицированной новыми данными, которые не были записаны в файл

Пример содержимого файла {GUID.bin} для вкладки Блокнота, сохраненной в файл, а затем модифицированной новыми данными, которые не были записаны в файл

Для несохраненных вкладок структура файла {GUID}.bin в директории TabState сокращена.

Поле Тип Значение и пояснения
Сигнатура [u8;2] NP
? u8 00
Файл_сохранен bool 00 — файл не сохранен по указанному пути (всегда)
Старт_секции uLEB128 Смещение старта секции от начала файла
Конец_секции uLEB128 Смещение конца секции от начала файла
Конфигурация ConfigBlock Конфигурация в структуре типа ConfigBlock
Длина_контента uLEB128 Длина текста в файле
Контент UTF-16LE Содержимое файла
Содержит_несохраненные_данные bool 01 — изменения на вкладке не сохранены на диск (всегда)
Контрольная_сумма [u8;4] Контрольная сумма CRC32 содержимого файла {GUID}.bin со сдвигом 0x03 от начала файла
Несохраненные_чанки [UnsavedChunk] Перечень структур UnsavedChunk
Пример содержимого файла {GUID.bin} для вкладки Блокнота, не сохраненной в файл

Пример содержимого файла {GUID.bin} для вкладки Блокнота, не сохраненной в файл

Стоит отметить, что сохранение вкладок может быть отключено в настройках Блокнота. В таком случае артефакты TabState и WindowsState будут недоступны для анализа.

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

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

Изменения в привычных артефактах в Windows 11

Помимо новых артефактов, в Windows 11 появились некоторые интересные изменения в старых, о которых следует знать при расследовании инцидентов.

Изменения в поведении меток NTFS

По сравнению с Windows 10 в Windows 11 изменилось поведение меток NTFS в двух структурах $MFT: $STARNDARD_INFORMATION и $FILENAME.

Изменения в поведении меток структуры $STARNDARD_INFORMATION представлены в таблице ниже.

Событие Доступ к файлу Переименование файла Копирование файла в новую папку Перемещение файла в рамках одного тома Перемещение файла между томами
Win 10
1903
Обновится время последнего доступа к файлу. При этом, если системный том крупнее чем 128 ГБ, время доступа к файлу не изменится Время последнего доступа к файлу не изменится Метаданные копии будут обновлены Время последнего доступа к файлу не изменится Метаданные будут унаследованы от оригинального файла
Win 11 24H2 Обновится время последнего доступа к файлу Обновится время последнего доступа к файлу в соответствии с временем модификации Метаданные копии будут унаследованы от оригинального файла Обновится время последнего доступа к файлу в соответствии с временем перемещения Метаданные будут обновлены

В структуре $FILENAME произошли следующие изменения поведения меток.

Событие Переименование файла Перемещение файла в рамках одного тома c помощью Проводника Перемещение файла в корзину
Win 10
1903
Временные метки и метаданные остаются без изменений Временные метки и метаданные остаются без изменений Временные метки и метаданные остаются без изменений
Win 11 24H2 Метки времени доступа и модификации, а также метаданные наследуются от предыдущей версии $STARNDARD_INFORMATION Метки времени доступа и модификации, а также метаданные наследуются от предыдущей версии $STARNDARD_INFORMATION Метки времени доступа и модификации, а также метаданные наследуются от предыдущей версии $STARNDARD_INFORMATION

Описанные изменения стоит учитывать при анализе служебных файлов файловой системы NTFS.

Program Compatibility Assistant

Program Compatibility Assistant (PCA) появился еще в далеком 2006 году с выходом Windows Vista для запуска программ, предназначенных для более старых версий операционной системы, что позволяет использовать этот артефакт для выявления факта запуска программ.

С выходом Windows 11 появились новые файлы, связанные с этой функцией, интересные для криминалистического анализа запусков программ. Они расположены в директории C:\Windows\appcompat\pca\.

  • PcaAppLaunchDic.txt — каждая строка файла содержит данные о последнем запуске определенного исполняемого файла: время последнего запуска в формате YYYY-MM-DD HH:MM:SS.f (UTC), а также полный путь к файлу. Данные разделены при помощи символа «|». При новом запуске файла информация в соответствующей строке обновится. Файл использует кодировку ANSI (CP-1252), поэтому запуск исполняемых файлов, содержащих в названии юникод, «ломает» его: новые записи (включая запись о запуске файла с юникодом) перестают появляться, происходит лишь обновление старых.

  • PcaGeneralDb0.txt и PcaGeneralDb1.txt — эти файлы чередуются между собой при записи данных: новые записи сохраняются в первичный файл, пока его размер не достигнет двух мегабайт. После этого вторичный файл очищается и становится новым первичным файлом, а переполненный первичный становится вторичным. Этот цикл повторяется до бесконечности. Данные разделяются при помощи символа «|». Файл использует кодировку UTF-16LE и содержит следующие поля.
    • Время запуска исполняемого файла (YYYY-MM-DD HH:MM:SS.f (UTC))
    • Тип записи (0-4):
      • 0 — ошибка установки
      • 1 — драйвер заблокирован
      • 2 — аномальный выход процесса
      • 3 — вызов PCA Resolve (компонент, отвечающий за устранение ошибок совместимости при запуске старых программ)
      • 4 — значение не установлено
    • Путь до исполняемого файла без буквы тома, часто с использованием переменных окружения (%USERPROFILE%, %systemroot%, %programfiles% и пр.)
    • Имя продукта из заголовка PE (в нижнем регистре)
    • Имя компании из заголовка PE (в нижнем регистре)
    • Версия продукта из заголовка PE
    • ID программы Windows (как в AmCache)
    • Сообщение

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

Windows Search — это встроенный механизм индексирования и поиска файлов в Windows. Поначалу он перебирал файлы напрямую, что делало поиск неэффективным и медленным. Позже появилось отдельное приложение, создающее быстрый индекс файлов, и лишь с 2006 года (Windows Vista) поиск был полностью интегрирован в систему, а индексация файлов стала происходить в фоновом режиме.

C Windows Vista до Windows 10 включительно индекс файлов хранился в базе данных Extensible Storage Engine (ESE): %PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows.edb.

В Windows 11 хранилище было разбито на три базы данных SQLite.

  • %PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows-gather.db содержит общие сведения о проиндексированных файлах и папках. Наибольший интерес представляет таблица SystemIndex_Gthr, в которой хранятся данные об имени проиндексированного файла или директории (столбец FileName), о последней модификации проиндексированного файла или директории (LastModified), а также идентификатор для связи с родительским объектом (ScopeID) и уникальный идентификатор самого файла или директории (DocumentID). С помощью ScopeID и таблицы SystemIndex_GthrPth можно восстановить полный путь к файлу в системе. Таблица SystemIndex_GthrPth содержит имя папки (столбец Name), идентификатор директории (Scope) и идентификатор родительской директории (Parent). Таким образом, сопоставив ScopeID файла и Scope директории можно узнать, к какой директории относится файл.
  • %PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows.db содержит сведения о метаданных проиндексированных файлов. Интерес для анализа представляет таблица SystemIndex_1_PropertyStore, в которой находится уникальный идентификатор проиндексированного объекта (Столбец WorkId), тип метаданных (ColumnId) и сами метаданные. Типы метаданных описываются в таблице SystemIndex_1_PropertyStore_Metadata (содержимое столбца Id соответствует содержимому ColumnId из SystemIndex_1_PropertyStore) и указаны в столбце UniqueKey.
  • %PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows-usn.db не содержит сведений, полезных для криминалистического анализа.

Как видно на снимке экрана ниже, анализ файла Windows-gather.db при помощи инструмента DB Browser для SQlite может дать нам информацию о присутствии некоторых файлов (вредоносного ПО, файлов конфигурации, файлов, созданных и оставленных в системе атакующими и т. д.).

Стоит отметить, что время в столбце LastModified хранится в формате Windows FILETIME, который представляет неподписанное 64-битное значение даты и времени в виде количества интервалов в 100 наносекунд, прошедшего с начала дня 1 января 1601 года. Мы можем использовать утилиту наподобие DCode, чтобы представить его в формате UTC, как показано на изображении ниже.

Другие незначительные изменения в Windows 11

Стоит также отметить несколько небольших, но важных изменений в Windows 11, которые не нуждаются в подробном разборе.

  • Полный отказ от NTLMv1, а значит, такая атака, как Pass-the-hash, постепенно уходит в прошлое.
  • Удаление известного многим артефакта активности Windows 10 Timeline. Хотя он более не ведется, его база данных пока осталась в файлах с информацией об активности пользователя, расположенных по пути %userprofile%\AppData\Local\ConnectedDevicesPlatform\ActivitiesCache.db.
  • Аналогичным образом, в Windows 11 больше нет Cortana и Internet Explorer, но их артефакты все еще присутствуют в операционной системе. Эта особенность может пригодиться в расследованиях, затрагивающих системы, которые были обновлены с Windows 10 до Windows 11.
  • Предыдущее исследование также показало, что событие 4624, логирующее успешные попытки аутентификации в Windows, оставалось практически неизменным до версии Windows 11 Pro 22H2. В ней появилось новое поле Remote Credential Guard, подчеркивающее небольшой, но важный для криминалистического анализа сдвиг: хотя то, как оно будет использоваться в жизни и какое значение будет иметь для киберкриминалистов, нам еще только предстоит понять, сам факт его наличия указывает на то, что Microsoft пытается расширить телеметрию, связанную с аутентификацией в системе.
  • Расширенная поддержка файловой системы ReFS. В последнем превью обновления Windows 11 стало возможно установить ОС прямо на том с ReFS, также появилась поддержка BitLocker. При этом данная файловая система имеет множество отличий от привычной NTFS, к которым стоит быть готовым:
    • в ReFS нет привычной криминалистам таблицы $MFT, содержащей все актуальные записи о файлах на диске;
    • не генерируются короткие имена (как в NTFS для совместимости с DOS);
    • нет жестких ссылок (hard link) и нет расширенных атрибутов объектов;
    • увеличены максимальные объемы как тома, так и единичного файла (35 ПБ против 256 ТБ в NTFS).

Заключение

Этот пост содержит краткий обзор основных изменений в артефактах Windows 11, интересных с точки зрения криминалистического анализа, — в особенности это касается изменений в PCA и Windows Search. Насколько они окажутся полезными при расследованиях — покажет время. Однако мы рекомендуем сразу добавить сбор вышеописанных файлов в ваш инструмент для сбора триажей.

Король умер, да здравствует новый король! EOL Windows 10 и криминалистические артефакты Windows 11

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

ToddyCat — ваш скрытый почтовый ассистент. Часть 1

Эксперты «Лаборатории Касперского» разбирают атаки APT ToddyCat через корпоративную электронную почту. Изучаем новую версию TomBerBil, инструменты TCSectorCopy и XstReader, а также способы кражи токенов доступа из Outlook.

Криптоафера группы BlueNoroff: «призрачные» инвестиции и фиктивные рабочие предложения

Эксперты команды GReAT проанализировали кампании GhostCall и GhostHire APT-группы BlueNoroff: несколько цепочек вредоносного ПО для macOS, поддельные клиенты Zoom и Microsoft Teams, а также изображения, улучшенные с помощью ChatGPT.

Mem3nt0 mori – Hacking Team снова с нами!

Исследователи «Лаборатории Касперского» впервые обнаружили шпионское ПО Dante, разработанное Memento Labs (бывшей Hacking Team) в дикой природе и нашли его связь с APT ForumTroll.