Analyse d'image disque

Write-up du challenge Echec OP 1-3 du CTF FCSC (édition 2022)

Le

Pour cette série de trois épreuves dans la catégorie Forensic proposée par le FCSC édition 2022, nous avions pour objectif de retrouver des informations dans un disque chiffré.

Introduction

On commence par obtenir des informations sur l’image disque avec l’outil fdisk et son option -l qui nous permet d’afficher les partitions d’une image.

Terminal : fdisk -l liste les trois partitions de fcsc.img, dont deux systèmes de fichiers Linux

Il y a donc trois partitions, dont 2 systèmes de fichier Linux. En essayant de monter l’image sur Ubuntu, on s’aperçoit que le dernier volume est protégé par un mot de passe (pas de bol ☹). 

Gestionnaire de fichiers Ubuntu : un volume chiffré de 9,8 Go apparaît à côté d'un volume de 951 Mo

Fort heureusement, ce dernier est fourni dans l’énoncé. On monte donc l’image avec les commandes suivantes.
Terminal : montage de l'image avec losetup, kpartx et cryptsetup luksOpen, puis listing de la racine

1ere partie

Énoncé FCSC 2022 Échec OP 1/3 : retrouver la date de création du système de fichiers en UTC

Tout est dit dans l’énoncé, il nous faut récupérer la date de création du système de fichier (aka filesystem) du disque chiffré. Maintenant que nous l’avons monté, c’est très facile, on se sert du logiciel utilitaire tune2fs.

sudo tune2fs -l /dev/mapper/ubuntu—vg-ubuntu--lv

Terminal : sortie de tune2fs -l avec la date de création du système de fichiers encadrée en rouge

On récupère la date, que l’on met au format ISO-8601, tout en enlevant 2 heures car en France l’heure est en UTC+2, ce qui donne FCSC{2022-03-27T03:44:49Z} 

😊

2ème partie

Maintenant que c’est fait, on se met en quête du deuxième flag :
Énoncé FCSC 2022 Échec OP 2/3 : retrouver le mot de passe de l'utilisateur principal du serveur

Je commence par aller chercher le /etc/shadow et essayer de cracker le mot de passe avec John the Ripper, mais sans succès. Je cherche alors des fichiers intéressants, comme un .bash_history (fichier qui contient l’historique des commandes bash tapé par un utilisateur). On en trouve un dans /root/ et devinez quoi :
Fichier .bash_history de root : une commande passwd suivie du mot de passe tapé en clair

Il contient notre deuxième flag  : FCSC{CZSITvQm2MBT+n1nxgghCJ} 

😊😊

3ème partie

Énoncé FCSC 2022 Échec OP 3/3 : retrouver l'adresse IP que l'administrateur a voulu dissimuler

Je m’empresse alors tout naturellement d’aller vérifier ce bon vieux fichier le log auth.log (situé dans le répertoire /var/log/auth.log), mais sans trop de surprise, il n’y est pas (ce qui concorde avec l’énoncé). On zieute alors les fichiers logs restants, en commençant par le fichier fail2ban.log, à la recherche d’explications :
Log fail2ban : ajout puis retrait du fichier auth.log, signe de sa suppression

Humm, il semblerait qu’il a été effacé. Je lance photorec, un outil permettant de restaurer des fichiers supprimés sur un disque, dans l’espoir de mettre la main sur le auth.log : 

sudo photorec /dev/mapper/ubuntu—vg-ubuntu--lv

PhotoRec : sélection du volume LVM déchiffré à analyser

On sélectionne notre volume et ses caractéristiques.
PhotoRec : choix de la partition ext4 à analyser PhotoRec : sélection du type de système de fichiers ext2/ext3/ext4 PhotoRec : choix d'analyser uniquement l'espace non alloué ou toute la partition

En output on obtient un grand nombre de fichiers (dans lequel se trouve auth.log). On cherche alors un fichier contenant le termes « sshd »
Gestionnaire de fichiers : recherche du terme sshd parmi les fichiers récupérés par PhotoRec

On en ouvre quelques-uns, et on tombe rapidement sur notre auth.log
Fichier auth.log récupéré : déconnexion SSH de l'utilisateur obob révélant l'adresse IP recherchée

On détermine alors le troisième et dernier flag : FCSC{192.168.37.1}

😊 😊 😊

Accès Restreint

Cet article n'est pas (encore) publique.
Pour obtenir un accès anticipé, contactez-moi.

[[ passwordError ]]

[[ post.title ]]

[[ post.description ]]

Le [[ post.date ]]

[[ tag ]]
[[ currentMatchIndex + 1 ]] / [[ searchMatches.length ]] 0 / 0

Sommaire

Page principale