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:
On récupère le fichier message.txt
.
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 mot de passe
vgrohhfyek0wkfi5fv13anexapy3sso6
- le nom du fichier contenant le secret:
secret.xz
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:
Trouvé:
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 :
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à…