Skip to main content

Making volatility 3 profile - 20/08/2026

 Making volatility 3 profile - 20/08/2026

Let's assume we are dealing with the compromised system. 

We first need to find the debugging kernel. This kernel had must been compiled with debugging symbols (volatility 3 need these to find out info) and after compilation, it should not be stripped. Please note, due to the huge size of this file, these are not generally comes now with the OS.

On the compromised system run this command:

find / -name vmlinu\* -size +100M 2>/dev/null

You may get the following:

/usr/lib/debug/boot/vmlinux-5.10.0-21-amd64 --> If you find this then this means it is the debugging version. /boot/vmlinuz-5.10.0-21-amd64 --> and if you find this then it is kernel version

file /usr/lib/debug/boot/vmlinux-5.10.0-21-amd64 

/usr/lib/debug/boot/vmlinux-5.10.0-21-amd64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=5e5d3209033f927baa64…, 

with debug_info, not stripped --> This one is important

Package name check on debian system:

dpkg -S /usr/lib/debug/boot/vmlinux-5.10.0-21-amd64

Output: linux-image-5.10.0-21-amd64-dbg: ... (Means this package has come from -dbg package)

uname -r (To confirm)


Way to find out memory image kernel version. Let's say you got the memory dump but you don't know from where it is came from or what is it's kernel version:

vol3.py -f memory-avml.lime banners.Banners



Now challenge is if you do not find the debugging kernel then what you will do?

We need to download those from the below link. This link is for debian/ubuntu version. 

http://ddebs.ubuntu.com/pool/main/l/linux/ (manually search)

or

wget http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-unsigned-6.8.0-124-generic-dbgsym_6.8.0-124.124_amd64.ddeb

Now we need to extract vmlinux once download is done. 

apt install dpkg xz-utils -y

dpkg-deb -x linux-image-unsigned-6.8.0-124-generic-dbgsym_6.8.0-124.124_amd64.ddeb extracted

or

dpkg -x linux-image-unsigned-6.8.0-124-generic-dbgsym_6.8.0-124.124_amd64.ddeb extracted

ls -lh extracted/usr/lib/debug/boot/vmlinux-6.8.0-124-generic

Here the .ddeb is not installed. We just extracted the unstripped vmlinux. 


We can also install. 

apt install linux-image-<version>-dbgsym (Using this command we can also install, but before that need to add the repo)

echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ddebs.list

sudo apt install ubuntu-dbgsym-keyring

sudo apt update

sudo apt install linux-image-<version>-dbgsym

ls -lh /usr/lib/debug/boot/vmlinux-6.8.0-124-generic (Once the installation is done, you will get the file here, no extraction required this time)

This is another repo:

echo "deb http://deb.debian.org/debian-debug/ bullseye-debug main" | sudo tee /etc/apt/sources.list.d/debug.list

sudo apt update

sudo apt install linux-image-5.10.0-21-amd64-dbg

ls -lh /usr/lib/debug/boot/vmlinux-5.10.0-21-amd64 (Once the installation is done, you will get the file here, no extraction required this time)


Now we need dwarf2json to generate volatility profile.

dwarf2json is not a standard Linux application. Download the source from https://github.com/volatilityfoundation/dwarf2json and compile it. dwarf2jsonis written in Golang, so you will likely need to download other dependencies to build the binary. FYI dwarf2json requires a minimum of 16GB of RAM to run.

apt-get install -y golang git

git clone https://github.com/volatilityfoundation/dwarf2json

cd dwarf2json

go build

dwarf2json linux --elf /usr/lib/debug/boot/vmlinux-5.10.0-21-amd64 > vmlinux-5.10.0-21-amd64.json

ls -lh *.json


Now need to install the profile.

mkdir -p /usr/local/volatility/volatility3/symbols/linux

cp vmlinux-5.10.0-21-amd64.json /usr/local/volatility/volatility3/symbols/linux

