Introduzione
In questo articolo vedremo come installare ed usare volatility3 su Ubuntu 20.04. Il problema maggiore è rappresentato dalla configuraizione del profilo del Kernel. Gli step saranno i seguenti:
- Scaricare volatility3 e dwarf2json da github
- Installare go e compilare dwarf2json
- Installare i repository per il pacchetto dei simoboli del kernel
- Scaricare il pacchetto dei simoli del kernel e lime via apt
- Creare il profilo per volatility con dwarf2json
- Fare il dump della ram con lime
Scaricare e installare tutto il necessario
Adesso scarichiamo Volatility3 e dwarf2json da github:
$ git clone https://github.com/volatilityfoundation/volatility3
$ git clone https://github.com/volatilityfoundation/dwarf2json
installiamo go necessario per compilare dwarf2json
$ cd dwarf2json && go build
Installiamo il pacchetto per i simboli di debug del kernel
Per prima cosa creiamo il file source list che contiene gli url dove andare a pescare i pacchetti di debug:
deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" | \
sudo tee -a /etc/apt/sources.list.d/ddebs.list
Ora installiamo le chiavi per la verifica delle firme dei pacchetti e poi aggiorniamo il db dei repo
$ sudo apt update
Quindi installiamo il pacchetto coi simboli e poi installiamo lime
$ sudo apt install lime-forensics-dkms
Creiamo il profilo per volatility3
A questo punto dobbiamo usare dwarf2json per creare il file del profilo da spostare
$ ./dwarf2json linux --elf /usr/lib/debug/boot/vmlinux-`uname -r` --system-map /boot/System.map-`uname -r` | xz -c >> linux.json.xz
Ora spostiamo il json.xz sotto la cartella dei simboli di volatility3.
Usiamo Lime per fare il dump della ram
A questo punto il più è fatto. Ci basta caricare il modulo lime per il kernel e quindi effettuare il dump su file della ram.
Usiamo volatility3
Ok, abbiamo finito, ora possiamo usare volatility per estrarre la lista dei processi presente al momento del dump
Table Address Table Name Index Handler Address Handler Symbol
0xffff984013a0 64bit 0 0xffff976ca7b0 __x64_sys_read
0xffff984013a0 64bit 1 0xffff976ca8d0 __x64_sys_write
0xffff984013a0 64bit 2 0xffff976c6480 __x64_sys_open
..........................
0xffff984023e0 32bit 405 0xffff97532c10 __ia32_sys_clock_adjtime
0xffff984023e0 32bit 406 0xffff97530f60 __ia32_sys_clock_getres
0xffff984023e0 32bit 407 0xffff97530d70 __ia32_sys_clock_nanosleep
0xffff984023e0 32bit 408 0xffff97530bd0 __ia32_sys_timer_gettime
Proviamo AVML by microsoft per il dump della ram.
In alternativa a lime possiamo usare avml di Microsoft. Si tratta di un tools opensource prodotto da microsoft.
$ snap install rustup --classic
$ cd ~/forensics
$ git clone https://github.com/microsoft/avml.git
$ cd avml
$ curl https://sh.rustup.rs -sSf | sh -s -- -y
$ rustup target add x86_64-unknown-linux-musl
$ cargo build --release --target x86_64-unknown-linux-musl
$ cd target/x86_64-unknown-linux-musl/release
$ sudo ./avml ~/forensics/ram_dump.avml