За последний год через одну лабораторию прошло больше двадцати дампов с реальных инцидентов — и во всех случаях малварь жила исключительно в оперативной памяти. Ни одного файла на диске. Классическая дисковая форензика дала бы ноль.
🔍 Fileless-атаки, reflective DLL injection, Cobalt Strike beacon в RWX-регионе легитимного
svchost.exe — для антивируса и EDR это выглядит как обычная работа системы. Но в оперативной памяти они оставляют следы, которые никуда не деваются.Почему RAM важнее диска при реагировании
Образ диска на 250+ ГБ снимается часами. Дамп RAM на 8–32 ГБ — за минуты. Но дело не только в скорости.
Оперативная память хранит то, чего на диске нет в принципе:
• Расшифрованный payload — малварь шифрует себя на диске, но в RAM работает в открытом виде
• Инжектированный код — Process Injection (T1055) файлов не оставляет, только RWX-регионы в чужом адресном пространстве
• Скрытые процессы — руткит выдёргивает процесс из списка, но pool-теги остаются в физической памяти
• Активные C2-соединения — с PID, портами и IP, которые лог файервола мог не записать
• Хэши и билеты Kerberos — прямо в памяти
lsass.exe🛠 Volatility 3: что изменилось
Главная ловушка для тех, кто учился по старым руководствам: в тройке нет
--profile. Вместо него — символьные таблицы в формате ISF, которые фреймворк стягивает сам при первом запуске. Не нужно угадывать точный билд Windows — Volatility 3 определяет его автоматически.Синтаксис стал чище:
vol -f dump.raw windows.pslist вместо громоздкого vol.py --profile=Win10x64_18362 pslist. Минорные билды Windows поддерживаются без обновления фреймворка.⚠️ Ключевой момент про снятие дампа
Дамп снимается до перезагрузки — это очевидно, но на практике именно здесь теряют артефакты. Перезагрузили хост — потеряли всё.
На Windows используется WinPmem:
winpmem_mini_x64_rc2.exe output.raw. Сразу после снятия фиксируется контрольная сумма: sha256sum output.raw > output.raw.sha256. Это не формальность — без chain of custody отчёт не примут ни в суде, ни на review у заказчика.💡 Что реально разделяет
pslist и psscanБольшинство руководств перечисляют плагины, не объясняя разницу.
pslist идёт по двусвязному списку ядра — руткит может выдернуть оттуда запись. psscan сканирует физическую память по pool-тегам — и находит то, что скрыто. Расхождение между выводами двух плагинов — красный флаг.Полный workflow расследования: от снятия дампа до IoC для отчёта — в статье.
https://codeby.net/threads/analiz-dampov-pamyati-volatility-3-prakticheskii-workflow-obnaruzheniya-malvari-i-in-yektsii.92825/