Manipulation de miniatures de fichiers jpg

Manipulation de miniatures de fichiers jpg

J'avais envie de jouer avec les miniatures intégrées aux photos au format jpg pour voir comment les différents OS réagissaient...

J'ai donc pris deux photos avec mon smartphone. Il s'agit d'une feuille blanche sur laquelle j'ai écrit une fois "petite" et l'autre fois "grande" :

petite et grande

J'ai donc deux fichiers jpg contenant chacun une miniature. J'appellerai l'image sur laquelle j'ai écrit "petite" la petite et celle sur laquelle j'ai écrit "grande" la grande. L'idée est de prendre la miniature de la petite pour la mettre dans la grande.

Muni d'un bon éditeur hexadécimal, j'avais trois parties à modifier :

  • La taille du marqueur APP1 à l'offset 0x4, qui correspond à la taille des métadonnées Exif,
  • La taille de la miniature, dans ce cas à l'offset 0x4B8,
  • le contenu de la miniature, dans ce cas à l'offset 0x4D0

grande hexadecimal

Dans la grande image, la miniature fait 6153 octets (0x1809). Dans la petite image, la miniature est légèrement plus grande. Elle fait 6418 octets (0x1912). Ainsi, j'ai effectué les manipulations suivantes :

  • suppression de la miniature entre l'offset 0x4D0 et 0x1CD8 pour la remplacer par l'autre miniature,
  • remplacement de la taille de la miniature à l'offset 0x4B8 : 0x1809 (6153) devient 0x1912 (6418) et on écrit donc 0x1219 (little endian)
  • remplacement de la taille du marqueur APP1 à l'offset 0x4 : on a ajouté 265 octets au fichiers et donc 0x1CD5 (7381) devient 0x1DDE (7646) et on écrit donc 0x1DDE (big endian)

On obtient donc ceci :

grande modifiée hexadecimal

L'idée est ensuite de voir comment les systèmes d'exploitations se comportent avec une telle image.

En ce qui concerne MacOS, voici ce que j'obtiens dans le finder et sur mon bureau : macOS finder

macOS bureau

En ce qui concerne Windows 10, voici ce que j'obtiens :

windows 10 explorer

En ce qui concerne Windows 7, en dehors du fait que l'image n'est pas pivotée, les résultats sont identiques :

windows 7 explorer

Enfin sous Android, voici ce que j'obtiens (en vidéo) :

On constate donc que les systèmes d'exploitations ne génèrent pas les miniatures, mais utilisent celles qui sont présentes dans les métadonnées des fichiers.

D'un point de vue de l'investigation numérique, il est important de faire attention à ce genre de choses, sinon on risque de passer à coté.

En bonus, à partir des captures de l'éditeur hexadécimal, ceux qui le souhaitent pourront tenter de me dire quand j'ai pris ces photos (plutôt facile) mais surtout où je les ai prises (un peu plus compliqué)...

Secteurs défectueux dans une image disque et x-ways forensics

Secteurs défectueux dans une image disque et x-ways forensics

Lorsqu'on réalise une image d'un disque dur, il peut arriver que l'on soit confronté à des secteurs défectueux. Il s'agit généralement de secteurs dont le CRC ne correspond pas aux données. C'est surtout un signe que le disque est en fin de vie. Dans ce cas, c'est donc particulièrement une bonne chose de travailler sur une image plutôt que directement sur le disque. Bon nombre de logiciels permettant de faire des images de disque ne gèrent pas toujours cela très bien, surtout lorsque les problèmes sont nombreux.

X-Ways Forensics gère cela plutôt bien.

X-Ways Forensics General Options

Dans les options générales, on remarque :

  • une case à cocher qui permet d'utiliser deux méthodes alternatives de lecture et surtout d'ajouter un timeout,
  • un champ nommé "Surrogate pattern for unreadable sectors" qui correspond au motif qui sera écrit à la place du contenu d'un secteur défectueux.

À l'issue de l'image, on obtient toujours un fichier texte portant le même nom que les fichiers de l'image. S'il y a des secteurs défectueux, ils sont indiqués dans ce fichier :

[...]
Destination: H:\img\ST750LM0 30-1KKL42.e01
[x] Split image into segments of 1,0 GB

