Реестр Windows как источник доказательств

Реестр Windows — это не «свалка настроек», а структурированная база данных, в которой система ведёт хронику почти всех действий пользователя и программ. Для следователя это первичный источник доказательств.

Реестр Windows (Registry) — иерархическая база данных конфигурации ОС, приложений и пользовательских профилей, физически хранящаяся в нескольких файлах-кустах (hives).

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

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

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

У реестра есть и сильная сторона перед файловыми артефактами: он отражает намерения и настройки, а не только следы. Файл можно удалить, но запись в автозагрузке выдаёт, что атакующий планировал закрепиться надолго; пустая корзина ничего не говорит, а список USB-устройств показывает, что носитель подключали именно в эту машину. Поэтому реестр часто становится отправной точкой расследования: от него эксперт идёт к артефактам активности и журналам событий, выстраивая общую картину. И наоборот — мышление защитника тут зеркально: те же разделы, по которым следователь ловит вторжение, Blue Team ставит под мониторинг заранее, чтобы поймать атаку в момент закрепления, а не постфактум.

Структура: кусты, ветви, разделы, значения

Логически реестр представлен корневыми ветвями: HKEY_LOCAL_MACHINE (HKLM, настройки всей машины), HKEY_USERS (HKU, профили всех пользователей), а также «представления» HKEY_CURRENT_USER и HKEY_CLASSES_ROOT. Физически же данные лежат в файлах-кустах:

Куст (файл)Где лежитЧто внутри
SYSTEM%SystemRoot%\System32\config\устройства, службы, USB-история, текущий ControlSet
SOFTWARE%SystemRoot%\System32\config\установленные программы, автозапуск, версия ОС
SAM%SystemRoot%\System32\config\локальные учётные записи (хэши паролей)
SECURITY%SystemRoot%\System32\config\политики безопасности
NTUSER.DATC:\Users\Имя\персональные настройки, RecentDocs, MRU, запуски
UsrClass.dat...\AppData\Local\Microsoft\Windows\ShellBags (история открытых папок)

Каждый куст — это дерево из разделов (keys) и значений (values) типов REG_SZ, REG_DWORD, REG_BINARY и др. Ключевая деталь для криминалиста: у каждого раздела есть метка времени LastWrite — момент последнего изменения. По ней восстанавливают, когда произошло событие.

Что извлекает следователь

Автозапуск и закрепление в системе

Вредоносное ПО почти всегда прописывается в автозагрузку. Классические точки — разделы Run и RunOnce:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

Подозрительная строка с путём к программе во временной папке и недавним LastWrite — повод для проверки. Это же знание используют защитники: мониторинг изменений в этих разделах помогает поймать закрепление атакующего на раннем этапе.

USB-история

Подключение съёмных носителей оставляет следы в SYSTEM\CurrentControlSet\Enum\USBSTOR: производитель, модель, серийный номер устройства. По ним устанавливают, какая именно флешка побывала в машине — важная улика в делах об утечках данных.

Недавние документы и MRU

RecentDocs и многочисленные списки MRU (Most Recently Used) в NTUSER.DAT хранят, какие файлы открывал пользователь и в каком порядке. RecentDocs разбит по расширениям, а порядок задаёт значение MRUListEx. Это прямой ответ на вопрос «к каким файлам обращались перед инцидентом».

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

Куст — это бинарный файл из блоков по 4 КБ (hbin), внутри которых лежат записи-«ячейки»: nk (раздел), vk (значение), sk (дескриптор безопасности), lf/lh (индексы подразделов). Удаление раздела часто лишь помечает ячейку свободной, не затирая данные, — поэтому специализированные парсеры извлекают удалённые ключи прямо из «дыр» в файле. Windows не пишет в куст напрямую при каждом изменении: правки идут в журнал транзакций (.LOG1/.LOG2) и затем применяются. Грамотный эксперт обязательно забирает и LOG-файлы — иначе образ может оказаться неактуальным.

Анализируют кусты офлайн, на криминалистической копии, инструментами вроде Registry Explorer, RegRipper или библиотеки. Пример концептуального разбора смещений и записей куста на стандартном Python:

import struct

# Демонстрация: разбор сигнатур записей куста (учебный фрагмент).
records = [b"nk", b"vk", b"sk", b"lf"]
meaning = {
    "nk": "раздел (key node)",
    "vk": "значение (value)",
    "sk": "дескриптор безопасности",
    "lf": "индекс подразделов",
}
for sig in records:
    name = sig.decode("ascii")
    print(name, "->", meaning[name])

# Время LastWrite в реестре — FILETIME: 100-нс интервалы с 1601 года.
filetime = 132_000_000_000_000_000
seconds_since_1601 = filetime / 10_000_000
print("секунд с 1601:", int(seconds_since_1601))

Вывод:

nk -> раздел (key node)
vk -> значение (value)
sk -> дескриптор безопасности
lf -> индекс подразделов
секунд с 1601: 13200000000

Цепочка хранения и сохранение доказательств

Реестр меняется при каждом действии, поэтому золотое правило — не работать с оригиналом. Кусты извлекают из криминалистического образа диска (или экспортируют на «живой» системе через теневую копию VSS), фиксируют хэш (SHA-256) каждого файла и заносят в журнал кто, когда и чем снял копию — это и есть цепочка хранения (chain of custody). Любой анализ ведут на дубликате; контрольная сумма доказывает в суде, что данные не подменялись.

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

Мышление защитника здесь зеркально мышлению следователя — те же артефакты помогают обнаружить вторжение:

  • Включайте аудит изменений критичных разделов (Run, службы) и собирайте события в SIEM.
  • Ограничивайте права на запись в общесистемные ветви HKLM — туда не должен писать обычный пользователь.
  • Регулярно снимайте «эталон» автозагрузки и сравнивайте с текущим состоянием — отклонение часто означает закрепление вредоноса.
  • Контролируйте подключение USB политиками — и для безопасности, и чтобы история в USBSTOR была управляемой.

Итоги

  • Реестр — структурированный источник доказательств: кусты SYSTEM/SOFTWARE/SAM/SECURITY и пользовательские NTUSER.DAT/UsrClass.dat.
  • Ключевые улики: автозапуск (Run/RunOnce), USB-история (USBSTOR), недавние файлы (RecentDocs, MRU).
  • Метка LastWrite датирует события; удалённые ключи и LOG-журналы транзакций тоже подлежат изъятию.
  • Анализ — только на хэшированной копии офлайн, с документированной цепочкой хранения.
Проверьте себя
1. В каком файле-кусте хранятся персональные настройки пользователя, RecentDocs и MRU?
ASAM
BSYSTEM
CNTUSER.DAT
DSECURITY
2. Зачем криминалисту метка LastWrite у раздела реестра?
AОна хранит пароль пользователя
BПо ней определяют, когда раздел последний раз изменялся (датировка события)
CОна задаёт права доступа к разделу
DЭто контрольная сумма значения
3. Почему анализ реестра ведут на копии, а не на оригинальной системе?
AТак быстрее открываются разделы
BРеестр постоянно меняется при работе ОС, и оригинал нельзя изменять — копия с фиксированным хэшем сохраняет целостность доказательств
CНа оригинале нет раздела Run
DКопия автоматически расшифровывает SAM