Aller au contenu principal

CTF « Le Wi-Fi invité de la médiathèque »

Samedi, 10 h 02. Un technicien a laissé tourner une capture réseau pendant six minutes sur le Wi-Fi invité de la médiathèque Jules Verne. La responsable pense que personne n'a pu y voir passer de mot de passe. À vous de vérifier.

info

Ce défi est un CTF (Capture The Flag) : il n'y a pas d'étapes guidées. Vous cherchez, vous trouvez un flag (un mot caché), puis vous le saisissez dans l'application Joligo, dans l'activité « Le Wi-Fi invité de la médiathèque ». La médiathèque, ses bénévoles et la capture sont fictifs.

attention

Ce défi se pratique uniquement sur le fichier fourni, dans votre propre VM. Observer le trafic réseau de quelqu'un d'autre, sans son autorisation explicite, est interdit par la loi, quel que soit le réseau.

Petite vérification​

Avant de commencer, vérifiez si vous savez encore réaliser ces 3 actions très simples, sur la séance précédente consacrée au mot de passe intercepté en direct sur le réseau :

  1. depuis ~/tp-sniffing, démarrer python3 serveur.py dans un premier terminal, puis lancer dans un deuxième sudo tcpdump -i lo -A -s 0 'tcp port 8000'
  2. dans un troisième terminal, envoyer curl -s -X POST -d "pseudo=amelie&mot_de_passe=Mediatheque2024" http://localhost:8000/connexion
  3. repérer, dans le terminal de la capture, la ligne qui contient le mot de passe
📌 Réponse attendue

Votre mission​

Vous êtes l'administrateur système de la médiathèque. Vous avez la capture capture_wifi.txt, au format de tcpdump -A. Elle contient les connexions de plusieurs appareils : un visiteur qui consulte le catalogue, un autre qui navigue en HTTPS, et un bénévole qui s'est connecté à l'intranet.

Trouvez ce que le Wi-Fi invité a laissé passer, et le mot de passe qu'un bénévole y a envoyé.

Le matériel​

Chaque participant reçoit un flag personnel : inutile de comparer avec vos voisins, le vôtre ne marcherait pas chez eux. Dans l'application Joligo, ouvrez l'onglet Profil et relevez votre code personnel (8 caractères, carte « Mon code personnel (défis CTF) »).

Dans votre VM Debian (remplacez a1b2c3d4 par votre code) :

sudo apt install openssl
mkdir -p ~/ctf-wifi
cd ~/ctf-wifi
CODE=a1b2c3d4
attention

Le script ci-dessous fabrique le fichier du scénario (c'est le travail du « méchant » de l'histoire). Ne le décodez pas pour le lire : ce serait lire la solution avant d'avoir cherché. Analysez le fichier produit.

