Снятие дампа памяти
Почему RAM — самый ценный и самый хрупкий источник улик, и как снять её копию, ничего не испортив.
Дамп памяти (memory dump) — это побайтовая копия содержимого оперативной памяти работающего компьютера, сохранённая в файл для последующего криминалистического анализа.
Эта тема разбирается строго в рамках легальной цифровой криминалистики: расследование на собственных системах организации, реагирование на инцидент с разрешения владельца, учебная лаборатория. Несанкционированный доступ к чужим системам наказуем (в РФ — ст. 272 УК РФ). Дальше речь только о защите и корректном сборе улик.
Зачем это знать защитнику
Когда сработала сигнализация SIEM или антивирус, первая мысль неопытного аналитика — «перезагрузить и почистить». Это худшее, что можно сделать. На жёстком диске вредоносное ПО оставляет минимум следов: современные техники работают в памяти (fileless), не записывая исполняемый файл на диск вовсе. Расшифрованные строки, ключи шифрования вымогателя, активные сетевые соединения злоумышленника, список запущенных процессов и даже введённые с клавиатуры команды — всё это живёт в RAM и исчезает в момент выключения питания. Дамп памяти фиксирует «фотографию» атаки в разгар, давая защитнику то, чего нет больше нигде.
Важно понимать и обратную сторону: дамп — это не панацея, а один слой улик. Он отвечает на вопрос «что происходило прямо сейчас», но плохо отвечает на «что было час назад». Поэтому в зрелом процессе реагирования память сопоставляют с логами, образом диска и сетевым трафиком — каждый источник закрывает слепые зоны другого.
Что именно удаётся восстановить
Чтобы оценить ценность процедуры, полезно держать в голове список того, что аналитик реально достаёт из дампа исправной системы:
- Полный список процессов — включая те, что уже завершились, но чьи структуры ещё не затёрты.
- Сетевые соединения и слушающие порты — с какими адресами шёл обмен в момент снятия.
- Загруженные модули и драйверы — в том числе подозрительные, не подписанные.
- Командные строки и история консоли — что и с какими аргументами запускалось.
- Расшифрованные данные и секреты — то, что на диске лежит зашифрованным, в памяти открыто.
Ни один из этих артефактов нельзя получить, если сначала выключить машину. Отсюда и категоричность правила: дамп — раньше всего.
Live-сбор против «мёртвого» анализа
Классическая дисковая форензика — это dead acquisition: систему обесточивают, диск снимают и копируют на стенде, где исследуемые данные неизменны. С памятью так нельзя: выключение уничтожает объект исследования. Поэтому форензика RAM — это всегда live acquisition, сбор на работающей системе. Платой за это становится принципиальная невоспроизводимость: второй дамп той же машины будет уже другим, ведь память непрерывно меняется. Аналитик принимает это и компенсирует строгой документацией: время, инструмент, версия, хеш — всё фиксируется, чтобы суд доверял единственному снимку.
Порядок волатильности
Ключевой принцип сбора улик сформулирован в RFC 3227 (Guidelines for Evidence Collection): собирай от самого недолговечного к самому стойкому. Чем быстрее данные исчезают, тем раньше их нужно зафиксировать.
| Приоритет | Источник | Срок жизни |
| 1 | Регистры и кэш CPU | наносекунды |
| 2 | Таблицы маршрутизации, ARP, статистика соединений | секунды |
| 3 | Оперативная память (RAM) | до выключения питания |
| 4 | Временные файлы, swap/pagefile | минуты–часы |
| 5 | Данные на диске | дни–годы |
| 6 | Резервные копии, архивы | долговременно |
Поэтому в правильном плане реагирования дамп RAM снимают до образа диска и до любых перезагрузок.
Как снимают дамп живой системы
Снятие памяти — это live acquisition: машину нельзя выключать, иначе улики пропадут. Инструмент-агент читает физическую память через драйвер ядра и пишет её в файл на внешний носитель (не на исследуемый диск, чтобы не затирать его свободные секторы). Типичные инструменты в лаборатории: WinPmem, Belkasoft RAM Capturer, FTK Imager (Windows); LiME и AVML (Linux). Команда-иллюстрация для Linux-стенда:
sudo insmod lime.ko "path=/mnt/usb/mem.lime format=lime"
Здесь LiME загружается как модуль ядра и сбрасывает физическую память в файл формата lime на подключённую флешку. Объём дампа равен объёму RAM: 16 ГБ памяти — 16 ГБ файла.
Хеш и целостность
Сразу после снятия дамп хешируют, чтобы доказать в суде, что файл не меняли. Защитник вычисляет контрольную сумму и фиксирует её в протоколе:
sha256sum /mnt/usb/mem.lime > mem.lime.sha256
Любая повторная проверка должна давать тот же хеш — это и есть цепочка сохранности улик (chain of custody).
Как это работает под капотом
Обычное приложение видит только виртуальную память — изолированное адресное пространство, которое процессор через таблицы страниц отображает на физические страницы RAM. Дамп же снимает физическую память целиком: страницы всех процессов, ядра, драйверов и кэша вперемешку. Поэтому аналитику потом нужен инструмент (Volatility), который заново разбирает структуры ядра и восстанавливает, какая страница какому процессу принадлежит.
Чтобы понять масштаб «фотографии», прикинем размер дампа и время записи на флешку простым расчётом на стандартной библиотеке Python:
ram_gb = 16
usb_speed_mbps = 40 # МБ/с, типичная USB-флешка
size_mb = ram_gb * 1024
seconds = size_mb / usb_speed_mbps
print(f"Размер дампа: {size_mb} МБ")
print(f"Время записи: ~{seconds:.0f} секунд ({seconds/60:.1f} мин)")
Вывод:
Размер дампа: 16384 МБ Время записи: ~410 секунд (6.8 мин)
Эти минуты важны: пока агент читает память, система живёт и память меняется — дамп всегда слегка «смазан» (page smearing). Это нормально и учитывается при анализе.
Риски процедуры
Снятие дампа — вмешательство в живую систему, и у него есть издержки, о которых защитник обязан помнить:
- Принцип Локара. Сам инструмент сбора загружается в память и оставляет след — это неизбежно, поэтому действия документируют.
- Анти-форензика. Продвинутое вредоносное ПО может прятаться от драйвера чтения памяти; поэтому дамп дополняют другими источниками.
- Стабильность. Загрузка драйвера ядра в скомпрометированную систему теоретически способна вызвать сбой — на критичных серверах процедуру согласуют заранее.
Как защититься
С точки зрения готовности организации «защита» здесь — это способность вообще получить дамп тогда, когда он понадобится:
- Заранее подготовьте набор форензик-инструментов на read-only носителе и инструкцию для дежурной смены.
- Пропишите в плейбуке инцидента: сначала дамп RAM, потом образ диска, перезагрузка — в последнюю очередь.
- Фиксируйте хеши и время каждого действия — без цепочки сохранности улика бесполезна.
- Тренируйте процедуру на тестовом стенде, а не впервые во время реальной атаки.
Итоги
- RAM хранит fileless-вредоносы, ключи и активные соединения, которых нет на диске.
- Порядок волатильности (RFC 3227): память собирают раньше диска и до выключения.
- Дамп снимают live-инструментом на внешний носитель и сразу хешируют.
- Сбор всегда чуть «смазан» и оставляет след — это документируют ради цепочки сохранности.