Académie de l'investigation - Premiers artéfacts

Énoncé

Pour avancer dans l'analyse, vous devez retrouver :

  • Le nom de processus ayant le PID 1254.

  • La commande exacte qui a été exécutée le 2020-03-26 23:29:19 UTC.

  • Le nombre d'IP-DST unique en communications TCP établies (état ESTABLISHED) lors du dump.

Format du flag : FCSC{nom_du_processus:une_commande:n}

dmp.tar.gz

Étape 1 - Création du profil volatility

Il faut absolument créer un profil volatility linux pour ce challenge. La version du kernel doit être respecté sinon cela ne fonctionne pas.

Commençons par installer une VM debian 9, l'iso est ici

Une fois que debian fonctionne, regardez votre version kernel, ici on est en 4.9.0-12-amd64, donc c'est pas bon, il nous faut la 5.4.0-4-amd64 pour le challenge.

root@writeup:~# uname -a
Linux writeup 4.9.0-12-amd64 #1 SMP Debian 4.9.210-1 (2020-01-20) x86_64 GNU/Linux

J'ai travaillé avec le dépôt suivant, à vous de trouver un dépôt qui correspond à votre besoin en fonction de votre version de kernel pour votre analyse. http://repo.puri.sm/pureos/pool/main/l/linux/

On installe les headers :

wget http://repo.puri.sm/pureos/pool/main/l/linux/linux-headers-5.4.0-4-amd64_5.4.19-1_amd64.deb
dpkg -i linux-headers-5.4.0-4-amd64_5.4.19-1_amd64.deb

