
Продвинутый фреймворк для криминалистического анализа памяти
Этот проект заархивирован. См. Volatility 3 для современных расследований: https://github.com/volatilityfoundation/volatility3
Volatility Framework — это полностью открытый набор инструментов, реализованных на Python под лицензией GNU General Public License, для извлечения цифровых артефактов из образцов энергозависимой памяти (RAM). Методы извлечения выполняются полностью независимо от исследуемой системы, но предоставляют доступ к состоянию системы во время выполнения. Фреймворк предназначен для ознакомления с методами и сложностями, связанными с извлечением цифровых артефактов из образцов энергозависимой памяти, и предоставляет платформу для дальнейшей работы в этой захватывающей области исследований.
Дистрибутив Volatility доступен по адресу: http://www.volatilityfoundation.org/#!releases/component_71401
Volatility должен работать на любой платформе, поддерживающей Python (http://www.python.org)
Volatility поддерживает исследование следующих образов памяти:
Windows:
Примечание: Пожалуйста, ознакомьтесь с рекомендациями по следующей ссылке для получения информации о совместимости с недавно пропатченными образцами памяти Windows 7 (и более поздних версий):
https://github.com/volatilityfoundation/volatility/wiki/2.6-Win-Profiles
Linux:
Mac OSX:
Volatility не предоставляет возможности сбора образцов памяти. Для сбора существуют как бесплатные, так и коммерческие решения. Если вы хотите получить рекомендации по подходящим решениям для сбора, свяжитесь с нами по адресу:
volatility (at) volatilityfoundation (dot) org
Volatility поддерживает различные форматы файлов образцов и возможность преобразования между этими форматами:
Для более подробного списка возможностей см.:
https://github.com/volatilityfoundation/volatility/wiki
Также см. репозиторий плагинов сообщества:
https://github.com/volatilityfoundation/community
Если вы хотите попробовать Volatility, вы можете загрузить образцы образов памяти по следующему URL:
https://github.com/volatilityfoundation/volatility/wiki/Memory-Samples
Списки рассылки для поддержки пользователей и разработчиков Volatility доступны по следующему адресу:
http://lists.volatilesystems.com/mailman/listinfo
Для получения информации или запросов обращайтесь:
Volatility Foundation
Веб: http://www.volatilityfoundation.org http://volatility-labs.blogspot.com http://volatility.tumblr.com
Электронная почта: volatility (at) volatilityfoundation (dot) org
IRC: #volatility на freenode
Twitter: @volatility
Некоторые плагины могут иметь другие требования, которые можно найти по адресу: https://github.com/volatilityfoundation/volatility/wiki/Installation
Распакуйте последнюю версию Volatility с volatilityfoundation.org
Чтобы просмотреть доступные опции, выполните "python vol.py -h" или "python vol.py --info"
Пример:
$ python vol.py --info Volatility Foundation Volatility Framework 2.6
AMD64PagedMemory - Стандартное 64-битное адресное пространство AMD. ArmAddressSpace - Адресное пространство для процессоров ARM FileAddressSpace - Прямое файловое адресное пространство. HPAKAddressSpace - Поддержка формата HPAK IA32PagedMemory - Стандартное адресное пространство страниц IA-32. IA32PagedMemoryPae - Реализует адресное пространство страниц IA-32 PAE. Отвечает за LimeAddressSpace - Адресное пространство для Lime LinuxAMD64PagedMemory - 64-битное адресное пространство AMD для Linux. MachOAddressSpace - Адресное пространство для файлов mach-o для поддержки atc-ny memory reader OSXPmemELF - Поддержка формата ELF64-дампа VirtualBox QemuCoreDumpElf - Поддержка формата ELF32 и ELF64-дампа QEMU VMWareAddressSpace - Поддержка снимков VMware (VMSS) и файлов сохранённого состояния (VMSS) VMWareMetaAddressSpace - Поддержка формата VMEM с метаданными VMSN/VMSS VirtualBoxCoreDumpElf64 - Поддержка формата ELF64-дампа VirtualBox Win10AMD64PagedMemory - 64-битное адресное пространство AMD для Windows 10. WindowsAMD64PagedMemory - 64-битное адресное пространство AMD для Windows. WindowsCrashDumpSpace32 - Поддержка формата аварийного дампа Windows (32 бита) WindowsCrashDumpSpace64 - Поддержка формата аварийного дампа Windows (64 бита) WindowsCrashDumpSpace64BitMap - Поддержка формата аварийного дампа Windows с битовой картой WindowsHiberFileSpace32 - Адресное пространство гибернации для файлов гибернации Windows.
amcache - Вывод информации AmCache apihooks - Обнаружение перехвата API в памяти процессов и ядра atoms - Вывод таблиц атомов сеансов и оконных станций atomscan - Сканер пулов для таблиц атомов auditpol - Вывод политик аудита из HKLM\SECURITY\Policy\PolAdtEv bigpools - Дамп больших пулов страниц с помощью BigPagePoolScanner bioskbd - Чтение буфера клавиатуры из памяти реального режима cachedump - Дамп кэшированных хэшей домена из памяти callbacks - Вывод общесистемных процедур уведомлений clipboard - Извлечение содержимого буфера обмена Windows cmdline - Отображение аргументов командной строки процессов cmdscan - Извлечение истории команд сканированием _COMMAND_HISTORY connections - Вывод списка открытых соединений [только Windows XP и 2003] connscan - Сканер пулов для TCP-соединений consoles - Извлечение истории команд сканированием _CONSOLE_INFORMATION crashinfo - Дамп информации об аварийном дампе deskscan - Сканер пулов для tagDESKTOP (рабочие столы) devicetree - Отображение дерева устройств dlldump - Дамп DLL из адресного пространства процесса dlllist - Вывод списка загруженных DLL для каждого процесса driverirp - Обнаружение перехвата IRP драйвера drivermodule - Привязка объектов драйвера к модулям ядра driverscan - Сканер пулов для объектов драйверов dumpcerts - Дамп RSA-ключей (закрытых и открытых) SSL dumpfiles - Извлечение отображённых и кэшированных файлов dumpregistry - Дамп файлов реестра на диск editbox - Отображение информации об элементах управления Edit (Listbox экспериментально) envars - Отображение переменных окружения процессов eventhooks - Вывод подробностей о перехватчиках событий Windows evtlogs - Извлечение журналов событий Windows (только XP/2003) filescan - Сканер пулов для объектов файлов gahti - Дамп информации о типах дескрипторов USER gditimers - Вывод установленных таймеров и обратных вызовов GDI gdt - Отображение глобальной дескрипторной таблицы getservicesids - Получение имен служб из реестра и возврат вычисленного SID getsids - Вывод SID, владеющих каждым процессом handles - Вывод списка открытых дескрипторов для каждого процесса hashdump - Дамп хэшей паролей (LM/NTLM) из памяти hibinfo - Дамп информации о файле гибернации hivedump - Вывод куста реестра hivelist - Вывод списка кустов реестра hivescan - Сканер пулов для кустов реестра hpakextract - Извлечение физической памяти из файла HPAK hpakinfo - Информация о файле HPAK idt - Отображение таблицы дескрипторов прерываний iehistory - Восстановление кэша/истории Internet Explorer imagecopy - Копирование адресного пространства в виде сырого DD-образа imageinfo - Определение информации об образе impscan - Сканирование вызовов импортируемых функций joblinks - Вывод информации о связях заданий процессов kdbgscan - Поиск и дамп потенциальных значений KDBG kpcrscan - Поиск и дамп потенциальных значений KPCR ldrmodules - Обнаружение несвязанных DLL limeinfo - Дамп информации о формате файла Lime linux_apihooks - Проверка перехватов API в пользовательском режиме linux_arp - Вывод таблицы ARP linux_aslr_shift - Автоматическое определение сдвига ASLR в Linux linux_banner - Вывод баннера Linux linux_bash - Восстановление истории bash из памяти процесса bash linux_bash_env - Восстановление динамических переменных окружения процесса linux_bash_hash - Восстановление хэш-таблицы bash из памяти процесса bash linux_check_afinfo - Проверка указателей на функции операций сетевых протоколов linux_check_creds - Проверка, не разделяют ли какие-либо процессы структуры учётных данных linux_check_evt_arm - Проверка таблицы векторов исключений на перехват таблицы системных вызовов linux_check_fop - Проверка структур операций с файлами на изменения руткитами linux_check_idt - Проверка, не изменена ли IDT linux_check_inline_kernel - Проверка инлайн-перехватов ядра linux_check_modules - Сравнение списка модулей с информацией sysfs, если доступна linux_check_syscall - Проверка, не изменена ли таблица системных вызовов linux_check_syscall_arm - Проверка, не изменена ли таблица системных вызовов linux_check_tty - Проверка устройств tty на перехваты linux_cpuinfo - Вывод информации о каждом активном процессоре linux_dentry_cache - Сбор файлов из кэша dentry linux_dmesg - Сбор буфера dmesg linux_dump_map - Запись выбранных отображений памяти на диск linux_dynamic_env - Восстановление динамических переменных окружения процесса linux_elfs - Поиск ELF-бинарников в отображениях процесса linux_enumerate_files - Список файлов, на которые ссылается кэш файловой системы linux_find_file - Список и восстановление файлов из памяти linux_getcwd - Список текущих рабочих каталогов каждого процесса linux_hidden_modules - Извлечение памяти для поиска скрытых модулей ядра linux_ifconfig - Сбор активных интерфейсов linux_info_regs - Аналог 'info registers' в GDB. Выводит все linux_iomem - Вывод, аналогичный /proc/iomem linux_kernel_opened_files - Список файлов, открытых из ядра linux_keyboard_notifiers - Разбор цепочки уведомителей клавиатуры linux_ldrmodules - Сравнение вывода proc maps со списком библиотек из libdl linux_library_list - Список библиотек, загруженных в процесс linux_librarydump - Дамп разделяемых библиотек из памяти процесса на диск linux_list_raw - Список приложений с неразборчивыми сокетами linux_lsmod - Сбор загруженных модулей ядра linux_lsof - Список файловых дескрипторов и их путей linux_malfind - Поиск подозрительных отображений процесса linux_memmap - Дамп карты памяти для задач Linux linux_moddump - Извлечение загруженных модулей ядра linux_mount - Сбор смонтированных файловых систем/устройств linux_mount_cache - Сбор смонтированных файловых систем/устройств из kmem_cache linux_netfilter - Список перехватов Netfilter linux_netscan - Извлечение структур сетевых соединений linux_netstat - Список открытых сокетов linux_pidhashtable - Перечисление процессов через хэш-таблицу PID linux_pkt_queues - Запись очередей пакетов каждого процесса на диск linux_plthook - Сканирование PLT ELF-бинарников на перехваты к необязательным образам linux_proc_maps - Сбор карт памяти процесса linux_proc_maps_rb - Сбор карт процесса Linux через красно-чёрное дерево отображений linux_procdump - Дамп исполняемого образа процесса на диск linux_process_hollow - Проверка признаков подмены процесса linux_psaux - Сбор процессов с полной командной строкой и временем запуска linux_psenv - Сбор процессов с их статическими переменными окружения linux_pslist - Сбор активных задач обходом списка task_struct->task linux_pslist_cache - Сбор задач из kmem_cache linux_psscan - Сканирование физической памяти на процессы linux_pstree - Отображение родительско-дочерних отношений между процессами linux_psxview - Поиск скрытых процессов с помощью различных списков процессов linux_recover_filesystem - Восстановление всей кэшированной файловой системы из памяти linux_route_cache - Восстановление кэша маршрутизации из памяти linux_sk_buff_cache - Восстановление пакетов из sk_buff kmem_cache linux_slabinfo - Эмуляция /proc/slabinfo на работающей машине linux_strings - Сопоставление физических смещений с виртуальными адресами (может занять время, ОЧЕНЬ многословно) linux_threads - Вывод потоков процессов linux_tmpfs - Восстановление файловых систем tmpfs из памяти linux_truecrypt_passphrase - Восстановление кэшированных паролей Truecrypt linux_vma_cache - Сбор VMA из кэша vm_area_struct linux_volshell - Оболочка в образе памяти linux_yarascan - Оболочка в образе памяти Linux lsadump - Дамп (расшифрованных) секретов LSA из реестра mac_adium - Список сообщений Adium mac_apihooks - Проверка перехватов API в процессах mac_apihooks_kernel - Проверка, перехвачены ли функции системных вызовов и ядра mac_arp - Вывод таблицы ARP mac_bash - Восстановление истории bash из памяти процесса bash mac_bash_env - Восстановление переменных окружения bash mac_bash_hash - Восстановление хэш-таблицы bash из памяти процесса bash mac_calendar - Получение событий календаря из Calendar.app mac_check_fop - Проверка указателей операций с файлами mac_check_mig_table - Список записей в таблице MIG ядра mac_check_syscall_shadow - Поиск теневых таблиц системных вызовов mac_check_syscalls - Проверка, перехвачены ли записи таблицы системных вызовов mac_check_sysctl - Проверка неизвестных обработчиков sysctl mac_check_trap_table - Проверка, перехвачены ли записи таблицы ловушек mach mac_compressed_swap - Вывод статистики компрессора VM Mac OS X и дамп всех сжатых страниц mac_contacts - Получение имён контактов из Contacts.app mac_dead_procs - Вывод завершённых/освобождённых процессов mac_dead_sockets - Вывод завершённых/освобождённых сетевых сокетов mac_dead_vnodes - Список освобождённых структур vnode mac_devfs - Список файлов в кэше файлов mac_dmesg - Вывод отладочного буфера ядра mac_dump_file - Дамп указанного файла mac_dump_maps - Дамп диапазонов памяти процесса(ов), опционально включая страницы в сжатой подкачке mac_dyld_maps - Получение карт памяти процессов из структур данных dyld mac_find_aslr_shift - Поиск значения сдвига ASLR для образов 10.8+ mac_get_profile - Автоматическое определение профилей Mac mac_ifconfig - Список информации о сетевых интерфейсах для всех устройств mac_interest_handlers - Список обработчиков интересов IOKit mac_ip_filters - Отчёт о любых перехваченных IP-фильтрах mac_kernel_classes - Список загруженных классов C++ в ядре mac_kevents - Отображение родительско-дочерних отношений процессов mac_keychaindump - Восстановление возможных ключей связки ключей. Используйте chainbreaker для открытия соответствующих файлов связки mac_ldrmodules - Сравнение вывода proc maps со списком библиотек из libdl mac_librarydump - Дамп исполняемого файла процесса mac_list_files - Список файлов в кэше файлов mac_list_kauth_listeners - Список слушателей области Kauth mac_list_kauth_scopes - Список областей Kauth и их статус mac_list_raw - Список приложений с неразборчивыми сокетами mac_list_sessions - Перечисление сеансов mac_list_zones - Вывод активных зон mac_lsmod - Список загруженных модулей ядра mac_lsmod_iokit - Список загруженных модулей ядра через IOKit mac_lsmod_kext_map - Список загруженных модулей ядра mac_lsof - Список открытых файлов для каждого процесса mac_machine_info - Вывод информации о машине для образца mac_malfind - Поиск подозрительных отображений процесса mac_memdump - Дамп адресуемых страниц памяти в файл mac_moddump - Запись указанного расширения ядра на диск mac_mount - Вывод информации о смонтированных устройствах mac_netstat - Список активных сетевых соединений для каждого процесса mac_network_conns - Список сетевых соединений из структур сети ядра mac_notesapp - Поиск содержимого сообщений Notes mac_notifiers - Обнаружение руткитов, добавляющих перехваты в I/O Kit (например, LogKext) mac_orphan_threads - Список потоков, не отображающихся на известные модули/процессы mac_pgrp_hash_table - Обход хэш-таблицы групп процессов mac_pid_hash_table - Обход хэш-таблицы PID mac_print_boot_cmdline - Вывод аргументов загрузки ядра mac_proc_maps - Получение карт памяти процессов mac_procdump - Дамп исполняемого файла процесса mac_psaux - Вывод процессов с аргументами в пользовательском режиме (**argv) mac_psenv - Вывод процессов с окружением в пользовательском режиме (**envp) mac_pslist - Список запущенных процессов mac_pstree - Отображение родительско-дочерних отношений процессов mac_psxview - Поиск скрытых процессов с помощью различных списков процессов mac_recover_filesystem - Восстановление кэшированной файловой системы mac_route - Вывод таблицы маршрутизации mac_socket_filters - Отчёт о фильтрах сокетов mac_strings - Сопоставление физических смещений с виртуальными адресами (может занять время, ОЧЕНЬ многословно) mac_tasks - Список активных задач mac_threads - Список потоков процессов mac_threads_simple - Список потоков с временем запуска и приоритетом mac_timers - Отчёт о таймерах, установленных драйверами ядра mac_trustedbsd - Список вредоносных политик trustedbsd mac_version - Вывод версии Mac mac_vfsevents - Список процессов, фильтрующих события файловой системы mac_volshell - Оболочка в образе памяти mac_yarascan - Сканирование памяти на сигнатуры Yara machoinfo - Дамп информации о формате файла Mach-O malfind - Поиск скрытого и внедрённого кода mbrparser - Сканирование и разбор потенциальных главных загрузочных записей (MBR) memdump - Дамп адресуемой памяти процесса memmap - Вывод карты памяти messagehooks - Список перехватчиков сообщений рабочего стола и окон потоков mftparser - Сканирование и разбор потенциальных записей MFT moddump - Дамп драйвера ядра в исполняемый файл образца modscan - Сканер пулов для модулей ядра modules - Вывод списка загруженных модулей multiscan - Сканирование различных объектов за один раз mutantscan - Сканер пулов для объектов мьютексов netscan - Сканирование образа Vista (или новее) на соединения и сокеты notepad - Список текущего отображаемого текста notepad objtypescan - Сканирование объектов типов Windows patcher - Пропатчивание памяти на основе сканирования страниц poolpeek - Настраиваемый плагин сканера пулов pooltracker - Отображение сводки использования тегов пулов printkey - Вывод раздела реестра, его подразделов и значений privs - Отображение привилегий процесса procdump - Дамп процесса в исполняемый файл образца pslist - Вывод всех запущенных процессов обходом списков EPROCESS psscan - Сканер пулов для объектов процессов pstree - Вывод списка процессов в виде дерева psxview - Поиск скрытых процессов с помощью различных списков процессов qemuinfo - Дамп информации QEMU raw2dmp - Преобразование образца физической памяти в аварийный дамп windbg screenshot - Сохранение псевдо-скриншота на основе окон GDI servicediff - Список служб Windows (аналог Plugx) sessions - Список подробностей о _MM_SESSION_SPACE (сеансы входа пользователей) shellbags - Вывод информации ShellBags shimcache - Разбор раздела реестра совместимости приложений Shim Cache shutdowntime - Вывод времени завершения работы машины из реестра sockets - Вывод списка открытых сокетов sockscan - Сканер пулов для объектов TCP-сокетов ssdt - Отображение записей SSDT strings - Сопоставление физических смещений с виртуальными адресами (может занять время, ОЧЕНЬ многословно) svcscan - Сканирование служб Windows symlinkscan - Сканер пулов для объектов символических ссылок thrdscan - Сканер пулов для объектов потоков threads - Исследование _ETHREAD и _KTHREAD timeliner - Создание временной шкалы из различных артефактов в памяти timers - Вывод таймеров ядра и связанных DPC модулей truecryptmaster - Восстановление мастер-ключей TrueCrypt 7.1a truecryptpassphrase - Поиск кэшированных паролей TrueCrypt truecryptsummary - Сводка TrueCrypt unloadedmodules - Вывод списка выгруженных модулей userassist - Вывод разделов реестра UserAssist и информации userhandles - Дамп таблиц дескрипторов USER vaddump - Дамп разделов VAD в файл vadinfo - Дамп информации VAD vadtree - Обход дерева VAD и отображение в виде дерева vadwalk - Обход дерева VAD vboxinfo - Дамп информации VirtualBox verinfo - Вывод информации о версии из PE-образов vmwareinfo - Дамп информации VMware VMSS/VMSN volshell - Оболочка в образе памяти win10cookie - Поиск значения ObHeaderCookie для Windows 10 windows - Вывод окон рабочего стола (подробные сведения) wintree - Вывод дерева окон рабочего стола в Z-порядке wndscan - Сканер пулов для оконных станций yarascan - Сканирование памяти процесса или ядра с помощью сигнатур Yara
Чтобы получить дополнительную информацию об образце памяти Windows и убедиться, что Volatility поддерживает этот тип образца, выполните 'python vol.py imageinfo -f <имя_образа>' или 'python vol.py kdbgscan -f <имя_образа>'
Пример:
$ python vol.py imageinfo -f WIN-II7VOJTUNGL-20120324-193051.raw Volatility Foundation Volatility Framework 2.6 Determining profile based on KDBG search...
Suggested Profile(s) : Win2008R2SP0x64, Win7SP1x64, Win7SP0x64, Win2008R2SP1x64 (Instantiated with Win7SP0x64)
AS Layer1 : AMD64PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/Path/to/WIN-II7VOJTUNGL-20120324-193051.raw)
PAE type : PAE
DTB : 0x187000L
KDBG : 0xf800016460a0
Number of Processors : 1
Image Type (Service Pack) : 1
KPCR for CPU 0 : 0xfffff80001647d00L
KUSER_SHARED_DATA : 0xfffff78000000000L
Image date and time : 2012-03-24 19:30:53 UTC+0000
Image local date and time : 2012-03-25 03:30:53 +0800
Если imageinfo или kdbgscan предлагают несколько профилей, или у вас возникли проблемы с анализом образцов памяти Windows 7 или более поздних версий, пожалуйста, ознакомьтесь с рекомендациями здесь:
https://github.com/volatilityfoundation/volatility/wiki/2.6-Win-Profiles
Запустите другие плагины. -f обязательный параметр для всех плагинов. Некоторые также требуют/принимают другие параметры. Выполните "python vol.py <плагин> -h" для получения дополнительной информации о конкретной команде. Справочная wiki по командам также доступна на сайте GitHub:https://github.com/volatilityfoundation/volatility/wiki
а также Основное использование:
https://github.com/volatilityfoundation/volatility/wiki/Volatility-Usage
Авторские права (C) 2007-2016 Volatility Foundation
Все права защищены
Volatility — это свободное программное обеспечение; вы можете распространять и/или изменять его в соответствии с условиями GNU General Public License, опубликованной Free Software Foundation; либо версии 2 Лицензии, либо (по вашему выбору) любой более поздней версии.
Volatility распространяется в надежде, что он будет полезен, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. См. GNU General Public License для получения более подробной информации.
Вы должны были получить копию GNU General Public License вместе с Volatility. Если нет, смотрите http://www.gnu.org/licenses/.
Поддержка Volatility не предоставляется. НИКАКИХ гарантий; даже в отношении товарной пригодности или соответствия конкретной цели.
Если вы считаете, что нашли ошибку, сообщите о ней по адресу:
https://github.com/volatilityfoundation/volatility/issues
Чтобы мы могли решить ваши проблемы как можно быстрее, при сообщении об ошибке, пожалуйста, укажите следующую информацию:
В зависимости от операционной системы образа памяти вам может потребоваться предоставить дополнительную информацию, например:
Для Windows:
Для Linux:
Другие варианты связи можно найти по адресу: https://github.com/volatilityfoundation/volatility/wiki
Volatility Foundation не делает никаких заявлений о достоверности или корректности выходных данных Volatility. Многие факторы могут способствовать некорректности выходных данных Volatility, включая, помимо прочего, вредоносные модификации операционной системы, неполную информацию из-за подкачки и повреждение информации при получении образа.
Следующий URL содержит справочник всех команд, поддерживаемых Volatility.
https://github.com/volatilityfoundation/volatility/wiki