Вопрос или проблема
Похоже, что опции Volatility изменились. Как я могу извлечь память процесса с помощью Volatility 3?
“Старый способ”, похоже, не работает:
При желании можно использовать плагин для выгрузки содержимого памяти процесса.
vol.py -f [image] –profile=[profile] -p [PID] –dump-dir=[directory/]
Это позволит выгрузить все содержимое памяти процесса в файл в
директории, указанной с помощью опции –dump-dir=.
Я попробовал:
volatility -f mydump.vmem -p 1470 -D procdump
Volatility 3 Framework 1.2.1-beta.1
usage: volatility [-h] [-c CONFIG] [--parallelism [{processes,threads,off}]]
[-e EXTEND] [-p PLUGIN_DIRS] [-s SYMBOL_DIRS] [-v] [-l LOG]
[-o OUTPUT_DIR] [-q] [-r RENDERER] [-f FILE]
[--write-config] [--clear-cache]
[--single-location SINGLE_LOCATION]
[--stackers [STACKERS [STACKERS ...]]]
[--single-swap-locations [SINGLE_SWAP_LOCATIONS [SINGLE_SWAP_LOCATIONS ...]]]
plugin ...
volatility: ошибка: аргумент плагина: недопустимый выбор procdump (выберите из banners.Banners, configwriter.ConfigWriter, frameworkinfo.FrameworkInfo, isfinfo.IsfInfo, layerwriter.LayerWriter, linux.bash.Bash, linux.check_afinfo.Check_afinfo, linux.check_creds.Check_creds, linux.check_idt.Check_idt, linux.check_modules.Check_modules, linux.check_syscall.Check_syscall, linux.elfs.Elfs, linux.keyboard_notifiers.Keyboard_notifiers, linux.lsmod.Lsmod, linux.lsof.Lsof, linux.malfind.Malfind, linux.proc.Maps, linux.pslist.PsList, linux.pstree.PsTree, linux.tty_check.tty_check, mac.bash.Bash, mac.check_syscall.Check_syscall, mac.check_sysctl.Check_sysctl, mac.check_trap_table.Check_trap_table, mac.ifconfig.Ifconfig, mac.kauth_listeners.Kauth_listeners, mac.kauth_scopes.Kauth_scopes, mac.kevents.Kevents, mac.list_files.List_Files, mac.lsmod.Lsmod, mac.lsof.Lsof, mac.malfind.Malfind, mac.mount.Mount, mac.netstat.Netstat, mac.proc_maps.Maps, mac.psaux.Psaux, mac.pslist.PsList, mac.pstree.PsTree, mac.socket_filters.Socket_filters, mac.timers.Timers, mac.trustedbsd.Trustedbsd, mac.vfsevents.VFSevents, timeliner.Timeliner, windows.bigpools.BigPools, windows.cachedump.Cachedump, windows.cmdline.CmdLine, windows.dlllist.DllList, windows.driverirp.DriverIrp, windows.driverscan.DriverScan, windows.envars.Envars, windows.filescan.FileScan, windows.getservicesids.GetServiceSIDs, windows.getsids.GetSIDs, windows.handles.Handles, windows.hashdump.Hashdump, windows.info.Info, windows.lsadump.Lsadump, windows.malfind.Malfind, windows.memmap.Memmap, windows.modscan.ModScan, windows.modules.Modules, windows.mutantscan.MutantScan, windows.netscan.NetScan, windows.poolscanner.PoolScanner, windows.privileges.Privs, windows.pslist.PsList, windows.psscan.PsScan, windows.pstree.PsTree, windows.registry.certificates.Certificates, windows.registry.hivelist.HiveList, windows.registry.hivescan.HiveScan, windows.registry.printkey.PrintKey, windows.registry.userassist.UserAssist, windows.ssdt.SSDT, windows.statistics.Statistics, windows.strings.Strings, windows.symlinkscan.SymlinkScan, windows.vadinfo.VadInfo, windows.virtmap.VirtMap)
С andreafortuna -D <directory_path>
и --proc-dump <directory_path>
одинаковы, и в этом примере я использовал ./procdump/
.
Чтобы выгрузить всю память (не только сам бинарный файл) данного процесса в Volatility 3, вам нужно использовать плагин windows.memmap.Memmap
с опциями --pid
и --dump
, как объясняется здесь.
Например:
vol.py -f mydump.vmem -o /path/to/output/dir windows.memmap.Memmap --pid 1233 --dump
Используя последнюю версию Volatility 3 на Python (2.0.0 beta.1), вы можете попробовать это, если это дамп памяти с машины под управлением Windows:
vol.py -f mydump.vmem windows.pslist.PsList --pid 1470 --dump
Параметр –dump довольно новый.
Volatility 3 Framework 2.0.0-beta.1
usage: volatility windows.pslist.PsList [-h] [--physical]
[--pid [PID [PID ...]]] [--dump]
optional arguments:
-h, --help показать это сообщение и выйти
--physical Показать физические смещения вместо виртуальных
--pid [PID [PID ...]]
Идентификатор процесса для включения (все остальные процессы
исключены)
--dump Извлечь указанные процессы
Ответ или решение
Чтобы получить дамп памяти определённого процесса с помощью Volatility 3, нужно использовать плагин windows.memmap.Memmap
, так как интерфейс и команды в последней версии Volatility изменились. Предыдущий способ с использованием плагина procdump
больше не актуален.
Вот шаги, которые вам нужно выполнить:
-
Убедитесь, что у вас установлен Volatility 3 и что вы используете последнюю версию, так как команда для извлечения дампа процесса может измениться в обновлениях.
-
Определите PID процесса, для которого вы хотите получить дамп памяти. Используйте плагин
windows.pslist.PsList
для получения списка процессов и их PID. Например:vol.py -f mydump.vmem windows.pslist.PsList
Это выведет список всех процессов, и вы сможете найти нужный.
-
Создайте директорий для дампа (если у вас его ещё нет):
mkdir /path/to/output/dir
-
Используйте плагин
windows.memmap.Memmap
, чтобы получить дамп памяти процесса. В команде укажите флаг--pid
для конкретного PID и флаг--dump
для извлечения памяти. Команда будет выглядеть следующим образом:vol.py -f mydump.vmem -o /path/to/output/dir windows.memmap.Memmap --pid 1470 --dump
Здесь
mydump.vmem
— это файл дампа памяти, а1470
— это PID вашего процесса. -
Проверьте содержимое директории, которую вы указали для дампа, чтобы убедиться, что файлы успешно извлечены.
Также можно использовать плагин windows.pslist.PsList
с флагом --dump
, что также работает в более новых версиях Volatility 3. Пример команды:
vol.py -f mydump.vmem windows.pslist.PsList --pid 1470 --dump
Эта команда также позволит вам получить дамп памяти указанного процесса.
Обратите внимание: Флаг --dump
является новым, и его использование делает извлечение информации более удобным. Убедитесь, что вы обращаетесь к официальной документации или справке вашего экземпляра Volatility 3 для получения последней информации о доступных параметрах и плагинах.