Volatility как пользоваться windows

от admin

Русские Блоги

Использование волатильности для криминалистического анализа внутреннего доступа Windows (1): первый опыт

Введение

Следуя вышеизложенному, как упоминалось выше при использовании песочницы с кукушкой, при анализе вредоносного кода сначала используйте песочницу для грубого анализа, а затем целевая программа может быть динамически проанализирована (OD, отладка Windbg) или статический анализ (статическая антивирусная защита IDA). Компиляция). Если вам сложно каждый раз выполнять обратное преобразование, вы также можете использовать такие фреймворки, как Volatility, для проведения криминалистического анализа памяти. Volatility — это очень мощный инструмент для криминалистической экспертизы памяти, разработанный сотнями известных экспертов по безопасности со всего мира. Набор инструментов, которые можно использовать для сертификатов доступа в windows, linux, mac osx, android и других системах, давайте вместе испытаем его.

установка

Загрузите последнюю версию фреймворка:

Исполняемый файл может быть запущен непосредственно в соответствующей операционной системе, но автор предпочитает пакет с исходным кодом, поскольку фреймворк написан на языке Python, а код реализации каждой функции можно легко просмотреть через пакет с исходным кодом.

Использование пакетов исходного кода под windows:

Если вы хотите установить исходный код Volatility, вы можете переключиться в основной каталог исходного пакета Volatility в командной строке, а затем выполнить команду установки:

Если вы не хотите устанавливать исходный пакет, вы также можете напрямую выполнить следующую команду:

Если не должно быть никаких аварий, будет выдана следующая ошибка из-за отсутствия двух вспомогательных пакетов, pycrypto и distorm.

2.png

Давайте работать вместе, чтобы решить указанную выше ошибку.

Сначала установите пакет distorm, разархивируйте его и перейдите в корневой каталог distorm в командной строке, выполните команду установки:

Сообщалось об ошибке. Это связано с тем, что установка на экспериментальной машине автора — vs2010. По умолчанию в исходном коде указан компилятор vs2008, поэтому я не знаю его здесь. Мы можем открыть консоль Visual Studio 2010,

Затем введите следующую команду:

Затем перейдите в корневой каталог пакета distorm и выполните команду установки:

4.png

Это означает, что пакет успешно установлен.

Затем установите пакет pycrypto. Как указано выше, используйте консоль Visual Studio 2010 для установки переменных среды, перейдите в корневой каталог пакета pycrypto и затем выполните команду установки:

5.png

Здесь сообщается об ошибке. Первые несколько предупреждений можно игнорировать. Последнюю ошибку необходимо устранить, иначе она не может продолжаться:

Автор погуглил и обнаружил, что некоторые пользователи сети сталкивались с подобными проблемами раньше, но, похоже, они были решены.

6.png

На самом деле, это не так уж и сложно. Детскую обувь с небольшой базой на языке C. должно быть легко решить. Сначала используйте текстовый редактор, чтобы открыть файл заголовка ошибки tomcrypt_cipher.h, а затем найдите строку с ошибкой.

Язык C определяет массив, чтобы указать четкий размер массива, здесь остается пустым, поэтому сообщается об ошибке. Здесь мы пытаемся заполнить квадратные скобки 1. Затем установка по-прежнему сообщает об ошибке. Поэтому автор затем поискал крест имени cipher_descriptor [] Цитируя, я обнаружил, что это имя нигде не цитируется, поэтому вы можете посмотреть его здесь:

Затем выполните команду установки:

Обнаружил, что установка прошла успешно.

Затем, чтобы запустить Volatility, давайте проверим меню помощи:

Вы видите, что операция прошла успешно.

8.png

Что ж, здесь представлен пакет исходного кода под окнами, потому что окно консоли под окнами выглядит неудобно, автор немного навязчиво-компульсивен, поэтому автор сосредотачивается на использовании под linux.

Использование пакета исходного кода под linux (kali):

Пакеты зависимостей Kali в основном доступны, переключитесь в корневой каталог Volatility прямо под оболочкой, а затем проверьте справочную информацию.

9.png

Выглядит намного круче, чем консоль под окнами.

Создать файл дампа памяти

Поскольку Volatility анализирует файлы дампа памяти, нам необходимо захватить дампы памяти системы, которая подозревается в атаке.Существует три основных метода захвата дампа памяти.

Используйте песочницу для создания файлов памяти

Во-первых, нам нужно изменить два файла конфигурации cuckoo.conf и report.conf, чтобы включить возможность создания дампов памяти.

