Cyber 2021/2022 G8 : Différence entre versions

De Wiki d'activités IMA
(Filsss fait un sssssomme)
 
(11 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 2 : Ligne 2 :
  
 
== Flocons ==
 
== Flocons ==
 +
 +
Nous avons remarqué à droite et à gauche deux sinusoïdes en pointillé mais nous n'avons pas réussi à en décoder le contenu
  
 
== Espion dans le bus ==
 
== Espion dans le bus ==
Ligne 12 : Ligne 14 :
 
  usb.src == "3.4.1"
 
  usb.src == "3.4.1"
 
   
 
   
 
 
4. Nous avons ajouté une colone pour les "leftover-data" car celle-ci contient les numéros de touches frappées par l'utilisateur (nous allons par la suite en extraire le 4 ème octet pour chaque ligne)
 
4. Nous avons ajouté une colone pour les "leftover-data" car celle-ci contient les numéros de touches frappées par l'utilisateur (nous allons par la suite en extraire le 4 ème octet pour chaque ligne)
 
5. Nous avons éxporté la capture résultante en format .csv
 
5. Nous avons éxporté la capture résultante en format .csv
Ligne 26 : Ligne 27 :
 
7. Nous utilisons ensuite un programme Python afin de convertir le 4 ème octet de chaque ligne en la touche correspondante du clavier. (voir ce tableau pour la correspondance "indice de clavier" et "touche réelle appuyée" : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-14.html) :
 
7. Nous utilisons ensuite un programme Python afin de convertir le 4 ème octet de chaque ligne en la touche correspondante du clavier. (voir ce tableau pour la correspondance "indice de clavier" et "touche réelle appuyée" : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-14.html) :
  
<code>
 
 
# coding: utf-8
 
  
newmap={
 
  
 +
# coding: utf-8
 +
newmap={
 
         40: "Enter",
 
         40: "Enter",
 
         41: "esc",
 
         41: "esc",
Ligne 49 : Ligne 48 :
 
         86: "-",
 
         86: "-",
 
         94: "6",
 
         94: "6",
}
+
}
 
+
myKeys = open('HEXDUMP.txt')
myKeys = open('HEXDUMP.txt')
+
i = 1
i = 1
+
keyVal = int(00000000)
keyVal = int(00000000)
+
for line in myKeys:
for line in myKeys:
 
 
     bytesArray = bytearray.fromhex(line.strip())
 
     bytesArray = bytearray.fromhex(line.strip())
#  print(str(bytesArray) + "\n")
+
  #  print(str(bytesArray) + "\n")
 
     #print "Line Number: " + str(i)
 
     #print "Line Number: " + str(i)
 
 
     for byte in bytesArray:
 
     for byte in bytesArray:
 
         #print(str(byte)+"\n")
 
         #print(str(byte)+"\n")
Ligne 68 : Ligne 65 :
 
     else:
 
     else:
 
         print("No map found for this value: " + str(keyVal))
 
         print("No map found for this value: " + str(keyVal))
 
+
#print format(byte, ‘02X’)
#print format(byte, ‘02X’)
 
 
     i+=1
 
     i+=1
 
</code>
 
  
 
8. Nous éxécutons le programme de la façon suivante :
 
8. Nous éxécutons le programme de la façon suivante :
Ligne 111 : Ligne 105 :
 
== Spécialiste des écoutes ==
 
== Spécialiste des écoutes ==
  
Ce challenge était simple : solution à mettre sur le Wiki après le CTF.
+
Pour cette partie nous avons uniquement ralentit avec un facteur de 0.01 le son original à l'aide d'audacity.
 +
 
 +
[[Fichier:Capture d’écran 2022-01-20 à 08.39.28.png]]
 +
 
 +
[[Fichier:Capture d’écran 2022-01-20 à 08.40.59.png]]
 +
 
 +
Une autre piste audio a ainsi pu être révélée.
 +
 
 +
En tapant les paroles de cette chanson sur Google nous arrivons à retrouver le nom de l'interprète.
  
 
== Perçage de coffre ==
 
== Perçage de coffre ==
  
Ce challenge était simple : solution à mettre sur le Wiki après le CTF.
+
Extraction du fichier chiffre :
 +
 
 +
unarchive chiffre.zip
 +
 
 +
On tente de décrypter le fichier à la main :
 +
 
 +
cryptsetup plainOpen chiffre chiffre-part
 +
 
 +
Un mot de passe est demandé, mais même si nous notons n'importe quoi, le mot de passe n'est pas refusé.
 +
Cependant lorsque l'on tente de monter le volume, une erreur apparait :
 +
 
 +
mount /dev/mapper/chiffre-part /media/chiffre-media/
 +
 
 +
Erreur :
 +
 
 +
mount: /media/chiffre-media: wrong fs type, bad option, bad superblock on /dev/mapper/chiffre-part, missing codepage or helper program, or other error.
 +
 
 +
Nous automatisons les essais à l'aide d'un script bash :
 +
 
 +
#!/bin/bash
 +
cat dico_mdp_carte.txt|while read line
 +
do
 +
dmsetup remove_all
 +
echo $line |cryptsetup plainOpen chiffre chiffre-part
 +
mount /dev/mapper/chiffre-part /media/chiffre-media/
 +
done
 +
 
 +
Après avoir laissé tourné le script bash, nous arrivons à accéder au disque monté et à constater son contenu. A partir des numéros donnés nous sommes capable de générer l'IBAN (https://www.iban.fr/calcul-de-la-cle-rib.html)
  
 
== Déchiffrer le manuscrit ==
 
== Déchiffrer le manuscrit ==
Ligne 125 : Ligne 154 :
 
== Encore une image en musique ==
 
== Encore une image en musique ==
  
 +
1. on récupère et télécharge le fichier audiodump.wav
 +
 +
2. on récupère les métadonnées de ce fichiers avec la commande
 +
 +
exiftool audiodump.wav > metadonnees.txt
 +
 +
on remarque ainsi que les datas du fichier sont cryptées en base64 car la fin du message fini par /2Q==
 +
 +
3. on decode ainsi les données
 +
 +
base64 -d < metadonnees.txt > toto
 +
 +
on remarque que toto est au format jpeg
 +
 +
file toto
 +
 +
4. on affiche toto
 +
 +
display toto
  
 
== Clef à la loupe ==
 
== Clef à la loupe ==
Ligne 131 : Ligne 179 :
 
== Filsss fait un sssssomme ==
 
== Filsss fait un sssssomme ==
  
 +
Donnée du cours
  
 
== Existe-til encore de vraies brutes ? ==
 
== Existe-til encore de vraies brutes ? ==

Version actuelle datée du 20 janvier 2022 à 13:13

Challenges ctf

Flocons

Nous avons remarqué à droite et à gauche deux sinusoïdes en pointillé mais nous n'avons pas réussi à en décoder le contenu

Espion dans le bus

1. Nous avons téléchargé le fichier capture-myst1.pcap 2. Nous l'avons ouvert avec Wireshark 3. Nous avons filtré uniquement les paquets provenant du périphérique "3.4.1" : Nous avons pour cela ajouté cette ligne en filtre :

usb.src == "3.4.1"

4. Nous avons ajouté une colone pour les "leftover-data" car celle-ci contient les numéros de touches frappées par l'utilisateur (nous allons par la suite en extraire le 4 ème octet pour chaque ligne) 5. Nous avons éxporté la capture résultante en format .csv

File> Export packet dissection> as .CSV
Nous appelons ce fichier "OUTUSB.csv".

6. Nous avons préparé le fichier pour qu'il soit uniquement constitué de la colone "leftover-data"  :

cat OUTUSB.csv | cut -d "," -f 8 | sed ':a;N;$!ba;s/"//g' > HEXDUMP.txt

7. Nous utilisons ensuite un programme Python afin de convertir le 4 ème octet de chaque ligne en la touche correspondante du clavier. (voir ce tableau pour la correspondance "indice de clavier" et "touche réelle appuyée" : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-14.html) :


# coding: utf-8
newmap={
       40: "Enter",
       41: "esc",
       42: "del",
       43: "tab",
       44: "space",
       45: "-",
       47: "[",
       48: "]",
       56: "/",
       57: "CapsLock",
       79: "RightArrow",
       80: "LetfArrow",
       83: "NumLock",
       90: "2",
       98: "0",
       86: "-",
       94: "6",
}
myKeys = open('HEXDUMP.txt')
i = 1
keyVal = int(00000000)
for line in myKeys:
   bytesArray = bytearray.fromhex(line.strip())
 #   print(str(bytesArray) + "\n")
   #print "Line Number: " + str(i)
   for byte in bytesArray:
       #print(str(byte)+"\n")
       if byte != 0:
           keyVal = int(byte)
   if keyVal in newmap:
       #print "Value map : " + str(keyVal) + " — -> " + newmap[keyVal]
       print(newmap[keyVal])
   else:
       print("No map found for this value: " + str(keyVal))
#print format(byte, ‘02X’)
   i+=1

8. Nous éxécutons le programme de la façon suivante :

python3 map.py  | sed ':a;N;$!ba;s/\n/ /g'

Nous pouvons ainsi en déduire le flag

Travail de serrurerie

1. Téléchargement et décompression du fichier zip :

unzip data.zip

2. Autoriser nbd (en su -):

modprobe nbd max_part=8

3. Connection du network block device :

qemu-nbd -f raw --connect=/dev/nbd0 data

4. Montage des deux partition pour en constater le contenu :

mount /dev/nbd0p1 /mnt/ctf

Le contenu de la première partition n'était pas utile

mount /dev/nbd0p2 /mnt/ctf

Le contenu de /mnt/ctf est endommagé (contient un dossier lost+found) mais il reste un fichier nommésecret.zip

Cependant, un mot de passe est demandé pour le dézziper.

5. En faisant un cat sur le fichier originel data, nous avons remarquer qu'un mot de passe apparaissait en claire. En l'essayant nous avons réussi à décompresser le fichier zip et atraper le drapeau.


Spécialiste des écoutes

Pour cette partie nous avons uniquement ralentit avec un facteur de 0.01 le son original à l'aide d'audacity.

Capture d’écran 2022-01-20 à 08.39.28.png

Capture d’écran 2022-01-20 à 08.40.59.png

Une autre piste audio a ainsi pu être révélée.

En tapant les paroles de cette chanson sur Google nous arrivons à retrouver le nom de l'interprète.

Perçage de coffre

Extraction du fichier chiffre :

unarchive chiffre.zip

On tente de décrypter le fichier à la main :

cryptsetup plainOpen chiffre chiffre-part

Un mot de passe est demandé, mais même si nous notons n'importe quoi, le mot de passe n'est pas refusé. Cependant lorsque l'on tente de monter le volume, une erreur apparait :

mount /dev/mapper/chiffre-part /media/chiffre-media/

Erreur :

mount: /media/chiffre-media: wrong fs type, bad option, bad superblock on /dev/mapper/chiffre-part, missing codepage or helper program, or other error.

Nous automatisons les essais à l'aide d'un script bash :

#!/bin/bash
cat dico_mdp_carte.txt|while read line
do

dmsetup remove_all echo $line |cryptsetup plainOpen chiffre chiffre-part mount /dev/mapper/chiffre-part /media/chiffre-media/

done

Après avoir laissé tourné le script bash, nous arrivons à accéder au disque monté et à constater son contenu. A partir des numéros donnés nous sommes capable de générer l'IBAN (https://www.iban.fr/calcul-de-la-cle-rib.html)

Déchiffrer le manuscrit

Dessiner avec des sons

Encore une image en musique

1. on récupère et télécharge le fichier audiodump.wav

2. on récupère les métadonnées de ce fichiers avec la commande

exiftool audiodump.wav > metadonnees.txt

on remarque ainsi que les datas du fichier sont cryptées en base64 car la fin du message fini par /2Q==

3. on decode ainsi les données

base64 -d < metadonnees.txt > toto

on remarque que toto est au format jpeg

file toto

4. on affiche toto

display toto

Clef à la loupe

Filsss fait un sssssomme

Donnée du cours

Existe-til encore de vraies brutes ?

Déjà vu