Académie de l’investigation - Premiers artéfacts
Points : 107 (Dynamique)
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}
Le fichier de dump à analyser est identique au challenge C'est la rentrée.
Pré-requis
Pour ce challenge, il fallait créer un profil pour pouvoir accèder aux informations de la machine sur volatility
.
J’ai donc créé une Debian 11 Alpha 2
qui comportait déjà le kernel linux 5.4.0-4-amd64.
J’ai ensuite installé les paquets linux-image, linux-headers, linux-kbuild et linux-compiler. Je les ai téléchargés avec un wget
puis les ai installés avec la commande dpkg -i
.
Au moment où j’écris cela, les paquets que j’avais téléchargés en version 5.4.0-4 ont été remplacés sur le site par la version 5.5.0-4. Je vous mets quand même le site, cela peut toujours servir : https://git.sdxlive.com/DR/plain/Debian/pool/stable/l/linux/
Une fois les paquets installés, j’ai booté sur le système avec le kernel en 5.4.0-4 et j’ai téléchargé volatility
pour fabriquer mon profil.
Le profil créé, j’ai pu le télécharger et le tester sur ma machine.
Recherche du process PID 1254
En listant toutes les commandes de volatility
pour Linux, je tombe sur quatre d’entre elles plutôt intéressantes pour cette partie :
- linux_psaux Gathers processes along with full command line and start time
- linux_psenv Gathers processes along with their static environment variables
- linux_psscan Scan physical memory for processes
- linux_pstree Shows the parent/child relationship between processes
J’essaye chacune d’entre elles.
linux_psaux
Cette commande renvoie beaucoup de pid mais pas celui que je cherche.
[snip]
1251 1001 1001
1257 1001 1001
1263 1001 1001
1265 1001 1001 xfwm4 --display :0.0 --sm-client-id 261c061fc-dabb-4cf0-9228-cdd5ad56d476
[snip]
linux_psenv
Cette commande renvoie les variables d’environnement utilisées par les programmes.
Je me suis donc dit que je pourrais potentiellement le trouver ici.
[snip]
at-spi-bus-laun 1242
dbus-daemon 1247
xfconfd 1251
at-spi2-registr 1257
gpg-agent 1263
[snip]
Mais toujours rien…
linux_psscan
Cette commande affiche beaucoup, beaucoup trop de lignes, j’essaye de faire un | grep
pour voir si le processus ne s’y cache pas.
[ aether@ysera ~/Documents/FCSC/Forensics/AI-CLR % ] vol -f dmp.mem --profile=LinuxDebian11-kernel_5_4_0-4x64 linux_psscan | grep 1254
Volatility Foundation Volatility Framework 2.6
0x000000003fdccd80 pool-xfconfd 1254 - -1 -1 0x0fd08ee88ee08ec0 -
Bingo ! J’ai le nom du process avec le PID 1254
Commande exécutée le 2020-03-26 23:29:19 UTC
Etant donné que je cherche une commande, je vais directement utiliser le plugin linux_bash
qui affiche les commandes executées.
[ aether@ysera ~/Documents/FCSC/Forensics/AI-CLR % ] vol -f dmp.mem --profile=LinuxDebian11-kernel_5_4_0-4x64 linux_bash
Volatility Foundation Volatility Framework 2.6
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"
Parfait ! La commande executée à 2020-03-26 23:29:19 UTC
est donc nmap -sS -sV 10.42.42.0/24
.
Nombre d’IP-DST unique en communication TCP établies
Pour cette partie, je vais utiliser le plugin linux_netscan
qui renvoie toutes les connexions de la machine.
J’en profite pour faire un | grep ESTABLISHED
car seulement les connexions établies sont demandées.
[ aether@ysera ~/Documents/FCSC/Forensics/AI-CLR % ] vol -f dmp.mem --profile=LinuxDebian11-kernel_5_4_0-4x64 linux_netscan | grep ESTABLISHED
Volatility Foundation Volatility Framework 2.6
9d72830a8000 TCP 10.42.42.131 :58772 185.199.111.154 : 443 ESTABLISHED
9d72830a88c0 TCP 10.42.42.131 :45652 35.190.72.21 : 443 ESTABLISHED
9d72830a9a40 TCP 10.42.42.131 :53190 104.124.192.89 : 443 ESTABLISHED
9d72830abd40 TCP 10.42.42.131 :55226 151.101.121.140 : 443 ESTABLISHED
9d72830ad780 TCP 10.42.42.131 :50612 104.93.255.199 : 443 ESTABLISHED
9d72830af1c0 TCP 10.42.42.131 :38184 216.58.213.142 : 443 ESTABLISHED
9d7284eba300 TCP 10.42.42.131 :37252 163.172.182.147 : 443 ESTABLISHED
9d7284fe9180 TCP 127.0.0.1 :38498 127.0.0.1 :34243 ESTABLISHED
9d7284fe9a40 TCP 10.42.42.131 :57000 10.42.42.134 : 22 ESTABLISHED
9d7284feb480 TCP 10.42.42.131 :51858 10.42.42.128 : 445 ESTABLISHED
9d7284fef1c0 TCP 10.42.42.131 :55224 151.101.121.140 : 443 ESTABLISHED
9d7293778000 TCP 10.42.42.131 :47100 216.58.206.226 : 443 ESTABLISHED
9d729377cec0 TCP 10.42.42.131 :47106 216.58.206.226 : 443 ESTABLISHED
9d72c0acb480 TCP 10.42.42.131 :36970 116.203.52.118 : 443 ESTABLISHED
9d72c1503d40 TCP 127.0.0.1 :34243 127.0.0.1 :38498 ESTABLISHED
9d72c1bc1280 TCP fd:6663:7363:1000:c10b:6374:25f:dc37:36280 fd:6663:7363:1000:55cf:b9c6:f41d:cc24:58014 ESTABLISHED
9d72c23fcec0 TCP 10.42.42.131 :38186 216.58.213.142 : 443 ESTABLISHED
9d72c23fe040 TCP 10.42.42.131 :47104 216.58.206.226 : 443 ESTABLISHED
9d72c23fe900 TCP 10.42.42.131 :47102 216.58.206.226 : 443 ESTABLISHED
Je supprime le garbage pour garder seulement les adresses IP de destination.
185.199.111.154
35.190.72.21
104.124.192.89
151.101.121.140
104.93.255.199
216.58.213.142
163.172.182.147
127.0.0.1
10.42.42.134
10.42.42.128
151.101.121.140
216.58.206.226
216.58.206.226
116.203.52.118
127.0.0.1
fd:6663:7363:1000:55cf:b9c6:f41d:cc24
216.58.213.142
216.58.206.226
216.58.206.226
Il ne me reste plus qu’à supprimer les doublons.
185.199.111.154
35.190.72.21
104.124.192.89
104.93.255.199
163.172.182.147
10.42.42.134
10.42.42.128
151.101.121.140
116.203.52.118
127.0.0.1
fd:6663:7363:1000:55cf:b9c6:f41d:cc24
216.58.213.142
216.58.206.226
Je me retrouve donc avec une liste de 13 @IP-DST.
Flag
PID = “pool-xfconfd” command = “nmap -sS -sV 10.42.42.0/24” ip_dst = “13”
Format du flag : FCSC{nom_du_processus:une_commande:n}
flag: FCSC{pool-xfconfd:nmap -sS -sV 10.42.42.0/24:13}