10.png

11.png

Затем сохраните и отправьте вредоносный образец в песочницу с кукушкой.

12.png

После завершения анализа файл дампа памяти можно будет найти в каталоге соответствующего отчета.

13.png

Использование VMware для создания функций дампа памяти

Приостановите систему виртуальной машины, а затем найдите * .vmem в соответствующем каталоге, например:

14.png

Используйте стороннее программное обеспечение для получения дампа памяти

На физических машинах для получения дампов памяти обычно можно использовать следующие инструменты:

Правила грамматики волатильности

Просмотр справки

Используйте -h или —help, чтобы перечислить все доступные параметры и плагины

—Info может распечатать все зарегистрированные объекты (плагины)

Результаты приведены ниже:

15.png

Вышеупомянутые профили очень важны для криминалистики памяти Windows. Обычно нам необходимо установить эту опцию.

Чтобы понять значение этой опции, нам сначала нужно взглянуть на новый термин — VTypes.

VTypes

Это язык для определения и анализа структур данных в среде Volatility. Большая часть нижнего уровня операционной системы написана на языке C, и большое количество структур данных используется для организации связанных переменных и атрибутов и управления ими. Поскольку Volatility написана на Python, Итак, нам нужен способ представления структуры данных языка C в исходном файле Python. Для этого используется VTypes.

Язык C определяет следующую структуру данных:

Использование языка VType для выражения вышеуказанной структуры выглядит следующим образом:

Чтобы понять приведенные выше определения, вам необходимо понимать базовый синтаксис Python, например: строки, словари, пары ключ-значение, списки, кортежи, наборы.

Во-первых, процесс имени структуры является первым ключом словаря, а следующее значение соответствует списку, 26 представляет размер структуры. Затем все элементы структуры являются кортежем,

Он содержит имя члена, затем смещение члена в структуре, а затем тип члена.

Такие обозначения можно увидеть везде в Volatility, например, в ключевой структуре данных ядра _EPROCESS окон:

16.png

Профили

Профиль — это набор VTypes, объединений и типов объектов в конкретной версии операционной системы и аппаратной архитектуре (x86, x64, ARM). Помимо этих компонентов, профиль также включает следующее:

Метаданные: название операционной системы (например: «windows», «mac», «linux»), версия ядра и номер компиляции.
Информация о системном вызове: индекс и имя системного вызова
Постоянное значение: глобальная переменная — глобальная переменная, которую можно найти по жестко заданному адресу в некоторых операционных системах.
Отображение системы: адреса ключевых глобальных переменных и функций (только для Linux и Mac)

Каждый профиль (файл конфигурации) имеет уникальное имя, которое обычно состоит из имени, версии, пакета обновления, системной структуры и другой информации об операционной системе. Например: Win7SP1x64 — это имя файла конфигурации 64-разрядной системы Windows 7 SP1.

Мы используем параметр —info, чтобы увидеть, какие значения профиля поддерживает Volatility.

17.png

Мы можем видеть из xp-win 10. Почему вы хотите установить параметр файла конфигурации, потому что разные версии операционной системы, элементы структуры данных ядра и смещения могут изменяться.

Общий формат команды

Как определить значение профиля файла дампа памяти

Если мы не указываем параметр —profile, по умолчанию используется WinXPSP2x86.

Мы можем использовать плагин imageinfo, чтобы угадать значение профиля файла дампа.

18.png

Мы можем заметить, что есть несколько значений профиля на выбор. Поскольку многие функции этих операционных систем схожи. Плагин imageinfo угадывает функцию значения профиля на основе функции плагина kdbgscan. А плагин kdbgscan через Найдите и проанализируйте характеристики блока данных отладчика ядра (_KDDEBUGGER_DATA64), чтобы угадать значение профиля.

Структура данных отладчика находится в модуле ядра NT (nt! KdDebuggerDataBlock). Она содержит скомпилированную строку, например: 3790.srv03_sp2_rtm.070216-1710, числовое значение указывает старший и дополнительный номера версий и номера пакетов обновления целевой операционной системы.

Плагин kdbgscan сканирует значение профиля файла дампа.

19.png

Вы можете видеть, что есть несколько результатов. В общем, первый результат правильный. Два плагина imageinfo и kdbgscan применимы только к файлу дампа памяти системы Windows. В Linux и Mac есть другие методы для определения правильного значения профиля.

Теперь мы можем указать значение параметра профиля.

