Aller au contenu principal

Une image banale qui cache un secret : comment un fichier confidentiel sort d'une entreprise dans un simple logo

Un logo de catalogue part chaque semaine vers une adresse personnelle. Il n'y a rien d'anormal à l'écran : l'image s'ouvre, elle est identique à l'original. Pourtant, quelque chose voyage avec elle.

Petite vérification​

Avant de commencer, vérifiez si vous savez encore réaliser ces 3 actions très simples, sur la séance précédente consacrée à l'élévation de privilèges avec sudo :

  1. depuis le compte agent de la séance précédente (à recréer avec les étapes 1 et 3 s'il n'existe plus), lancer sudo find /etc/passwd -exec /bin/sh \; -quit, puis whoami, et lire la réponse
  2. citer la commande qui vérifie la syntaxe d'un fichier de règles sudo, sans l'activer
  3. expliquer à quoi servent les guillemets vides "" placés à la fin de la règle sudoers écrite à l'étape 5
📌 Réponse attendue

TP pour réfléchir et résoudre des problèmes​

Votre défi pour aujourd'hui consiste à prouver qu'un logo d'apparence banale cache un fichier confidentiel, à l'en extraire, puis à reproduire la manipulation pour mieux la comprendre

info

L'imprimerie « Duval », ses salariés et les fichiers de ce TP sont fictifs, construits pour l'exercice. Le fichier caché ne contient qu'un texte, aucun programme.

attention

Dissimuler des données de son employeur pour les faire sortir de l'organisation peut constituer une extraction frauduleuse de données (article 323-3 du code pénal). Ce TP se pratique uniquement sur les fichiers fournis et dans votre propre VM.

Vous êtes l'administrateur système de l'imprimerie « Duval ». La passerelle de messagerie bloque les documents qui contiennent le mot « CONFIDENTIEL », mais elle laisse passer les images. Or un commercial envoie chaque semaine le même logo de catalogue à une adresse personnelle. Le service communication vous fournit le logo d'origine (logo_catalogue.gif, tel qu'il est publié sur le site) et la pièce jointe interceptée (logo_catalogue_recu.gif).

Étape 1 — Récupérer les deux fichiers et les comparer à première vue​

Dans le terminal de votre VM Debian, installez les outils nécessaires et créez un dossier de travail :

sudo apt install zip unzip
mkdir ~/tp-image-secret
cd ~/tp-image-secret

