Identify the correct profile with a live memory dump - Volatility

This section explains how to find the profile of a Windows/Linux memory dump with Volatility. In fact, the process is different according to the Operating System (Windows, Linux, MacOSX)

Identify the profile for Windows

$ volatility -f dump.mem imageinfo
Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86

Here, with this command, you determine 3 possible profiles. Then, you can specify the profile with the option profile :

$ volatility -f dump.mem --profile=Win7SP1x86 cmdline

Identify the profile for Linux

$ strings dump.raw | grep -i 'Linux version' | uniq
Linux version 4.4.0-72-lowlatency (buildd@lcy01-17) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) )

Now, you can get the identified profile on Github here. If you don’t find the profile, you must create it.

Create a profile for Linux

To create the correct profile, you have to get the same print when you make these commands :

$ strings dump.raw | grep -i 'Linux version' | uniq
Linux version 4.4.0-72-lowlatency (buildd@lcy01-17) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) )

$ uname -a
Linux version 4.4.0-72-lowlatency (buildd@lcy01-17) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) )

If you don’t have the correct kernel version because you don’t find the correct virtual machine, you can upgrade/downgrade your kernel.

Then, you can make the profile :

$ sudo apt install linux-image-4.4.0-72-lowlatency linux-headers-4.4.0-72-lowlatency
$ sudo apt install build-essential dwarfdump
$ git clone --depth=1 https://github.com/volatilityfoundation/volatility
$ cd volatility/tools/linux
$ make
$ sudo zip Ubuntu1604.zip volatility/tools/linux/module.dwarf /boot/System.map-4.4.0-72-lowlatency
$ mv Ubuntu1604.zip /usr/lib/python2.7/dist-packages/volatility/plugins/linux/

Identify the profile for MacOSX

$ vol -f dump.mem mac_get_profile
Profile                              Shift Address
------------------------------------ -------------
MacSierra_11_8_1_AMDx64              0x00004000000

in the same way, you can download the correct profile on Github here or create it.

Use a plugin

To use a plugin, you have to specify the plugin. But, sometimes, you download a new plugin. So, to use it :

# if you have a Windows plugin
$ sudo cp plugin.py /usr/lib/python2.7/dist-packages/volatility/plugins/
$ volatility -f mem.dmp --profile=Win7SP1x86 plugin

# if you have a Linux plugin
$ sudo cp linux_plugin.py /usr/lib/python2.7/dist-packages/volatility/plugins/linux/
$ volatility -f mem.dmp --profile=LinuxUbuntu1204x64 linux_plugin

# if you have a MacOSX plugin
$ sudo cp mac_plugin.py /usr/lib/python2.7/dist-packages/volatility/plugins/mac/
$ volatility -f mem.dmp --profile=MacMountainLion_10_8_3_AMDx64 mac_plugin
Written on May 28, 2020