Solution de lrstx pour Horreur, malheur 1/5 - Archive chiffrée

forensics

1 mai 2024

On regarde un peu la tête de l’archive fournie.

$ unzip -t archive.encrypted
Archive:  archive.encrypted
[archive.encrypted] tmp/temp-scanner-archive-20240315-065846.tgz password:
   skipping: tmp/temp-scanner-archive-20240315-065846.tgz  incorrect password
   skipping: home/VERSION            incorrect password
   skipping: data/flag.txt           incorrect password
Caution:  zero files tested in archive.encrypted.
3 files skipped because of incorrect password.

Rien qui saute aux yeux, à part le flag évidemment. On remonte à l’énoncé, et une rapide recherche sur la version 22.3R1 b1647 montre une référence à Ivanti. Vu l’actualité, on devrait s’amuser. ;-)

Intéressant, le billet nous donne le contenu de /home/VERSION :

export DSREL_MAJOR=22
export DSREL_MINOR=3
export DSREL_MAINT=1
export DSREL_DATAVER=4802
export DSREL_PRODUCT=ssl-vpn
export DSREL_DEPS=ive
export DSREL_BUILDNUM=1647
export DSREL_COMMENT="R1"

Étant donné qu’on a le texte clair de l’un des fichiers de l’archive, on est dans le cas d’usage de pkcrack. En réalité, je vais avoir quelques essais infructueux, notamment à cause du manque d’un retour chariot final dans le fichier VERSION.

Un autre critère important pour réussir est de générer la deuxième archive ZIP avec le même logiciel que celui pour l’archive chiffrée. D’où l’autre indice de l’énoncé précisant que les paquets ne sont pas à jour. Une petite recherche pointe vers ceci :

This is probably a good time to point out what base operating system Ivanti is using: CentOS 6.4; which was released in 2013 and officially end of life in 2020

Du coup, j’ai récupéré un Live CD de CentOs 6.3 pour zipper le clair connu (je me rends compte en rédigeant cette solution que c’était la 6.4 qu’il fallait… mais ça a marché, alors…).

$ /opt/pkcrack/bin/pkcrack -C archive.encrypted -c "home/VERSION" -P ./comparatif.zip -p version -d decrypted.zip -a
Files read. Starting stage 1 on Sun Apr  7 12:56:04 2024
Generating 1st generation of possible key2_119 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Done. Left with 79793 possible Values. bestOffset is 24.
Stage 1 completed. Starting stage 2 on Sun Apr  7 12:56:09 2024
Ta-daaaaa! key0=6ed5a98a, key1=a1bb2e0e, key2=c9172a2f
Probabilistic test succeeded for 100 bytes.
Strange... had a false hit.
Strange... had a false hit.
Strange... had a false hit.
Stage 2 completed. Starting zipdecrypt on Sun Apr  7 13:00:12 2024
Decrypting tmp/temp-scanner-archive-20240315-065846.tgz (ebbb2d528a1df26cd1e65737)... OK!
Decrypting home/VERSION (5679cee2b9f4e448a012c538)... OK!
Decrypting data/flag.txt (548ddd288bde17b3878c1334)... OK!
Finished on Sun Apr  7 13:00:12 2024
$ cat data/flag.txt
50c53be3eece1dd551bebffe0dd5535c

Le flag est donc FCSC{50c53be3eece1dd551bebffe0dd5535c}.