Reproduisez les deux fichiers (ce sont de minuscules images d'un seul pixel, qui ne montrent rien) :

base64 -d > logo_catalogue.gif <<'EOF'
R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
EOF
base64 -d > logo_catalogue_recu.gif <<'EOF'
R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAO1BLAwQUAAAACAAApU5d
QaKla6UAAADfAAAAFwAAAHRhcmlmc19mb3Vybmlzc2V1cnMudHh0VY3BCoJAFEX3fsXdBAUGpgnh
NicQyiLsA6bhaQ9GjTdO9PkNRVCbu7jcc+72WO+qUtVNpfZYourvwj0JE0r/0DZUjRZuHdrRy8DO
kReHNEnz6KTvTAIzenMjrLIcHQokcbJOoS5nWI2WPFtLmP/QCBxN7GII9ewCucFsEanBCGEYOWSB
bPVVGC3T5+FP8p5b/1xEBy0dwfA1/Bg9aTt2/q0I2ugFUEsBAh4DFAAAAAgAAKVOXUGipWulAAAA
3wAAABcAAAAAAAAAAQAAAKSBAAAAAHRhcmlmc19mb3Vybmlzc2V1cnMudHh0UEsFBgAAAAABAAEA
RQAAANoAAAAAAA==
EOF

Comparez ensuite les deux fichiers :

ls -l
file logo_catalogue.gif logo_catalogue_recu.gif
  1. Quelle est la taille de chacun des deux fichiers ?
  2. Que répond la commande file pour chacun d'eux ? Permet-elle de les distinguer ?
📌 Réponse attendue

Étape 2 — Comparer les empreintes​

Dans la séance sur le fichier téléchargé, l'empreinte servait à vérifier qu'un fichier n'avait pas été modifié. Calculez celle des deux logos :

sha256sum logo_catalogue.gif logo_catalogue_recu.gif
  1. Les deux empreintes sont-elles identiques ? Que faut-il en conclure ?
  2. La différence de taille de l'étape 1 est-elle cohérente avec cette conclusion ?
📌 Réponse attendue

Étape 3 — Chercher les traces de ce qui a été ajouté​

Cherchez dans le fichier reçu les chaînes de caractères lisibles, puis la signature PK qui débute une archive ZIP :

strings logo_catalogue_recu.gif | grep tarifs
strings logo_catalogue.gif | grep tarifs
grep -obUa "PK" logo_catalogue_recu.gif
  1. Que trouve-t-on dans le fichier reçu, et dans le fichier d'origine ?
  2. À quelle position (en octets depuis le début du fichier) se trouve le premier PK ?
  3. Quel rapprochement faites-vous avec la taille du logo d'origine ?
📌 Réponse attendue

Étape 4 — Séparer l'image de ce qui a été ajouté​

Découpez le fichier reçu en deux morceaux, à la frontière des 43 octets :

head -c 43 logo_catalogue_recu.gif | sha256sum
tail -c +44 logo_catalogue_recu.gif | wc -c
tail -c +44 logo_catalogue_recu.gif | file -
  1. Comparez l'empreinte de la première commande avec celle de logo_catalogue.gif. Que prouve ce résultat ?
  2. Combien d'octets ont été ajoutés après l'image ? Que sont-ils ?
📌 Réponse attendue

Étape 5 — Ouvrir l'archive​

Listez d'abord le contenu de l'archive, puis extrayez-le dans un dossier dédié :

unzip -l logo_catalogue_recu.gif
mkdir extrait
unzip logo_catalogue_recu.gif -d extrait
cat extrait/tarifs_fournisseurs.txt
attention

Listez toujours une archive inconnue (unzip -l) avant de l'extraire, et extrayez-la dans un dossier dédié : vous voyez ainsi ce qu'elle contient, et vous ne mélangez rien à vos fichiers.

  1. Quel message d'avertissement unzip affiche-t-il, et que signifie-t-il ?
  2. Quel est le nom du fichier caché, et quelle est sa taille ?
  3. Quelles informations sensibles contient-il ?
📌 Réponse attendue

Étape 6 — Reproduire la manipulation, côté expéditeur​

Pour bien comprendre, jouez maintenant le rôle de la personne qui cache les données. Créez un fichier à cacher, puis collez-le derrière le logo :

printf 'CONFIDENTIEL : liste des clients grands comptes\n' > clients.txt
zip -q cache.zip clients.txt
cat logo_catalogue.gif cache.zip > photo_piegee.gif
ls -l logo_catalogue.gif cache.zip photo_piegee.gif
file photo_piegee.gif
unzip -l photo_piegee.gif
  1. Quelle relation y a-t-il entre les trois tailles affichées par ls -l ?
  2. Que répond file pour photo_piegee.gif ? Pourquoi ?
  3. unzip -l retrouve-t-il le fichier caché ?
📌 Réponse attendue

Étape 7 — Rédiger vos constats et vos recommandations​

Le directeur de l'imprimerie vous demande un compte rendu court.

  1. Pourquoi la passerelle de messagerie n'a-t-elle rien détecté ?
  2. Quelles sont les 3 constatations, établies pendant ce TP, que vous consignez dans le rapport ?
  3. Quelles mesures proposez-vous, techniques et organisationnelles, pour limiter ce type de sortie ?

Étape 8 — Détecter automatiquement les fichiers cachés (pour aller plus loin, facultatif)​

L'outil binwalk recherche automatiquement, dans un fichier, des formats connus à n'importe quelle position. Installez-le puis lancez-le sur le fichier reçu :

sudo apt install binwalk
binwalk logo_catalogue_recu.gif

Si le paquet n'est pas disponible sur votre VM, passez directement à la question.

  1. Quelles lignes binwalk affiche-t-il, et à quelles positions ?
  2. À quoi sert l'option -e de cette commande, d'après le manuel (man binwalk) ?
📌 Réponse attendue

Restitution orale​

Un étudiant (ou un binôme) vient présenter à la classe la preuve établie sur le logo (étapes 2 à 5) et les recommandations adressées au directeur de l'imprimerie (étape 7).

  • Durée : 5 minutes de présentation + 2 à 3 minutes de questions.
  • Qui passe : un(e) étudiant(e) (ou un binôme) désigné(e) par l'enseignant.
  • Support : le travail réalisé pendant le TP, aucune préparation supplémentaire n'est nécessaire.
  • Ce qui est attendu :
    • rappeler le contexte (le logo envoyé chaque semaine) et ce que l'analyse a révélé ;
    • présenter la démarche suivie (taille, empreinte, position de l'archive, extraction) et les recommandations ;
    • répondre aux questions de la classe.
astuce

Cet exercice entraîne à l'oral technique court exigé par plusieurs épreuves du BTS (notamment E5 et E6) : clarté, structure, capacité à répondre à l'improviste.

📌 Une solution

Notions théoriques​

Vous venez de retrouver un fichier confidentiel dans un logo, sans que rien ne s'affiche de particulier. Voyons ce que recouvre cette technique, pourquoi elle est difficile à repérer, et ce qu'une organisation peut faire.

Cacher l'existence d'un message​

La stéganographie est l'art de dissimuler l'existence même d'un message dans un autre contenu (une image, un son, une vidéo, un document). Elle se distingue de la cryptographie, qui rend un message illisible sans en cacher la présence :

CryptographieStéganographie
ObjectifRendre le message illisibleCacher que le message existe
Ce que voit un observateurUn contenu chiffré, manifestement secretUn contenu banal, sans rien de suspect
Si l'observateur sait où chercherIl lit des données illisiblesIl lit le message en clair

Les deux se combinent : on peut chiffrer un message, puis le cacher.

Dans ce TP, la technique employée est la plus simple de toutes : on colle un fichier à la suite d'une image.

Pourquoi l'image reste valide​

Un fichier image possède une structure avec un début et une fin déclarée. Un fichier JPEG se termine par un marqueur de fin d'image, un fichier GIF par un octet de fin (3B). Un visualiseur lit les données jusqu'à cette fin, puis s'arrête : ce qui suit est ignoré. À l'inverse, un fichier ZIP se lit depuis la fin, où se trouve son répertoire : ce qui le précède est ignoré. Les deux formats se superposent donc sans se gêner :

| image (GIF, JPEG...) ......... fin de l'image | archive ZIP (PK...) ............. |
début du fichier début de l'archive fin du fichier

C'est pourquoi file répond « image » (il lit le début), tandis que unzip ouvre le même fichier (il lit la fin).

Les techniques les plus courantes​

TechniquePrincipeDifficulté à repérer
Fichier ajouté à la suiteArchive ou texte collé après l'image (ce TP)Faible : la taille et l'empreinte changent
MétadonnéesMessage écrit dans un champ de commentaire ou EXIFFaible : exiftool les affiche
Bits de poids faibleMessage codé dans les bits les moins significatifs des pixelsÉlevée : l'image paraît inchangée

La troisième technique modifie les pixels de façon imperceptible. Elle ne change pas la taille du fichier et ne se repère qu'avec des outils d'analyse statistique spécialisés, hors du cadre de cette séance.

info

Le même mécanisme vaut pour d'autres fichiers (son, vidéo, document bureautique). Il sert aussi bien à faire sortir des données qu'à faire entrer un programme malveillant caché dans un fichier d'apparence inoffensive.

Pourquoi c'est un problème pour une organisation​

Une organisation protège ses données en surveillant ce qui en sort, et ces contrôles sont souvent bâtis sur ce que l'on voit :

  • des mots-clés (« CONFIDENTIEL », « RIB », « salaire ») recherchés dans les documents ;
  • des types de fichiers interdits (archives, exécutables) ;
  • des volumes anormaux de données envoyées.

Une image au contenu caché passe entre les trois. Les trois critères de sécurité sont en jeu :

CritèreCe qui est atteint ici
ConfidentialitéUn document secret quitte l'organisation, sans alerte
IntégritéLe fichier transporté n'est plus celui qui a été publié (empreinte différente)
DétectionL'incident peut durer des semaines avant d'être repéré, comme dans le scénario
attention

Cette technique est accessible à toute personne qui sait utiliser deux commandes. La menace principale n'est donc pas un expert, mais un salarié qui a accès à des données sensibles. D'où l'importance du moindre privilège, vu lors de la séance sur les droits sudo.

Repérer et limiter​

Indices qui doivent alerter :

IndiceComment le vérifier
Taille supérieure à celle de l'image d'originels -l, comparaison avec la référence
Empreinte différente de l'original publiésha256sum
Données après la fin de l'imagegrep -obUa "PK", binwalk
Chaînes lisibles inattenduesstrings fichier | grep ...
Métadonnées inhabituellesexiftool fichier

Mesures de protection :

  • Reconvertir les images (ne conserver que les pixels) avant qu'elles ne sortent ou lorsqu'elles entrent.
  • Limiter les accès : un salarié qui n'a pas accès à un document ne peut pas le cacher.
  • Journaliser et alerter : volumes, destinataires inhabituels, envois répétés d'un même fichier.
  • Informer : un salarié averti sait que la sortie de données est une faute, et que la technique est détectable.
Pour aller plus loin

Les épreuves de type CTF (Capture The Flag) utilisent beaucoup la stéganographie : on y cherche un secret caché dans une image ou un son. Les commandes de ce TP (file, strings, binwalk, exiftool) constituent le réflexe de départ.


Test de mémorisation/compréhension​


Qu'est-ce que la stéganographie ?


Dans ce TP, pourquoi la commande file annonce-t-elle « GIF image data » pour un fichier qui contient aussi une archive ZIP ?


Pourquoi un visualiseur d'images affiche-t-il normalement une image à laquelle on a collé une archive ZIP à la suite ?


Un fichier reçu et le logo publié par l'éditeur ont deux empreintes SHA-256 différentes. Que peut-on affirmer ?


Le logo d'origine pèse 43 octets. Que prouve une empreinte de head -c 43 du fichier reçu identique à celle de l'original ?


Pourquoi une passerelle qui bloque les documents contenant le mot « CONFIDENTIEL » ne repère-t-elle pas ce fichier ?


Quelle mesure technique permet de supprimer des octets ajoutés à la suite d'une image ?


Vous interceptez un fichier suspect. Quel est le premier réflexe avant toute analyse ?



Bonnes pratiques​

  • Se méfier d'une image trop lourde : comparer sa taille et son empreinte à celles de l'original publié.
  • Ne pas se fier à file seul : il lit le début du fichier, et un fichier peut être à la fois une image et une archive.
  • Chercher ce qui se trouve après la fin de l'image (strings, grep -obUa "PK", binwalk).
  • Lister une archive avant de l'extraire (unzip -l), puis l'extraire dans un dossier dédié.
  • Conserver le fichier d'origine intact (copie et empreinte) avant toute analyse.
  • Reconvertir les images qui entrent ou sortent de l'organisation, pour ne garder que les pixels.
  • Limiter les accès aux données sensibles : on ne peut pas cacher ce à quoi on n'a pas accès.