
Инструмент для Windows для извлечения вредоносных PE-файлов из памяти обратно на диск для анализа.
Process Dump — это инструмент командной строки для реверс-инжиниринга Windows, предназначенный для дампа компонентов памяти вредоносных программ обратно на диск для анализа. Часто вредоносные файлы упакованы и обфусцированы перед выполнением, чтобы избежать обнаружения антивирусными сканерами, однако при исполнении они часто распаковываются или внедряют чистую версию вредоносного кода в память. Обычная задача исследователей вредоносных программ при анализе — дамп этого распакованного кода из памяти на диск для сканирования антивирусными продуктами или для анализа статическими средствами, такими как IDA.
Process Dump работает в 32- и 64-разрядных версиях Windows и может сбрасывать компоненты памяти из определённых процессов или из всех запущенных процессов. Process Dump поддерживает создание и использование базы данных чистых хешей, чтобы можно было пропускать дамп всех чистых файлов, таких как kernel32.dll. Его основные возможности включают:
Я поддерживаю официальную скомпилированную версию на своём сайте: https://split-code.com/processdump.html
Вы можете загрузить последнюю скомпилированную версию Process Dump здесь:
Она предназначена для Visual Studio 2019 и работает с бесплатной версией Community. Просто откройте файл проекта в VS2019 и скомпилируйте — всё должно быть просто!
Process dump можно использовать для дампа всего неизвестного кода из памяти (флаг '-system'), дампа определённых процессов или для работы в режиме мониторинга, который сбрасывает все процессы непосредственно перед их завершением.
Перед первым использованием этого инструмента на чистой рабочей станции можно сгенерировать базу данных чистых хешей, выполнив:
Примеры использования:
Аргументы командной строки можно сгруппировать следующим образом:
Общие параметры дампа
Параметры базы данных чистых хешей
Параметры вывода
| Опция | Описание |
|---|---|
| -v | Подробный режим, при котором выводится больше информации для отладки. |
| -nh | Заголовок не выводится. |
Расширенные параметры
Конечно, вот более сжатая версия информации:
При использовании Process Dump в автоматизированной песочнице или для ручного анализа вредоносных программ могут быть полезны следующие шаги. Убедитесь, что все команды выполняются от имени администратора в чистой среде.
Создание базы данных чистых хешей: Выполните pd64.exe -db gen или для более быстрого, но менее полного процесса используйте pd64.exe -db genquick. В зависимости от ситуации, возможно, вы захотите создать снимок вашей виртуальной машины после создания этой базы данных чистых хешей, чтобы не повторять это каждый раз.
Запуск монитора завершения Process Dump: Держите pd64.exe -closemon работающим в фоне. Он будет сбрасывать все промежуточные процессы, используемые вредоносным ПО.
Запуск вредоносного файла: Наблюдайте за установкой вредоносного ПО. pd64.exe автоматически сбросит любой процесс, который попытается закрыться.
Дамп работающего вредоносного ПО из памяти: Когда будете готовы, используйте pd64.exe -system для дампа всех процессов.
Сброшенные компоненты будут находиться в рабочем каталоге pd64.exe. Чтобы изменить путь вывода, используйте флаг -o.
Примеры имён файлов сброшенных файлов:
| Опция | Описание |
|---|
| -system | Сбрасывает все модули, не совпадающие с базой данных чистых хешей, из всех доступных процессов в рабочий каталог. |
| -pid <pid> | Сбрасывает все модули, не совпадающие с базой данных чистых хешей, из указанного PID в текущий рабочий каталог. Используйте префикс '0x' для задания PID в шестнадцатеричном формате. |
| -closemon | Запускает режим мониторинга. Когда какой-либо процесс завершается, process dump сбрасывает этот процесс перед завершением. |
| -p <regex имя процесса> | Сбрасывает все модули, не совпадающие с базой данных чистых хешей, из процесса, имя которого соответствует фильтру, в указанный PID и текущий рабочий каталог. |
| -a <базовый адрес модуля> | Сбрасывает модуль по указанному базовому адресу из процесса. |
| -o <путь> | Задаёт корневую папку вывода по умолчанию для сброшенных компонентов. |
| Опция | Описание |
|---|
| -db gen | Автоматически обрабатывает несколько общих папок, а также все текущие запущенные процессы и добавляет хеши найденных модулей в базу данных чистых хешей. Рекурсивно добавляются все файлы в: %WINDIR%, %HOMEPATH%, C:\Program Files\, C:\Program Files (x86)\, а также все модули во всех запущенных процессах. Эти чистые хеши будут добавлены в файл clean.hashes в каталоге приложения. При последующих командах дампа процессов эти известные модули не будут сбрасываться. Рекомендуется выполнить эту команду один раз на чистой системе перед использованием инструмента, чтобы не сбрасывать слишком много модулей из памяти. |
| -db genquick | То же, что и выше, но добавляет в базу данных чистых хешей только хеши всех модулей во всех процессах. Это гораздо более быстрый способ построения базы данных чистых хешей, но он будет менее полным. |
| -db add <каталог> | Рекурсивно добавляет все файлы в указанном каталоге в базу данных чистых хешей. |
| -db rem <каталог> | Рекурсивно удаляет все файлы в указанном каталоге из базы данных чистых хешей. |
| -nr | Отключает рекурсию при добавлении или удалении каталога из базы данных хешей. |
| -db clean | Очищает базу данных чистых хешей. |
| -db ignore | Игнорирует базу данных чистых хешей при дампе процесса в этот раз. Все модули будут сброшены, даже если найдено совпадение. |
| -cdb <путь> | Полный путь к файлу базы данных чистых хешей для использования в этом запуске, если необходимо переопределить значение по умолчанию clean.hashes. |
| -edb <путь> | Полный путь к файлу базы данных хешей точек входа для использования в этом запуске. |
| -esdb <путь> | Полный путь к файлу базы данных коротких хешей точек входа для использования в этом запуске. |
| Опция | Описание |
|---|
| -g | Принудительно создаёт PE-заголовки с нуля, игнорируя существующие заголовки. |
| -eprec | Принудительно восстанавливает точку входа, даже если кажется, что существует действующая. |
| -ni | Отключает восстановление импортов. |
| -nc | Отключает дамп свободных областей кода. |
| -nt | Отключает многопоточность. |
| -nep | Отключает хеширование точки входа. |
| -t <количество потоков> | Устанавливает количество используемых потоков (по умолчанию 16). |
| Команда | Описание |
|---|
pd64.exe -db genquick | Быстрое создание базы данных чистых модулей на основе текущих запущенных процессов. В дальнейших задачах Process Dump будет сбрасывать только нераспознанные модули. |
pd64.exe -system | Дамп всех модулей и скрытых фрагментов из всех процессов с игнорированием чистых модулей. |
pd64.exe -closemon | Запуск в режиме мониторинга завершения. Это сбрасывает все процессы при попытке их завершения. |
pd64.exe -pid 0x18A | Дамп модулей и скрытых фрагментов из конкретного идентификатора процесса. |
pd64.exe -p .\*chrome.\* | Дамп модулей и скрытых фрагментов по имени процесса. |
pd64.exe -db gen | Создание базы данных чистых хешей известных модулей. Используется, чтобы в дальнейших задачах не сбрасывать известные хорошие модули. |
pd64.exe -pid 0x1a3 -a 0xffb4000 | Дамп кода из конкретного адреса в PID. Будут созданы два файла для анализа с восстановленными 32- и 64-разрядными PE-заголовками: notepad_exe_x64_hidden_FFB40000.exe и notepad_exe_x86_hidden_FFB40000.exe. |