Реестр 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.DAT | C:\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-журналы транзакций тоже подлежат изъятию.
- Анализ — только на хэшированной копии офлайн, с документированной цепочкой хранения.