25/12/1970  02:46:14  Cannot read from Sector 2 081...2 087 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.
25/12/1970  04:06:50  Cannot read from Sector 39 124 144...39 124 151 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.
25/12/1970  04:11:36  Cannot read from Sector 39 157 288...39 157 295 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.
25/12/1970  04:16:41  Cannot read from Sector 39 193 408...39 193 415 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.
25/12/1970  04:21:37  Cannot read from Sector 39 226 552...39 226 559 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.
25/12/1970  04:25:57  Cannot read from Sector 39 244 480...39 244 487 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.
25/12/1970  04:30:27  Cannot read from Sector 39 277 616...39 277 623 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.
25/12/1970  04:32:56  Cannot read from Sector 39 310 760...39 310 762 of ST750LM0 30-1KKL42. The request could not be performed because of an I/O device error.

Number of unreadable sectors: 58

Hash of source data: B371B93D056DC3D5D74809578EC36437 (MD5)

25/12/1970, 05:30:52
Imaging completed: 147 GB
[...]

Le hash de la source ("Hash of source data") est celui qui est stocké dans les fichiers E0x. Il est important de noter qu'il est calculé en tenant compte du motif de remplacement indiqué dans les options. Il ne s'agit donc pas réellement du hash du disque source puisqu'il est de toute façon incalculable. Il permettra surtout de vérifier que l'image est bien intègre.

Lorsqu'on regarde le contenu d'un secteur défectueux, on constate bien la présence du motif de remplacement :

X-Ways Forensics UNREADABLESECTOR

La difficulté principale est ensuite de trouver quels sont les fichiers affectés par les secteurs défectueux. On peut se déplacer aux offsets spécifiés dans le fichier texte et lire les métadonnées du fichier dans le panneau info, mais cela devient très vite fastidieux si les secteurs défectueux sont très nombreux. Il est plus simple d'utiliser plutôt le motif de remplacement dans une recherche par mots clés avec les paramètres suivants :

X-Ways Forensics Simultaneous Search

Il est à noter que pour accélérer le processus :

  • on utilise une recherche physique (sector-wise)
  • Cond.: offset mod est coché. Avec les paramètres 512 = 0, on indique que la recherche ne doit s'effectuer qu'en début de secteur.

Selon la taille de l'image et le débit du disque qui la stocke, la recherche peut être longue. On peut l'annuler dès que le nombre de hits correspond au nombre de secteurs défectueux. Dans le cas en question, il n'y a que 58 secteurs défectueux uniquement situés en début de disque :

X-Ways Forensics Searching

À l'issue de la recherche ou après l'avoir annulée, on obtient les résultats. En cochant "List 1 hit per item only", on a tout de suite la liste des quatre fichiers qui risquent de ne pas s'ouvrir.

X-Ways Forensics Search results

Ainsi, en utilisant un motif de remplacement facilement identifiable, même si les secteurs défectueux sont très nombreux, il est assez facile d'obtenir les fichiers en contenant au moins un, et ce de manière automatisée.

Qu'est-ce que l'investigation numérique ?

Qu'est-ce que l'investigation numérique ?

L'investigation numérique ou l'informatique légale (ou computer forensics en anglais) prend de plus en plus de place dans les enquêtes de police ou judiciaires mais aussi dans des affaires privées. Elle trouve ses sources à la fin des années 70 lorsque les premiers crimes impliquant des ordinateurs apparaissent. Elle évolue dans les années 80 et 90 pour se transformer en industrie dans les années 2000.

Aujourd'hui, on peut dire que c'est l'art et la science de collecter, préserver, identifier, analyser et présenter des preuves issues de supports numériques.

  1. "L'art et la science"

L'investigation numérique est une science, d'une part, parce que l'informatique répond aux lois de la physique et d'autre part, parce qu'une grande partie des processus sont encadrés par des procédures scientifiques de manière à les rendre reproductibles.

C'est également un art car chaque investigation est différente du fait que chaque organisation et chaque utilisateur est différent. De plus, elle nécessite un certain savoir faire qui s'acquiert avec l'expérience et deux investigateurs peuvent travailler différemment sur un cas pour obtenir les même résultats.

  1. "Preuves issues de supports numériques"

Lorsque l'on parle de supports numériques, la première chose qui vient à l'esprit est l'ordinateur ou le smartphone. Mais il s'agit également de cartes mémoires, de clés USB, d'appareils photo numériques, de GPS, de consoles de jeux, de box ADSL, de composants réseau, d'imprimantes, etc. Tout ce qui contient de la mémoire peut ou devrait être étudié.