Oui on va avoir besoin de toutes les dépendances :(

root@writeup:~# dpkg -i linux-headers-5.4.0-4-amd64_5.4.19-1_amd64.deb 
Sélection du paquet linux-headers-5.4.0-4-amd64 précédemment désélectionné.
(Lecture de la base de données... 21588 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de linux-headers-5.4.0-4-amd64_5.4.19-1_amd64.deb ...
Dépaquetage de linux-headers-5.4.0-4-amd64 (5.4.19-1) ...
dpkg: des problèmes de dépendances empêchent la configuration de linux-headers-5.4.0-4-amd64 :
 linux-headers-5.4.0-4-amd64 dépend de linux-headers-5.4.0-4-common (= 5.4.19-1) ; cependant :
  Le paquet linux-headers-5.4.0-4-common n'est pas installé.
 linux-headers-5.4.0-4-amd64 dépend de linux-kbuild-5.4 (>= 5.4.19-1) ; cependant :
  Le paquet linux-kbuild-5.4 n'est pas installé.
 linux-headers-5.4.0-4-amd64 dépend de linux-compiler-gcc-9-x86 ; cependant :
  Le paquet linux-compiler-gcc-9-x86 n'est pas installé.

dpkg: erreur de traitement du paquet linux-headers-5.4.0-4-amd64 (--install) :
 problèmes de dépendances - laissé non configuré
Des erreurs ont été rencontrées pendant l'exécution :
 linux-headers-5.4.0-4-amd64

On annule l'installation du linux-headers-5.4.0-4-amd64_5.4.19-1_amd64.deb

apt --fix-broken install

On commence par installer le common

wget http://repo.puri.sm/pureos/pool/main/l/linux/linux-headers-5.4.0-4-common_5.4.19-1_all.deb
dpkg -i linux-headers-5.4.0-4-common_5.4.19-1_all.deb

Puis le kbuild

wget http://repo.puri.sm/pureos/pool/main/l/linux/linux-kbuild-5.4_5.4.19-1_amd64.deb
dpkg -i linux-kbuild-5.4_5.4.19-1_amd64.deb

Puis la bonne version de gcc

wget http://repo.puri.sm/pureos/pool/main/l/linux/linux-compiler-gcc-9-x86_5.5.17-1_amd64.deb
dpkg -i linux-compiler-gcc-9-x86_5.5.17-1_amd64.deb

On relance l'installation du linux-headers

dpkg -i linux-headers-5.4.0-4-amd64_5.4.19-1_amd64.deb

On installe l'image

wget http://repo.puri.sm/pureos/pool/main/l/linux/linux-image-5.4.0-4-amd64-dbg_5.4.19-1_amd64.deb
dpkg -i linux-image-5.4.0-4-amd64-dbg_5.4.19-1_amd64.deb

On reboot la machine, puis :

root@writeup:~# uname -a
Linux writeup 5.4.0-4-amd64 #1 SMP Debian 5.4.19-1 (2020-02-13) x86_64 GNU/Linux

Normalement vous avez la bonne version de kernel maintenant.

On installe rapidement volatility et on créer le profil :

git clone https://github.com/volatilityfoundation/volatility.git
apt install dwarfdump
apt install build-essential
cd volatility/tools/linux
make
head module.dwarf
zip volatility/volatility/plugins/overlays/linux/fcscdebian.zip volatility/tools/linux/module.dwarf /boot/System.map-5.4.0-4-amd64

Vous pouvez maintenant faire l'analyse sur votre VM, ou sur votre machine de travail habituel en exportant le fichier fcscdebian.zip.

Je vous le met à disposition pour vous épargnez : fcscdebian.zip

Étape 2 - Recherche du processus 1254

Volatility propose le plugin linux_psxview pour voir l'ensemble des processus, mêmes cachés.

onosh@kali:/home/onosh/FCSC/FORENSIC/volatility# python vol.py -f ../dmp/dmp.mem --profile=Linuxfcscdebianx64 linux_psxview |grep 1254
Volatility Foundation Volatility Framework 2.6.1
0x000000003fdccd80 pool-xfconfd           1254 False  True   False    False      False   False

Le nom du processus est pool-xfconfd

Étape 3 - La commande

Volatility propose le plugin linux_bash pour afficher les commandes éxécutées

onosh@kali:/home/onosh/FCSC/FORENSIC/volatility# python vol.py -f ../dmp/dmp.mem --profile=Linuxfcscdebianx64 linux_bash
Volatility Foundation Volatility Framework 2.6.1
Pid      Name                 Command Time                   Command
-------- -------------------- ------------------------------ -------
    1523 bash                 2020-03-26 23:24:18 UTC+0000   rm .bash_history 
    1523 bash                 2020-03-26 23:24:18 UTC+0000   exit
    1523 bash                 2020-03-26 23:24:18 UTC+0000   vim /home/Lesage/.bash_history 
    1523 bash                 2020-03-26 23:24:27 UTC+0000   ss -laupt
    1523 bash                 2020-03-26 23:26:06 UTC+0000   rkhunter -c
    1523 bash                 2020-03-26 23:29:19 UTC+0000   nmap -sS -sV 10.42.42.0/24
    1523 bash                 2020-03-26 23:31:31 UTC+0000   ?+??U
    1523 bash                 2020-03-26 23:31:31 UTC+0000   ip -c addr
    1523 bash                 2020-03-26 23:38:00 UTC+0000   swapoff -a
    1523 bash                 2020-03-26 23:38:05 UTC+0000   swapon -a
    1523 bash                 2020-03-26 23:40:18 UTC+0000   ls
    1523 bash                 2020-03-26 23:40:23 UTC+0000   cat LiME.txt 
    1523 bash                 2020-03-26 23:40:33 UTC+0000   cd LiME/src/
    1523 bash                 2020-03-26 23:40:54 UTC+0000   
    1523 bash                 2020-03-26 23:40:54 UTC+0000   insmod lime-5.4.0-4-amd64.ko "path=/dmp.mem format=lime timeout=0"

La commande exacte qui a été exécutée le 2020-03-26 23:29:19 UTC est nmap -sS -sV 10.42.42.0/24

Étape 4 - Le nombre d'IP-DST

Volatility propose le plugin linux_netstat pour voir les connexions établies.

En comptant à la main :

onosh@kali:/home/onosh/FCSC/FORENSIC/volatility# python vol.py -f ../dmp/dmp.mem --profile=Linuxfcscdebianx64 linux_netstat |grep 'ESTAB'
Volatility Foundation Volatility Framework 2.6.1
TCP      10.42.42.131    :36970 116.203.52.118  :  443 ESTABLISHED                   tor/706  
TCP      10.42.42.131    :37252 163.172.182.147 :  443 ESTABLISHED                   tor/706  
TCP      fd:6663:7363:1000:c10b:6374:25f:dc37:36280 fd:6663:7363:1000:55cf:b9c6:f41d:cc24:58014 ESTABLISHED                  ncat/1515 
TCP      10.42.42.131    :47106 216.58.206.226  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :55224 151.101.121.140 :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :55226 151.101.121.140 :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :53190 104.124.192.89  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :45652 35.190.72.21    :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :47102 216.58.206.226  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :47104 216.58.206.226  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :38186 216.58.213.142  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :47100 216.58.206.226  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :50612 104.93.255.199  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :58772 185.199.111.154 :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :38184 216.58.213.142  :  443 ESTABLISHED              chromium/119187
TCP      10.42.42.131    :57000 10.42.42.134    :   22 ESTABLISHED                   ssh/119468
TCP      fd:6663:7363:1000:c10b:6374:25f:dc37:36280 fd:6663:7363:1000:55cf:b9c6:f41d:cc24:58014 ESTABLISHED                    sh/119511
TCP      127.0.0.1       :38498 127.0.0.1       :34243 ESTABLISHED                   cli/119514
TCP      127.0.0.1       :34243 127.0.0.1       :38498 ESTABLISHED                   cli/119514
TCP      10.42.42.131    :51858 10.42.42.128    :  445 ESTABLISHED             smbclient/119577

En one line :

onosh@kali:/home/onosh/FCSC/FORENSIC/volatility# python vol.py -f ../dmp/dmp.mem --profile=Linuxfcscdebianx64 linux_netstat |grep 'ESTAB' |awk -F' ' '{print $4}' |sort |uniq -c |wc -l
13

Nous avons 13 IPs destinations au total.

Le flag : FCSC{pool-xfconfd:nmap -sS -sV 10.42.42.0/24:13}

Dernière mise à jour