How to generate a Volatility profile for a Linux system

Po rozpoczęciu analizy zrzutu pamięci systemu Linux przy użyciu zmienności, pierwszym problemem, z którym można się spotkać, jest wybór odpowiedniego profilu pamięci.

Moim zdaniem najlepszą praktyką jest wygenerowanie własnego profilu, przy użyciu maszyny o tej samej konfiguracji co cel (jeśli jest dostępna) lub (jeśli to możliwe) bezpośrednio na maszynie docelowej (oczywiście po przejęciu kryminalistycznym).

Profil Linuksa jest zasadniczo plikiem zip zawierającym informacje o strukturach danych jądra i symbolach debugowania, używanym przez Volatility do lokalizowania krytycznych informacji i sposobu ich analizowania po znalezieniu.

 

Tworzenie profilu jest prostym procesem i składa się z kilku kroków:

 

Pobierz zaktualizowaną kopię Volatility:

 

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

Utwórz module.dwarf (struktury danych jądra), używając specjalnego narzędzia dostarczonego przez volatility framework:

$ cd volatility/tools/linux 
$ make 

Utwórz plik zip zawierający moduł.dwarf i symbole debugowania w System.map uruchomionego jądra:

zip $(lsb_release -i -s)_$(uname -r)_profile.zip ./volatility/tools/linux/module.dwarf /boot/System.map-$(uname -r)

Na koniec skopiuj plik zip do ścieżki wtyczki volatility na stacji roboczej forensic, zwykle w volatility/volatility/plugins/overlays/linux

andrea@Lucille:~/tmp/volatility$ ./vol.py --info | grep Debian
 Volatility Foundation Volatility Framework 2.6.1
 LinuxDebian_4_9_0-8-amd64_profilex64 - A Profile for Linux Debian_4.9.0-8-amd64_profile x64

Oczywiście cały proces można opakować w prosty skrypt bash:

#!/bin/bash
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility/tools/linux/ && make
cd ../../../
zip $(lsb_release -i -s)_$(uname -r)_profile.zip ./volatility/tools/linux/module.dwarf /boot/System.map-$(uname -r)
rm -rf ./volatility