or you can put the .json file on the directory where memory image is present. Then run below command.

vol3.py -s . -f memory-avml.lime linux.pslist.PsList


Enough hard work done. Now let's see how can we get the json file in easy way.

https://github.com/Abyss-W4tcher/volatility3-symbols

This github source will help you.

First find out the memory image kernel version just like the above way we did.

wget https://raw.githubusercontent.com/Abyss-W4tcher/volatility3-symbols/master/banners/banners_plain.json

grep -A 2 'Linux version 3.2.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.57-3+deb7u2' banners_plain.json

We have got the match. Now, we can easily download the appropriate ISF directly in the Volatility3 symbols directory:

# Create <volatility3_installation>/volatility3/symbols/linux/ beforehand if it doesn't exist

wget https://github.com/Abyss-W4tcher/volatility3-symbols/raw/master/Debian/amd64/3.2.0/4/Debian_3.2.0-4-amd64_3.2.57-3+deb7u2_amd64.json.xz -P <volatility3_installation>/volatility3/symbols/linux/




 

Avi









Comments

Popular posts from this blog

API hacking lab setup

 Follow the commands to install and configure API hacking lab: 1. Install kali linux and update all the packages.  apt update -y apt upgrade -y or apt dist-upgrade -y or apt full-upgrade -y If you face any problem regarding update, install cloud flare warp in the host machine, then again start updating packages in your kali vm.  2. Install and configure burpsuite professional.  After that open burpsuite and go to Extensions tab. Click on BAppStore. Search for Autorize extension, It will help us to automate authorization testing. Click on Download Jython from the right side. From Jython website click on Jython standalone JAR and save it. Go to Extensios > Extensions settings >  under Core extension settings find out Python environment on the right pane. Select the jython jar file that you just downloaded. Now again go to BAppStore and re-search for Autorize extension. You will see Install option this time after selecting Autorize extension. Install it. You ...

Disk acquisition and access for IR

 Goal for this lab is after we acquire the disk in .E01 format then how can we mount this to linux system for analysis.  দুইটা scenario cover করছি: (A) simple E01 + LVM (single disk), (B) E01 + Software RAID + LVM (multi-disk, যেমন disk1/disk2) From the linux analysis vm like sansforensic vm, you need to run the following commands.  We need to first create the working directories : mkdir -p /mnt/case/img /mnt/case/data E01 + LVM (single disk) - First case. Step 1 — E01 mount: ewfmount Webserver.E01 /mnt/case/img ls -lh  /mnt/case/img total 0  -r--r--r-- 1 root root 32G Feb 16 18:21 ewf1 Ewf1 is a raw disk image. It's size and main disk size are same. This is in read-only mode. See the permission. Step 2 — See the partition layout : mmls /mnt/case/img/ewf1 কোন offset-এ কোন partition আছে (boot, lvm ইত্যাদি) note করুন। RAID sign ( 0xfd ) আছে কিনা খেয়াল করুন — থাকলে Scenario B তে যান। lvscan | grep VulnOSv2-vg mount -o ro,noexec /dev/VulnOSv2-vg/root /mnt/case/dat...

How to use vim efficiently

  Here every command works in command mode . And if you need to write something then you need to go to Insert mode . Pressing i will take you to the insert mode.  1. Let's say you want to search something. For example you want to find avi keyword. Then first you need to go to the command mode by typing Esc . Now type /avi  (at the bottom) and hit enter. Press small n to forward this search pattern and press Shift N to go reverse.  2. Substitute something: :%s/old string/new string/g    (g for affecting globally) 3. If you want to pick the 1st letter of word then press w and last letter of word then press e .  4. yy means copy a single line. 2yy means copy double lines.  5. Shift P is for paste.  6. Shift D to delete a line or cut a line.  7. Press o to go a new line.  8. Press Home to go to the 1st letter of a line and End to go to the last letter of a line.  9. If you want to save the file then press wq! . 10. If ...