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 :
- depuis le compte
agentde la séance précédente (à recréer avec les étapes 1 et 3 s'il n'existe plus), lancersudo find /etc/passwd -exec /bin/sh \; -quit, puiswhoami, et lire la réponse - citer la commande qui vérifie la syntaxe d'un fichier de règles
sudo, sans l'activer - expliquer à quoi servent les guillemets vides
""placés à la fin de la règlesudoersé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
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.
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
- Quelle est la taille de chacun des deux fichiers ?
- Que répond la commande
filepour 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
- Les deux empreintes sont-elles identiques ? Que faut-il en conclure ?
- 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
- Que trouve-t-on dans le fichier reçu, et dans le fichier d'origine ?
- À quelle position (en octets depuis le début du fichier) se trouve le premier
PK? - 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 -
- Comparez l'empreinte de la première commande avec celle de
logo_catalogue.gif. Que prouve ce résultat ? - 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
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.
- Quel message d'avertissement
unzipaffiche-t-il, et que signifie-t-il ? - Quel est le nom du fichier caché, et quelle est sa taille ?
- 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
- Quelle relation y a-t-il entre les trois tailles affichées par
ls -l? - Que répond
filepourphoto_piegee.gif? Pourquoi ? unzip -lretrouve-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.
- Pourquoi la passerelle de messagerie n'a-t-elle rien détecté ?
- Quelles sont les 3 constatations, établies pendant ce TP, que vous consignez dans le rapport ?
- 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.
- Quelles lignes
binwalkaffiche-t-il, et à quelles positions ? - À quoi sert l'option
-ede 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.
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 :
| Cryptographie | Stéganographie | |
|---|---|---|
| Objectif | Rendre le message illisible | Cacher que le message existe |
| Ce que voit un observateur | Un contenu chiffré, manifestement secret | Un contenu banal, sans rien de suspect |
| Si l'observateur sait où chercher | Il lit des données illisibles | Il 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'