Подключаемый модуль volshell используется для входа в эксклюзивную оболочку Volatility. В этой оболочке вы можете использовать команду dt («имя структуры данных ключа ядра») для просмотра определения структуры данных ключа ядра операционной системы.

20.png

Похоже ли это на команду dt в windbg?

Перечислить процесс

21.png

Если в столбце «Выход» отображаются дата и время, это означает, что процесс завершен. Но команда pslist не может отобразить скрытый процесс. Позже я расскажу, как просмотреть скрытый процесс.

подводить итоги

Volatility — это очень мощный фреймворк криминалистического анализа памяти, который также можно использовать для изучения архитектуры ядра конкретной операционной системы. Некоторые детские ботинки могут сказать, что инструменты AntiRootkit можно использовать для судебного анализа окон, например Xuetr (PcHunter), PowerTool, Но этот вид AntiRootkit обычно реализуется путем загрузки драйвера ядра, и он обычно не является открытым исходным кодом.Если вы хотите выяснить принцип его реализации, выполнение обратного анализа занимает много времени.

Volatility как раз наоборот. Он не требует загрузки драйверов, написан на языке Python и имеет открытый исходный код. Вам необходимо понимать реализацию определенных функций. Вы можете самостоятельно просмотреть исходный код, чтобы изучить и изучить, и он поддерживает Windows, Linux, Mac OS X, Android, что положительно для улучшения. , Возможность обратного анализа имеет большое преимущество. Сотни экспертов по безопасности по всему миру усердно работали над созданием. И с помощью этого инструмента вам не нужно открывать windbg для отладки на двух машинах или локальной отладки ядра, когда вы хотите просмотреть определение структуры данных ядра Windows Эту же функцию можно выполнить, выполнив команду dt в эксклюзивной оболочке Volatility. Позже автор предоставит другой практический контент, использующий Volatility для анализа вредоносного кода Windows.

Volatility Usage

The most basic Volatility commands are constructed as shown below. Replace plugin with the name of the plugin to use, image with the file path to your memory image, and profile with the name of the profile (such as Win7SP1x64).

Here is an example:

For everything beyond this example, such as controlling the output format, listing the available plugins and profiles, or supplying plugin-specific options, see the rest of the text below.

There are several command-line options that are global (i.e. they apply to all plugins). This section is for folks who are new to Volatility or anyone who wants to become more familiar with what functionality can be tweaked.

You can display the main help menu by passing -h or —help on command-line. This shows the global options and lists the plugins available to the currently specified profile. If you do not specify a profile, you’ll be working with the default, WinXPSP2x86 , thus you’ll only see plugins that are valid for that operating system and architecture (for example, you won’t see linux plugins or windows plugins that only work on Vista). To specify a profile other than the default, see Selecting a Profile below.

The remainder of this section will discuss the various options in greater detail.

Selecting a Profile

Volatility needs to know what type of system your memory dump came from, so it knows which data structures, algorithms, and symbols to use. A default profile of WinXPSP2x86 is set internally, so if you’re analyzing a Windows XP SP2 x86 memory dump, you do not need to supply —profile at all. However, for all others, you must specify the proper profile name.