base64 -d <<'EOF' | bash -s -- "$CODE"
Q09ERT0iJDEiCmlmIFsgLXogIiRDT0RFIiBdOyB0aGVuIGVjaG8gIlVzYWdlIDogYmFzaCAtcyAt
LSBWT1RSRV9DT0RFIiA+JjI7IGV4aXQgMTsgZmkKS0VZPSJjMDExMzRhYjc4ZDk1MzkxOGUzNyIK
RkxBRz0kKHByaW50ZiAlcyAiJENPREUiIHwgb3BlbnNzbCBkZ3N0IC1zaGEyNTYgLWhtYWMgIiRL
RVkiIC1yIHwgY3V0IC1jMS0xMikKY2F0ID4gY2FwdHVyZV93aWZpLnR4dCA8PEZJTgoxMDowMjox
MS40MDIxMTMgSVAgMTkyLjE2OC40LjIzLjUxMzQ0ID4gMTkyLjE2OC40LjEuODA6IEZsYWdzIFtQ
Ll0sIHNlcSAxOjIxMiwgYWNrIDEsIHdpbiA1MDIsIGxlbmd0aCAyMTE6IEhUVFA6IEdFVCAvYWNj
dWVpbCBIVFRQLzEuMQpFLi57LkAuQC50Li4uLi4uLlAuLi4uLi4uUC4uLlouLi4KR0VUIC9hY2N1
ZWlsIEhUVFAvMS4xCkhvc3Q6IHBvcnRhaWwubWVkaWF0aGVxdWUtanVsZXN2ZXJuZS5leGFtcGxl
ClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NDsgcnY6MTI4LjApIEdl
Y2tvLzIwMTAwMTAxIEZpcmVmb3gvMTI4LjAKQWNjZXB0OiB0ZXh0L2h0bWwKQ29ubmVjdGlvbjog
a2VlcC1hbGl2ZQoKMTA6MDI6MTEuNDMxODcwIElQIDE5Mi4xNjguNC4xLjgwID4gMTkyLjE2OC40
LjIzLjUxMzQ0OiBGbGFncyBbUC5dLCBzZXEgMTozMTksIGFjayAxLCB3aW4gNTAyLCBsZW5ndGgg
MzE4OiBIVFRQOiBIVFRQLzEuMSAyMDAgT0sKRS4uey5ALkAudC4uLi4uLi5QLi4uLi4uLlAuLi5a
Li4uCkhUVFAvMS4xIDIwMCBPSwpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYt
OApDb250ZW50LUxlbmd0aDogOTYKCjxodG1sPjxib2R5PjxoMT5XaS1GaSBpbnZpdGUgZGUgbGEg
bWVkaWF0aGVxdWUgSnVsZXMgVmVybmU8L2gxPjxwPkJpZW52ZW51ZSAhPC9wPjwvYm9keT48L2h0
bWw+CgoxMDowMjozOC4xMTgyMDQgSVAgMTkyLjE2OC40LjQwLjUwMTIyID4gOTMuMTg0LjIxNi4z
NC40NDM6IEZsYWdzIFtQLl0sIHNlcSAxOjUxOCwgYWNrIDEsIHdpbiA1MDIsIGxlbmd0aCA1MTc6
IEZsYWdzIFtQLl0sIGxlbmd0aCA1MTcKRS4uey5ALkAudC4uLi4uLi5QLi4uLi4uLlAuLi5aLi4u
Ci4uLi5cXC4uLi4ucy4udy45LmIwLksuLi5aLi4uLi5aSy5hLi44LlYuLnsufC4zLicuLnAuLi4u
Li51Li4iLlIuMy4uLkwuSC4uLi4uLm8uLi4uLm0uCi5lLnIuLi4uLiguJS4uWS50Li5xQi4uPi4u
Li4uWC4uLS4uLi5bLi4nLi5kLi4uLi5ALkV5LmouLi4uLi4uLi5uLi4KCjEwOjAzOjQwLjIxNzc2
NiBJUCAxOTIuMTY4LjQuMzEuNDk3MDIgPiAxOTIuMTY4LjQuMS44MDogRmxhZ3MgW1AuXSwgc2Vx
IDE6MzMzLCBhY2sgMSwgd2luIDUwMiwgbGVuZ3RoIDMzMjogSFRUUDogUE9TVCAvaW50cmFuZXQv
Y29ubmV4aW9uIEhUVFAvMS4xCkUuLnsuQC5ALnQuLi4uLi4uUC4uLi4uLi5QLi4uWi4uLgpQT1NU
IC9pbnRyYW5ldC9jb25uZXhpb24gSFRUUC8xLjEKSG9zdDogaW50cmFuZXQubWVkaWF0aGVxdWUt
anVsZXN2ZXJuZS5leGFtcGxlClVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4
Nl82NDsgcnY6MTI4LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMTI4LjAKQ29udGVudC1UeXBl
OiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKQ29udGVudC1MZW5ndGg6IDUzCkNv
bm5lY3Rpb246IGtlZXAtYWxpdmUKCnBzZXVkbz10bGVmb3J0Jm1vdF9kZV9wYXNzZT1Kdi0ke0ZM
QUd9CgoxMDowMzo0MC4zMDQ1MTEgSVAgMTkyLjE2OC40LjEuODAgPiAxOTIuMTY4LjQuMzEuNDk3
MDI6IEZsYWdzIFtQLl0sIHNlcSAxOjE0MywgYWNrIDEsIHdpbiA1MDIsIGxlbmd0aCAxNDI6IEhU
VFA6IEhUVFAvMS4xIDMwMiBGb3VuZApFLi57LkAuQC50Li4uLi4uLlAuLi4uLi4uUC4uLlouLi4K
SFRUUC8xLjEgMzAyIEZvdW5kCkxvY2F0aW9uOiAvaW50cmFuZXQvdGFibGVhdS1kZS1ib3JkClNl
dC1Db29raWU6IHNlc3Npb249N2MxZTlmZDA0YjJhOyBQYXRoPS8KQ29udGVudC1MZW5ndGg6IDAK
CjEwOjA0OjAyLjU1MTAzOSBJUCAxOTIuMTY4LjQuMzEuNDk3MDIgPiAxOTIuMTY4LjQuMS44MDog
RmxhZ3MgW1AuXSwgc2VxIDE6Mjk4LCBhY2sgMSwgd2luIDUwMiwgbGVuZ3RoIDI5NzogSFRUUDog
R0VUIC9pbnRyYW5ldC9zYXV2ZWdhcmRlL2NvbXB0ZXMuanNvbiBIVFRQLzEuMQpFLi57LkAuQC50
Li4uLi4uLlAuLi4uLi4uUC4uLlouLi4KR0VUIC9pbnRyYW5ldC9zYXV2ZWdhcmRlL2NvbXB0ZXMu
anNvbiBIVFRQLzEuMQpIb3N0OiBpbnRyYW5ldC5tZWRpYXRoZXF1ZS1qdWxlc3Zlcm5lLmV4YW1w
bGUKVXNlci1BZ2VudDogTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0OyBydjoxMjguMCkg
R2Vja28vMjAxMDAxMDEgRmlyZWZveC8xMjguMApDb29raWU6IHNlc3Npb249N2MxZTlmZDA0YjJh
CkFjY2VwdDogYXBwbGljYXRpb24vanNvbgoKMTA6MDQ6MDIuNjEyODc3IElQIDE5Mi4xNjguNC4x
LjgwID4gMTkyLjE2OC40LjMxLjQ5NzAyOiBGbGFncyBbUC5dLCBzZXEgMTo0OTAsIGFjayAxLCB3
aW4gNTAyLCBsZW5ndGggNDg5OiBIVFRQOiBIVFRQLzEuMSAyMDAgT0sKRS4uey5ALkAudC4uLi4u
Li5QLi4uLi4uLlAuLi5aLi4uCkhUVFAvMS4xIDIwMCBPSwpDb250ZW50LVR5cGU6IGFwcGxpY2F0
aW9uL2pzb24KQ29udGVudC1MZW5ndGg6IDMzMAoKWwogIHsicHNldWRvIjogImFtZWxpZSIsICJt
b3RfZGVfcGFzc2VfbWQ1IjogImJjNTZjMWQ5NjhkODU0ZmFiMzFlYWM3OTcyMDM5OTVhIn0sCiAg
eyJwc2V1ZG8iOiAibW1hcnRpbiIsICJtb3RfZGVfcGFzc2VfbWQ1IjogIjIwZTM3ODY3YzI3ZGI5
OGQwMjZlNGUyMGNkMjhjYmZiIn0sCiAgeyJwc2V1ZG8iOiAiZGlyZWN0aW9uIiwgIm1vdF9kZV9w
YXNzZV9tZDUiOiAiYjAxNWJlNDFhNTE5ZTNkNTBjMGFlYzU0MjQwZWFkM2UifQpdCgoxMDowNTox
OS43MzA0MjUgSVAgMTkyLjE2OC40LjIzLjUxNDAyID4gMTkyLjE2OC40LjEuODA6IEZsYWdzIFtQ
Ll0sIHNlcSAxOjI0NSwgYWNrIDEsIHdpbiA1MDIsIGxlbmd0aCAyNDQ6IEhUVFA6IEdFVCAvY2F0
YWxvZ3VlP3E9anVsZXMrdmVybmUgSFRUUC8xLjEKRS4uey5ALkAudC4uLi4uLi5QLi4uLi4uLlAu
Li5aLi4uCkdFVCAvY2F0YWxvZ3VlP3E9anVsZXMrdmVybmUgSFRUUC8xLjEKSG9zdDogcG9ydGFp
bC5tZWRpYXRoZXF1ZS1qdWxlc3Zlcm5lLmV4YW1wbGUKVXNlci1BZ2VudDogTW96aWxsYS81LjAg
KFgxMTsgTGludXggeDg2XzY0OyBydjoxMjguMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC8xMjgu
MApBY2NlcHQ6IHRleHQvaHRtbAoKMTA6MDY6NDQuMDkzMzE4IElQIDE5Mi4xNjguNC40MC41MDEy
MiA+IDkzLjE4NC4yMTYuMzQuNDQzOiBGbGFncyBbUC5dLCBzZXEgMToxMzUsIGFjayAxLCB3aW4g
NTAyLCBsZW5ndGggMTM0OiBGbGFncyBbUC5dLCBsZW5ndGggMTM0CkUuLnsuQC5ALnQuLi4uLi4u
UC4uLi4uLi5QLi4uWi4uLgouLi4uLkYuLi4uLmMuLi5RLnAuLmwuWi4uLi43Li4uLi5XYi4uLi5A
Li4ueC4uWy5FLi4uMy4ueS4uLi5BcS5HLi5OLjAuCgpGSU4KZWNobyAiRmljaGllciBjcsOpw6kg
OiBjYXB0dXJlX3dpZmkudHh0Igo=
EOF

Vous obtenez le fichier capture_wifi.txt.

Comment jouer​

  1. Analysez la capture avec les outils vus en cours (grep, less, et le script de craquage de la séance « Craquer un mot de passe » pour la seconde partie).
  2. Répondez aux questions de l'activité Joligo « Le Wi-Fi invité de la médiathèque » : certaines portent sur le flag, d'autres sur la démarche et les bons réflexes.
  3. Le flag est la fin du mot de passe d'un bénévole, qui commence par Jv- : il contient 12 caractères (lettres a à f et chiffres). Dans Joligo, vous saisirez seulement ces 12 caractères.
Besoin d'un coup de pouce ?

Cette démarche a été vue dans la séance Un mot de passe intercepté. La seconde partie (une sauvegarde de comptes a circulé dans la capture) reprend la séance Craquer un mot de passe : recopiez une empreinte dans un fichier comptes_mediatheque.json et relancez votre script. Un mauvais flag fait perdre une vie dans Joligo : réfléchissez avant de tenter au hasard, comme pour un vrai mot de passe.