CTF inter iut 2018 - Luks, I'm your father (Guessing)

Trouver le flag j’imagine
luksimyourfather.zip

Il s’enfonce mais continue de creuser

C’est un chall forensic, la première chose à faire est de déterminer le type du fichier qu’on a sous la main

switch :: ~/CTF/inter_iut » unzip luksimyourfather.zip
Archive:  luksimyourfather.zip
  inflating: disk.dmp
  inflating: md5sum.txt
  inflating: memdump.dmp

switch :: ~/CTF/inter_iut/luks » file *.dmp
disk.dmp:    LUKS encrypted file, ver 1 [aes, xts-plain64, sha256] UUID: 9bff5bd7-3b90-49ae-b1de-eb352806c5b2
memdump.dmp: data

Il s’agit donc d’un volume LUKS (Linux Unified Key Setup) chiffré via le chiffrement asymétrique AES xts-plain64 et avec l’algorithme de hashage sha256. 256 Bits comme 32 bytes et non pas 16 bytes.

L’autre fichier quant à lui est uniquement de la data pure. Ce mode de chiffrement de fichier est sur il est donc nécessaire de retrouver cette clé de malheur.

16 + 16 = 32

Un super outil disponible sur windows findaes.exe permet de retrouver des clés AES dans un fichier. Utilisons le sur le fichier contenant de la data.

PS W:\Tools\Forensic> .\findaes.exe .\memdump.dmp
Searching .\memdump.dmp
Found AES-128 key schedule at offset 0x6ae8c80:
b4 c6 07 d5 93 f2 67 7b f6 3f d1 2e 54 89 ce ac
Found AES-128 key schedule at offset 0x6ae8e80:
c2 2a 94 fa b6 ef d8 15 e5 62 9a e4 75 7a 57 89
PS W:\Tools\Forensic>

Deux clés de 128 bits, c’est gagné il n’y a plus qu’a déchiffrer ce maudit volume.

switch :: ~/CTF/inter_iut/luks » echo "c22a94fab6efd815e5629ae4757a5789" | xxd -r -p > key1
switch :: ~/CTF/inter_iut/luks » echo "b4c607d593f2677bf63fd12e5489ceac" | xxd -r -p > key2
switch :: ~/CTF/inter_iut/luks » sudo losetup /dev/loop2 disk.dmp
switch :: ~/CTF/inter_iut/luks » sudo cryptsetup luksOpen /dev/loop2 switch --master-key-file key1
Échec à la lecture de 32 octets du fichier de clé key1.
switch :: ~/CTF/inter_iut/luks » sudo cryptsetup luksOpen /dev/loop2 switch --master-key-file key2
Échec à la lecture de 32 octets du fichier de clé key2.

Comment, les deux clés sont refusées ? C’est pas net ça. Essayons de concatener les clés :

switch :: ~/CTF/inter_iut/luks » cat key1 key2 > key3
switch :: ~/CTF/inter_iut/luks » cat key2 key1 > key4

switch :: ~/CTF/inter_iut/luks » sudo cryptsetup luksOpen /dev/loop2 switch --master-key-file key3
switch :: ~/CTF/inter_iut/luks » mkdir /tmp/luks
switch :: ~/CTF/inter_iut/luks » sudo mount /dev/mapper/switch /tmp/luks/
switch :: ~/CTF/inter_iut/luks » ls /tmp/luks
flag.txt
switch :: ~/CTF/inter_iut/luks » cat /tmp/luks/flag.txt
Coucou!
J'espère que tu as apprécié ce petit challenge :)

Voilà ton flag: ENSIBS{No_n33d_v0lat1l1tY_w1th_AES_kEys_1n_m3morY}

Mon erreur a été d’utiliser une clé de 16 octets puis l’autre, alors que la clé était d’une taille de 32 octets