Les preuves peuvent être des éléments de trois types. En premier lieu, il s'agit des fichiers générés par l'utilisateur (documents, messageries, carnet d'adresses, favoris Internet, etc.). Ensuite, il s'agit des fichiers générés par le système d'exploitation (sauvegarde, fichiers de configuration, historique des fichiers ouverts ou Internet, etc.). Enfin, il s'agit de tout ce qui n'est pas stocké sous forme de fichiers (métadonnées, RAM, espace non alloué, etc.). Ainsi les preuves peuvent donc se situer dans tout le contenu de la mémoire. Il faut cependant noter que la saisie a lieu à un moment donné et que l'absence de preuve n'est pas la preuve de l'absence.

  1. "Collecter"

La collecte correspond généralement à une copie dite bit-à-bit qu'on appelle image. Elle doit être pure et parfaite. Cela signifie que, d'une part, elle doit être une copie exacte du support original donc son empreinte numérique (MD5 et/ou SHA1) doit être identique à celle de l'original. Et d'autre part, l'opération de copie ne doit pas modifier l'original. En cas d'impossibilité de faire une copie "pure" et "parfaite", il est important de le documenter. Par exemple, lorsqu'on est confronté à des secteurs défectueux ou illisibles, il faut les consigner et indiquer par quoi leur contenu a été remplacé dans l'image.

  1. "Préserver"

Il s'agit essentiellement de se demander comment manipuler, transporter et stocker les images et de mettre en place les procédures liées à ces questions. Ainsi, pour manipuler un disque dur, ou tout autre matériel électronique possédant des composants apparents, afin d'éviter des décharges électrostatiques, il est d'usage de porter un bracelet antistatique (ou ESD). Pour le transport et le stockage, il existe des sacs de protection antistatique dans tous les formats. Pour un téléphone ou un smartphone, on ne l'allume que lorsqu'il est dans une cage de Faraday. Il s'agit également de ne pas modifier le contenu de l'image lors des phases d'identification et d'analyse.

  1. "Identifier" et "analyser"

Cela consiste en la recherche de fichiers ou d'éléments en relation avec la demande. On peut commencer par s'imprégner rapidement de l'organisation de l'utilisateur, pour regarder les fichiers existants, notamment sur son bureau ou dans le/les dossiers contenant ses documents. Il n'est pas impossible de trouver rapidement des données intéressantes mais on ne peut pas se contenter de ça. Il faut tenter de récupérer des fichiers effacés ou des fragments de fichiers. Puis la recherche peut se faire d'un grand nombre de manières. Je ne les détaillerai pas ici, mais on peut notamment effectuer des recherches par extensions, par signatures ou par empreintes. Il est également possible d'effectuer des recherches par mots clés ou expression régulières sur l'ensemble de l'image. Si l'on est intéressé par une période précise, on peut généralement utiliser une vue calendaire ou filtrer les éléments par date.

Qu'ils appartiennent encore au système de fichiers ou non, les éléments que l'on a identifiés sont majoritairement encodés, et ce d'une manière différente pour chaque type de fichiers. De plus, le contenu d'un fichier peut ne pas être pertinent ou l'être moins sans les propriétés liées au système de fichiers (dates, chemin, etc.), sans les métadonnées qu'il contient (dates, auteur, etc.) ou sans son origine (réseau, clé USB, Internet, etc.). Ainsi, il ne suffit pas de trouver et d'extraire des données, il faut aussi les interpréter, y compris celles qui ne sont pas directement visibles par l'utilisateur.

Il s'agit de la partie la plus longue et la plus délicate. On craint toujours d'être passé à coté d'éléments qui pourraient être pertinents.

  1. "Présenter"

La présentation des résultats est finalement la phase la plus importante. En effet, c'est tout ce qu'il restera à l'issue des opérations. Elle prend généralement la forme d'un rapport qui doit rester accessible à tous. Il doit donc être assez détaillé pour inclure tous les éléments pertinents que l'on a trouvés, tout en restant compréhensible par une personne qui n'est pas spécialiste de l'informatique. Et c'est la toute là difficulté.

C'est bien de savoir ce que c'est, mais comment fait-on ?

Toutes ces étapes se font à l'aide d'outils spécialisés. Pour la phase de collecte, il existe des logiciels qui permettent de faire des images sans modifier l'original mais il est préférable d'utiliser des matériels dédiés. On trouve des duplicateurs autonomes ou de simples bloqueurs. Les plus connus sont ceux de la gamme Tableau.

Pour les autres phases, les logiciels d'investigation numérique généralistes, qu'ils soient commerciaux (X-Ways Forensics, EnCase, FTK entre autres) ou libres (DFF et The Sleuth Kit), sont primordiaux. Cependant, ils nécessitent d'une part une connaissance de l'informatique en général et des concepts liés à l'investigation numérique et d'autre part, une certaine expérience qui permet de les prendre en main.

Même s'il s'agit d'un domaine d'activité réservé à des spécialistes, la possibilité d'une investigation numérique doit être prise en compte dans la gestion informatique quotidienne d'une entreprise.