CTF inter iut 2018 - USBetrayed (Forensic)

Un challenge Forensic qui m’a démontré que je ne savais pas utilisé hashat et john the ripper

Je n’ai malheureusement pas sauvegardé l’énoncé des épreuves
lusb-albertpoincarre-sbisne.bin

Un troll, deux troll …, n troll

switch :: ~/CTF/inter_iut » file usb-albertpoincarre-sbisne.bin
usb-albertpoincarre-sbisne.bin: Linux rev 1.0 ext2 filesystem data (mounted or unclean)

Il s’agit donc un dump d’une clé USB avec un filesystem ext2, on le monte afin d’avoir accès aux fichiers

sudo losetup /dev/loop0 usb-albertpoincarre-sbisne.bin
sudo mount /dev/loop0 /mnt/usbkey
 
ls /mnt/usbkey
 
23c5an.gif
8002912_CSA_1625810_EC-401-NS_2443522(1).pdf
ARMInstructionSet.pdf
BMW.pdf
Bus.pdf
CANDY_M_FR_AQUA 1041 D1.pdf
carte-RESTO.pdf
Diagramme-de-Gantt-sur-Excel-v2.xlsx
Game of Thrones.ttf
Hello.mp4
Homme_Nu.pdf
IGN.jpg
LISTENME.mp3
lost+found
mail.txt
Maine.jpg
MARC-DORCEL-stage-chef-de-projet-numérique.pdf
ME_DB_alb04778.kdb
Paris_Clement_2013_ED222.pdf
RIB-GERM-BP.pdf
Travail_Complet.pdf

Je passe en revu la plupart des fichiers normalement, puis à coup de strings | grep ENSIBSexitools puis de binwalk, rien de concluant.

Puis je me suis senti con en voyant le fichier ME_DB_alb04778.kdb. C’est un fichier associé au vault Keepass contenant certainement des passwords, d’ailleurs le mail.txt y fait référence :

Bonjour

Vous recevez ce mail car il semble que votre mot de passe soit trop faible
en vue de notre nouvelle politique de mots de passe.

En effet, depuis le 1er mai, vous devez dorenavant :
- Avoir un mot de passe d'au moins 10 caracteres
- Avoir au moins une majuscule et/ou un chiffre
- Ne pas faire partie du dictionnaire francais et/ou anglais

A ce jour, seule la premiere condition est verifee. Merci de changer votre
mot de passe dans les plus brefs delais.

De plus, en vue de la nouvelle politique de securite, vous transportez un fichier ME_KP_<votrelogin>.kdp. Il sagit d'un fichier important paour votre cyber-securite et celle de l'entreprise Sbisne.

On nous indique que la force du mot de passe n’est pas suffisante, surement moins de 10 chars et qu’il fait parti d’un dictionnaire connu.

hashcan’t, johns’t

Il va donc de soi qu’il faut bruteforcer le mot de passe du keepass, je me document rapidement sur internet, il est apparement facile d’utiliser hashcat ou John pour bruteforcer mais un message d’erreur (no hashes loaded) m’a heurté en plein front.

Cependant il existe une petite lib bien sympa, doucement nommée : libkeepass qui va nous permettre de scripter la chose.

import libkeepass

file = "/home/switch/CTF/inter_iut/foren/ME_DB_alb04778.kdb"

for test in open("rockyou.txt").read().split("\n"):
    try:
        with libkeepass.open(file, password=test) as kdb:
                    print kdb.pretty_print()
    except:
        pass
switch :: ~/CTF/inter_iut » sudo python fuckeep.py

<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<pwlist>
<pwentry>
        <group>Internet</group>
        <title>Flag</title>
        <username>ENSIBS</username>
        <url/>
        <password>ENSIBS{D1ct_Attacks_Somet1m3s_W0rks}</password>
        <notes/>
        <uuid>4a6ea65a4389817ed76d007e8e0a654b</uuid>
        <image>1</image>
        <creationtime>2018-03-12T13:10:50</creationtime>
        <lastmodtime>2018-03-12T13:11:49</lastmodtime>
        <lastaccesstime>2018-03-12T13:11:49</lastaccesstime>
        <expiretime expires="False">2999-12-28T23:59:59</expiretime>
</pwentry>
</pwlist>