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}

É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.
[email protected]:~# 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 :(
[email protected]:~# 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 :
[email protected]:~# 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.
[email protected]:/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
[email protected]:/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 :
[email protected]:/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 :
[email protected]:/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}