Solution de jsreynaud pour 103_spx

forensics disk

6 décembre 2023

C’est un fichier ZIP contenant une image disque. On commence par l’extraire avec unzip

$ unzip 103_spx.zip
Archive:  103_spx.zip
inflating: USB_a_analyser
$ ls -l USB_a_analyser
-rw-r--r-- 1 user user 260046848 juil.  6  2019 USB_a_analyser

Ensuite on utilise testdisk sur le fichier pour parcourir le contenu:

image

image

image

On récupère le fichier message.txt.

image

Le contenu du message :

$ cat message.txt
Si un jour je relis ce message, le mot de passe utilisé pour chiffrer mon plus grand secret était "vgrohhfyek0wkfi5fv13anexapy3sso6" et j'avais utilisé openssl.
En revanche, j'ai effacé par erreur le fichier contenant mon plus grand secret (voir s'il existe des techniques de la mort pour le retrouver mon fichier secret.xz sha256(0fb08681c2f8db4d3c127c4c721018416cc9f9b369d5f5f9cf420b89ee5dfe4e) de 136 octets) et de toute façon, impossible de me rappeler de l'algo utilisé -\_- (donc si je le retrouve... il faudra aussi retrouver l'algo pour utiliser ce mot de passe).

Super, on a :

Le fichier secret.xz n’est pas présent dans le répertoire courrant mais il y au un corbeille .Trash-1000. On regarde dedans: image

image

Trouvé:

image

On extrait le fichier:

$ sha256sum secret.xz
0fb08681c2f8db4d3c127c4c721018416cc9f9b369d5f5f9cf420b89ee5dfe4e  secret.xz
$ xz -d secret.xz
$ ls -l secret
-rw-rw-r-- 1 user user 80 juil.  6  2019 secret
$ file secret
secret: openssl enc'd data with salted password

Plus qu’à déchiffer le fichier:

$ openssl enc -aes-192-cbc -d -in .Trash-1000/files/secret -k vgrohhfyek0wkfi5fv13anexapy3sso6 -out -

Oups :

image

Il ne reste plus qu’a trouver l’algo utilisé. On les teste tous. C’est plus simple ;)

La liste de tous les algos possibles :

$ openssl enc -list
Supported ciphers:
-aes-128-cbc               -aes-128-cfb               -aes-128-cfb1\
-aes-128-cfb8              -aes-128-ctr               -aes-128-ecb\
-aes-128-ofb               -aes-192-cbc               -aes-192-cfb\
-aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr\
-aes-192-ecb               -aes-192-ofb               -aes-256-cbc\
-aes-256-cfb               -aes-256-cfb1              -aes-256-cfb8\
-aes-256-ctr               -aes-256-ecb               -aes-256-ofb\
-aes128                    -aes128-wrap               -aes192\
-aes192-wrap               -aes256                    -aes256-wrap\
-aria-128-cbc              -aria-128-cfb              -aria-128-cfb1\
-aria-128-cfb8             -aria-128-ctr              -aria-128-ecb\
-aria-128-ofb              -aria-192-cbc              -aria-192-cfb\
-aria-192-cfb1             -aria-192-cfb8             -aria-192-ctr\
-aria-192-ecb              -aria-192-ofb              -aria-256-cbc\
-aria-256-cfb              -aria-256-cfb1             -aria-256-cfb8\
-aria-256-ctr              -aria-256-ecb              -aria-256-ofb\
-aria128                   -aria192                   -aria256\
-bf                        -bf-cbc                    -bf-cfb\
-bf-ecb                    -bf-ofb                    -blowfish\
-camellia-128-cbc          -camellia-128-cfb          -camellia-128-cfb1\
-camellia-128-cfb8         -camellia-128-ctr          -camellia-128-ecb\
-camellia-128-ofb          -camellia-192-cbc          -camellia-192-cfb\
-camellia-192-cfb1         -camellia-192-cfb8         -camellia-192-ctr\
-camellia-192-ecb          -camellia-192-ofb          -camellia-256-cbc\
-camellia-256-cfb          -camellia-256-cfb1         -camellia-256-cfb8\
-camellia-256-ctr          -camellia-256-ecb          -camellia-256-ofb\
-camellia128               -camellia192               -camellia256\
-cast                      -cast-cbc                  -cast5-cbc\
-cast5-cfb                 -cast5-ecb                 -cast5-ofb\
-chacha20                  -des                       -des-cbc\
-des-cfb                   -des-cfb1                  -des-cfb8\
-des-ecb                   -des-ede                   -des-ede-cbc\
-des-ede-cfb               -des-ede-ecb               -des-ede-ofb\
-des-ede3                  -des-ede3-cbc              -des-ede3-cfb\
-des-ede3-cfb1             -des-ede3-cfb8             -des-ede3-ecb\
-des-ede3-ofb              -des-ofb                   -des3\
-des3-wrap                 -desx                      -desx-cbc\
-id-aes128-wrap            -id-aes128-wrap-pad        -id-aes192-wrap\
-id-aes192-wrap-pad        -id-aes256-wrap            -id-aes256-wrap-pad\
-id-smime-alg-CMS3DESwrap  -rc2                       -rc2-128\
-rc2-40                    -rc2-40-cbc                -rc2-64\
-rc2-64-cbc                -rc2-cbc                   -rc2-cfb\
-rc2-ecb                   -rc2-ofb                   -rc4\
-rc4-40                    -seed                      -seed-cbc\
-seed-cfb                  -seed-ecb                  -seed-ofb\
-sm4                       -sm4-cbc                   -sm4-cfb\
-sm4-ctr                   -sm4-ecb                   -sm4-ofb\

On met tout ça dans un fichier lst et on tente :

$ cat lst | while read line; do openssl enc $line -d -in .Trash-1000/files/secret -k vgrohhfyek0wkfi5fv13anexapy3sso6 -out file.txt &> /dev/null ; cat file.txt | grep lh\_ && echo $line;done
flag : lh_6c31ba64e522b5f9326b7bee0abef6547f60d214
-aes-192-ecb

Et voilà…