Note: If you do not know what type of system the memory dump is from, use the [imageinfo](Command Reference23#imageinfo) or [kdbgscan](Command Reference23#kdbgscan) plugins for a suggestion. These plugins are Windows-only.

If you want to see a list of supported profile names, do the following:

Alternatives to Command Line Options

If you’re about to enter a lengthy engagement and don’t want to type common plugin flags, there are two alternatives: environment variables and configuration files. If an option is not supplied on command-line, Volatility will try to get it from an environment variable and if that fails — from a configuration file.

Note also that to avoid confusion, the ( -h/—help ) option also lists the current value of each parameter so you can easily check what value is being used (from the environment or the config files).

On a Linux or OS X system you can set options by exporting them in your shell, as shown below:

Configuration files are typically » volatilityrc » in the current directory or

/.volatilityrc (user’s home directory), or at user specified path (using the —conf-file option). An example of the file contents is shown below:

Configuration files are particularly useful when processing several memory samples in one sitting.

Notes:

  • Other plugin flags may be utilized in this way, for example KPCR , DTB or PLUGINS . When exporting variables, simply prefix VOLATILITY_ before the flag name (e.g. VOLATILITY_KPCR ). Otherwise, the flag name remains the same when adding it to the configuration file.
  • If you have a path with a space or more in the name, spaces should be replaced with %20 instead (e.g. LOCATION=file:///tmp/my%20image.img ).

Enabling Debug Messages

If something isn’t happening in Volatility the way you’d expect, try running the command with -d/—debug . This will enable the printing of debug messages to standard error. If you really need to debug Volatility (as in using pdb debugger), then add -d -d -d to your commands.

Using the Cache

Note: Caching has been disabled at this time.

The cache allows Volatility to store arbitrary objects and constants for later retrieval. This can include, DTB, KDBG, or KPCR addresses, entire x86 page translation tables, or even hibernation decompression data structures. To enable use of the cache, add —cache to your commands. This feature pickles (serializes) the data in files on your disk, so if you want to choose the location of cache files, use —cache-directory . For more information, see the caching system page in the developer guide for your release version.

Setting the Timezone

Timestamps extracted from memory can either be in system-local time, or in Universal Time Coordinates (UTC). If they’re in UTC, Volatility can be instructed to display them in a time zone of the analyst’s choosing. To choose a timezone, use one of the standard timezone names (such as Europe/London, US/Eastern or most Olson timezones) with the —tz=TIMEZONE flag. Volatility attempts to use pytz if installed, otherwise it uses tzset.

Читать:
Как сделать мигающий текст в html

Please note that specifying a timezone will not affect how system-local times are displayed. If you identify a time that you know is UTC-based, please file it as an issue in the issue tracker.

By default the _EPROCESS CreateTime and ExitTime timestamps are in UTC. Below is output from Volatility with pytz installed:

Below is output from the same sample using the —tz=America/Chicago option to get Central Standard Time:

Below is the same output above, but without the pytz library installed:

Setting the DTB

The DTB (Directory Table Base) is what Volatility uses to translate virtual addresses to physical addresses. By default, a kernel DTB is used (from the Idle/System process). If you want to use a different process’s DTB when accessing data, supply the address to —dtb=ADDRESS .

Setting the KDBG Address

This is a Windows-only option

Volatility scans for the _KDDEBUGGER_DATA64 structure using hard-coded signatures «KDBG» and a series of sanity checks. These signatures are not critical for the operating system to function properly, thus malware can overwrite them in attempt to throw off tools that do rely on the signature. Additionally, in some cases there may be more than one _KDDEBUGGER_DATA64 (for example if you apply a major OS update and don’t reboot), which can cause confusion and lead to incorrect process and module listings, among other problems. If you know the address add _KDDEBUGGER_DATA64 , you can specify it with —kdbg=ADDRESS and this override the automated scans. For more information, see the [kdbgscan](Command Reference#kdbgscan) plugin.

For Windows 8 and above, the —kdbg parameter should be the address of KdCopyDataBlock instead. For more information, see Windows 8 Memory Forensics.

Setting the KPCR Address

This is a Windows-only option

There is one KPCR (Kernel Processor Control Region) for each CPU on a system. Some Volatility plugins display per-processor information. Thus if you want to display data for a specific CPU, for example CPU 3 instead of CPU 1, you can pass the address of that CPU’s KPCR with —kpcr=ADDRESS . To locate the KPCRs for all CPUs, see the [kpcrscan](Command Reference#kpcrscan) plugin. Also note that starting in Volatility 2.2, many of the plugins such as [idt](Command Reference#idt) and [gdt](Command Reference#gdt) automatically iterate through the list of KPCRs.

Enabling Write Support

Write support in Volatility should be used with caution. Therefore, to actually enable it, you must not only type —write on command-line but you must type a «password» in response to a question that you’ll be prompted with. In most cases you will not want to use write support since it can lead to corruption or modification of data in your memory dump. However, special cases exist that make this feature really interesting. For example, you could cleanse a live system of certain malware by writing to RAM over firewire, or you could break into a locked workstation by patching bytes in the winlogon DLLs.

Specifying Additional Plugin Directories

Volatility’s plugin architecture can load plugin files and profiles from multiple directories at once. In the Volatility source code, most plugins are located in volatility/plugins . However, there is another directory ( volatility/contrib ) which is reserved for contributions from third party developers, or weakly supported plugins that simply aren’t enabled by default. To access these plugins you just type —plugins=contrib/plugins on command-line. It also enables you to create a separate directory of your own plugins that you can manage without having to add/remove/modify files in the core volatility directories.

Notes:

  • Subdirectories will also be traversed as long as there is an __init__.py file (which can be empty) within them.
  • The parameter to —plugins can also be a zip file containing the plugins such as —plugins=myplugins.zip .
  • If the specified directory contains profiles, these will also be loaded. This is convenient for using generated Linux/Android/Mac profiles with the standalone executable of Volatility.

Due to the way plugins are loaded, the external plugins directory or zip file must be specified before any plugin-specific arguments (including the name of the plugin). Example:

Choosing an Output Format

By default, plugins use text renderers to standard output. If you want to redirect to a file, you can of course use the console’s redirection (i.e. > out.txt ) or you could use —output-file=out.txt . The reason you can also choose —output=FORMAT is for allowing plugins to also render output as HTML, JSON, SQL, or whatever you choose. However, there are no plugins with those alternate output formats pre-configured for use, so you’ll need to add a function named render_html , render_json , render_sql , respectively to each plugin before using —output=HTML .

Plugin Specific Options

Many plugins accept arguments of their own, which are independent of the global options. To see the list of available options, type both the plugin name and -h/—help on command-line.

Using Volatility as a Library

Although its possible to use Volatility as a library, we hope to support it better in the future. Currently, if you need to import volatility from one of your other python scripts, you can use the following example code:

Memory Forensics — Volatility

V olatility is a tool that can be used to analyze a volatile memory of a system. You can inspect processes, look at command history, and even pull files and passwords from a system without even being on the system.

Prerequisite

  • I’ll assume you’ve already downloaded and installed volatility on your computer

Sample :

Scenario:

One of the SOC analysts took a memory dump from a machine infected with a meterpreter malware. As a Digital Forensicators, your job is to analyze the dump, extract the available indicators of compromise (IOCs) and answer the provided questions.

Capturing Windows Memory Using Winpmem

Winpmem is a part of the Pmem Suite, a suite of memory acquisition tools for Windows, Linux, and Mac OS. You can download the latest release of winpmem from here: https://github.com/Velocidex/c-aff4/releases

Run Winpmem

First, after we staged malicious activity, we downloaded winpmem 3.3 RC3 onto the victim Windows machine. From there, we opened a command-line terminal and executed the program:

The —output mem.raw option was used to name the output as memdump.raw. The —format raw and —volume_format raw options were used to output the memory in raw format (as opposed to something like aff4). After several minutes, the memory dump finished. We then transferred the raw memory file, memdump.raw, to our Kali & Windows machine.

Analyzing Windows Memory

Choosing the Right Profile

This part frustrates a lot of analysts. You can typically only analyze memory dumps that have a profile available in Volatility. Newer Windows 10 builds do not have compatible profiles in Volatility.

To find the right profile, type volatility —info to get a list of the available profiles. If you look under "Profiles" in the output, you'll see the following Windows 10 profiles:

Retrieve user’s passwords from a Windows memory dump

1. Identify the memory profile

First, we need to identify the correct profile of the system :

2. List the registry hive

With the correct profile, we can use the “hivelist’ plugin in order to extract the list of registry hive in the memory dump :

3. Extract the hashes

Now, with the virtual offset of SYSTEM and SAM, we can extract the hashes :

.\Volatility.exe -f Triage-Memory.mem — profile=Win2008R2SP1x64_23418 hashdump -y 0xfffff8a000024010 -s 0xfffff8a000e66010 > hashes.txt

4. Crack the hashes

Finally, we can process the hash using a local tool (like HashCat) or using a online tool like CrackStation :

Retrieve SHA1 hash (memory dump)

Just to check whether you download the right file or not.

In most of the cases volatility suggests multiple profiles with the volatility framework. In order to select the best memory profile for further analysis a kdbgscan is used.

.\Volatility.exe -f Triage-Memory.mem — profile=Win2008R2SP1x64_23418 kdbgscan

After selecting the correct profile it can be moved in to the next steps of analysis.

Analyzing Processes

By using the following command, a list of processes can be obtained which were there within the memory.

.\Volatility.exe -f Triage-Memory.mem — profile=Win7SP1x64 pslist

A parent-child relationship in between the processes can be obtained using the pstree attribute

.\Volatility.exe -f Triage-Memory.mem — profile=Win7SP1x64 pstree

Let’s run a last command before investigating deeper into these two processes. psxview will list processes that are trying to hide themselves while running on the computer, this plugin can be really useful.

./vol.exe -f Triage-Memory.mem — profile=Win7SP1x64 psxview

By identify processes seems hidden, if so you’ll see “False” in the first two columns (pslist and psscan).

Plugin to view the list of loaded DLLs for each process dlllist (linux env)

All application running

Use the shimcache option to get a full list of all executed applications and execution times

How to detect malicious files

In volatility, there exists an attribute named malfind. This is actually an inbuilt plugin and can be used for malicious process detection.

.\Volatility.exe -f Triage-Memory.mem — profile=Win7SP1x64 -D <Output_Location> -p <PID >malfind

Analyzing Network Connections

netscan . This plugin allows you to see the network connections on the machine at the time the memory was captured. I ran the plugin with volatility and directed the output to output_netscan.txt .

we can check running sockets and open connections on the computer. To do this we’ll use these different plugins: connscan, netscan and sockets

./vol.exe -f Triage-Memory.mem — profile=Win7SP1x64 connscan

The connscan plugin is a scanner for TCP connections, while sockets will print a list of open sockets and finally netscan (which cannot be used in our example due to the profile used) will scan a Vista (or later) image for connections and sockets.

Looking at Command-Line History

Command-line history using the cmdline plugin. Using the plugin, we able to see what commands were executed at the time that the memory was captured.

note we can find suspicious commands

Dumping the infected process

.\vol.exe -f Triage-Memory.mem — profile=Win7SP1x64 procdump -p 3496 — dump-dir dump-folder

After dumping the process we use PowerShell to find out the md5 hash value.

Get-FileHash -Algorithm md5 executable.3496.exe

Dump and capture flag memory written in notepad.exe

We know the PID of notepad.exe, use the memdump to dump the process memory then use strings or a hexeditor to look through the data

.\vol.exe -f Triage-Memory.mem — profile=Win7SP1x64 pslist

.\vol.exe -f Triage-Memory.mem — profile=Win7SP1x64 memdump -p 3032 — dump-dir .

after the dump has successfull, you can use strings tool to capture the flag in binary ( you can find the strings tool in kali linux )

Then we use ‘strings’ along with ‘grep’ to search for flags. Since notepad stores text in 16-bit little-endian format, so we need to add “-e” & “l” switches to work. In Notepad, as in Windows software in general, “Unicode” as an encoding name means UTF-16 Little Endian (UTF-16LE). Similarly, “Unicode big endian” means UTF-16 Big Endian.

Finding short name of the file at file record (Managed file transfer)

.\vol.exe -f Triage-Memory.mem — profile=Win7SP1x64 mftparser > mft.txt

Dump the VAD info ( memory protection constants )

Command displays extended information about a process’s VAD nodes. In particular, it shows: The address of the MMVAD structure in kernel memory. The starting and ending virtual addresses in process memory that the MMVAD structure pertains to.

The memory protection constant (permissions). Note there is a difference between the original protection and current protection. The original protection is derived from the flProtect parameter to VirtualAlloc. For example you can reserve memory (MEM_RESERVE) with protection PAGE_NOACCESS (original protection). Later, you can call VirtualAlloc again to commit (MEM_COMMIT) and specify PAGE_READWRITE (becomes current protection). The vadinfo command shows the original protection only. Thus, just because you see PAGE_NOACCESS here, it doesn’t mean code in the region cannot be read, written, or executed.

Investigating In-Memory Network Data with Volatility ( Linux Forensics )

This part is recovering network information. This will include enumerating sockets, network connections, and packet contents. The post will discuss each plugin along with its implementation, how to use it, output on a sample memory capture, and which forensics scenarios it applies to.

Windows Tutorial¶

This guide provides a brief introduction to how volatility3 works as a demonstration of several of the plugins available in the suite.

Acquiring memory¶

Volatility does not provide the ability to acquire memory. Memory can be acquired using a number of tools, below are some examples but others exist:

Listing Plugins¶

The following is a sample of the windows plugins available for volatility3, it is not complete and more more plugins may be added. For a complete reference, please see the volatility 3 list of plugins . For plugin requests, please create an issue with a description of the requested plugin.

Here the the command is piped to grep and head in-order to provide the start of a list of the available windows plugins.

Using plugins¶

The following is the syntax to run the volatility CLI.

Example¶

windows.pslist¶

In this example we will be using a memory dump from the PragyanCTF’22. We will limit the discussion to memory forensics with volatility 3 and not extend it to other parts of the challenges.

When using windows plugins in volatility 3, the required ISF file can often be generated from PDB files automatically downloaded from Microsoft servers, and therefore does not require locating or adding specific ISF files to the volatility 3 symbols directory.

windows.pslist helps list the processes running while the memory dump was taken.

windows.pstree¶

windows.pstree helps to display the parent child relationships between processes.

Here the the command is piped to head in-order to provide smaller output, here listing only the first 20.

Похожие статьи