Volatility Cheat-sheet

Quelques tips utiles à avoir sous la main en cas d'investigation mémoire

Analyse mémoire Windows

Récupérer les hash de la capture

volatility -f dump.raw --profile=Win7SP1x86 hashdump

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
John Doe:1000:aad3b435b51404eeaad3b435b51404ee:b9f917853e3dbf6e6831ecce60725930:::

Afficher les valeurs de registre

volatility -f dump.raw --profile Win7SP1x86 printkey -K "Software\Microsoft\Windows\CurrentVersion\Run"

----------------------------
Registry: \??\C:\Users\John Doe\ntuser.dat
Key name: Run (S)
Last updated: 2013-01-12 14:13:19

Subkeys:

Values:
REG_SZ        RESTART_STICKY_NOTES : (S) C:\Windows\System32\Malware.exe
REG_SZ        IEPreload       : (S) "C:\Users\John Doe\AppData\Roaming\malware.exe

Afficher les commandes en cours

volatility -f dump.raw --profile Win7SP1x86 cmdline

AvastUI.exe pid:   2720
Command line : "C:\Program Files\AVAST Software\Avast\AvastUI.exe" /nogui
************************************************************************
StikyNot.exe pid:   2744
Command line : "C:\Windows\System32\StikyNot.exe" 
************************************************************************
iexplore.exe pid:   2772
Command line : "C:\Users\John Doe\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\iexplore.exe" 
************************************************************************
SearchIndexer. pid:   2900
Command line : C:\Windows\system32\SearchIndexer.exe /Embedding
************************************************************************
wmpnetwk.exe pid:   3176
Command line : "C:\Program Files\Windows Media Player\wmpnetwk.exe"
************************************************************************

Afficher les fichiers de la mémoire en cache

volatility -f memory.dmp --profile=Win7SP1x86 filescan

Extraire tous les fichiers en cache (Long et gourmand en stockage)

volatility -f memory.dmp --profile=Win7SP1x86 dumpfiles -D files/ > files.txt

Extraire un fichier particulier

volatility -f memory.dmp --profile=Win7SP0x86 dumpfiles -D filedump/ -Q 0x000000001ee20118
#0x000000001ee20118 est l'adresse du fichier indiqué dans filescan

Extraire un processus en mémoire

volatility -f memory.dmp --profile=Win7SP0x86  procexedump -D procdump/ -p 2772

Analyse mémoire Linux

Créer le profile correspondant à l'image

Récupérez la version du noyau de la capture

strings memory.raw | grep BOOT

BOOT_IMAGE=/boot/vmlinuz-4.4.0-72-lowlatency 

Dans l'exemple il s'agit d'un Linux Ubuntu 16.04 (Rechercher via google) Il faut installer une VM sous Linux ubuntu 16.04 et installer le noyau

Commandes à effectuer dans la VM Ubuntu :
apt-get install linux-image-4.4.0-72-lowlatency linux-headers-4.4.0-72-lowlatency

Rebootez pour démarrer sur le nouveau noyau (Si besoin modifier grub pour choisir le noyau)

vi /etc/default/grub

#Si GRUB_HIDDEN_TIMEOUT=0 modifiez le comme ci-dessous
GRUB_HIDDEN_TIMEOUT=5
GRUB_TIMEOUT=5

#Rechargez grub et redémarrez
sudo update-grub

Installer volatility

apt-get install volatility volatility-tools

Installer les outils pour générer le profil

apt-get install build-essential dwarfdump zip

Générez le profil linux pour volatility

cd /usr/src/volatility-tools/linux
make
zip linuxprofile4.4-72.zip module.dwarf /boot/System.map-4.4.0-72-lowlatency  #Adaptez selon le noyau qu'il vous faut

Le fichier linuxprofile4.4-72.zip est le profile, copiez le sur votre VM de forensic et dans le dossier des profiles volatility

#L'emplacement dépend de votre configuration / installation

#Exemple1
cp linuxprofile4.4-72.zip /usr/lib/python2.7/dist-packages/volatility/plugins/overlays/

#Exemple 2
cp linuxprofile4.4-72.zip /usr/local/lib/python2.7/dist-packages/volatility-2.6.1-py2.7.egg/volatility/plugins/overlays/linux

#Exemple 3
cp linuxprofile4.4-72.zip /usr/share/volatility/volatility/plugins/overlays/linux/

Le profil linux est désormais disponible pour investigation

NOTE : des profiles sont aussi disponibles ici https://github.com/volatilityfoundation/profiles

Récupérer les clefs AES dans une capture

la Team Prime-CTF à écrit un outil automatisant l'attaque simple,  pratique et efficace

https://github.com/TeamCTF-PRIME/auto_vol

./auto_vol -d memory.raw -f dump
#Répondez aux questions

Une fois la clef récupéré

cat key | xxd -r -p >> key.bin

Pour monter l'image disque chiffré par la clef précédente (Lukscrypt par exemple)

kpartx -a -v crypt.img
cryptsetup luksAddKey --master-key-file key.bin /dev/loop0
cryptsetup luksOpen /dev/loop0 CryptIMG

Dump la clef HFS+ MacOS (Pour ouvrir une image disque)

# Récuperer les offset de début
$fdisk -l s3cr3t.raw

...
Device      Start     End Sectors  Size Type
disk.raw    40 1048535 1048496  512M Apple Core storage


# Récupérer la clef
$vol -f findmeback.dmp --profile=MacMountainLion_10_8_1_AMDx64 mac_filevault2

Volatility Foundation Volatility Framework 2.6.1
Address            Volume Master Key               
------------------ --------------------------------
0xffffff804c0b7000 79121544c.......

# Ouvrir la partition avec la clef

vdemount -k 79121544c... -o $((40*512)) disk.raw /mnt/MACOS/
fvdemount 20190104

# Monter la nouvelle partition déchiffrée
mount -o loop,ro /mnt/MACOS/fvde1 /mnt/DISKMac/

Quelques liens

https://digital-forensics.sans.org/media/volatility-memory-forensics-cheat-sheet.pdf

http://repository.root-me.org/Forensic/EN%20-%20Volatility%20cheatsheet%20v2.4.pdf