Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !

The Fame Monster.jpg

The Fame Monster

Alors là je suis fier: Avec ce titre, je suis certain de faire grimper en flèche mon référencement! Bon, pour ceux qui tombent sur cette page en croyant trouver de nouvelles révélations sur leur idole, toutes mes excuses. Mais permettez-moi de m'expliquer...

En effet, il y a quelques mois maintenant, la presse se faisait l'écho de l'histoire d'un soldat américain ayant utilisé un CD de Lady Gaga pour dérober des documents secrets et les transmettre à WikiLeaks. Sans porter le moindre jugement sur l'acte en lui-même l'idée était intéressante: dissimuler des fichiers de données sur un CD audio?!? Hélas, en creusant un peu plus que le journaliste moyen de TF1, on apprenait que le pirate avait utilisé un CD-RW – qu'il avait tout simplement effacé pour y copier les fichiers à exfiltrer... Rien de bien excitant après coup, mais depuis l'idée de cacher des fichiers sur un CD Audio me tarabuste. Je me suis donc acheté The Fame Monster [ Voir sur Amazon.fr] histoire de voir comment cacher un fichier sur une copie de ce CD.

Quelques notions sur les CD audios

Avant d'aller plus loin il faut préciser quelques notions sur les CD Audio. Vous le savez, un disque est divisé en pistes – chacune correspondant généralement à une chanson. Lorsque vous lisez un album en entier, vous pouvez voir le compteur de piste de votre lecteur s'incrémenter au fur et à mesure des morceaux. Vous savez aussi que vous pouvez sauter directement à une piste par son numéro. Ou encore que vous pouvez lire le disque en mode aléatoire, le lecteur passant automatiquement à une autre piste à la fin de chaque morceau.

Audio CD.png

Structure d'un CD audio — Un CD audio contient une table des matières en début de disque (lead-in) qui indique le début et la durée des différentes pistes (tracks) du disque. Pour être strictement conforme aux spécifications du livre rouge décrivant le format CD Audio, chaque piste doit être précédée d'un silence de 2 secondes (le pre-gap).

Dans la pratique, la quasi-totalité des lecteurs modernes supportent des pre-gaps d'une durée arbitraire et pouvant contenir des données audio. L'exploitation de ces déviations par rapport à la norme permet d'envisager des applications créatives comme l'insertion de morceaux cachés sur un album studio ou la suppression des applaudissements d'un album live lorsqu'il est lu morceau par morceau.

Pour pouvoir faire tout cela, votre lecteur doit connaître le nombre de pistes du CD, ainsi que leur emplacement sur le disque et leur durée. Ces informations sont enregistrées dans une table de matières (TOC) située en début de disque.

Par ailleurs, la norme du CD Audio spécifie également que chaque piste doit être précédée par un silence de 2 secondes (le pre-gap). Dans la pratique, les lecteurs modernes acceptent des pre-gaps de durée arbitraire et pouvant contenir des données audio. Par exemple, pour un album live, lors de l'authoring du disque, l'ingénieur son peut décider de placer les applaudissements dans le pre-gap. Comme celui-ci n'est pas lu en morceau-par-morceau, cela permet au lecteur de se caler directement au début de la chanson. Certains artistes utilisent aussi cet espace pour cacher des morceaux qu'on ne peut donc entendre qu'en lisant l'album dans son intégralité.

Comme toutes les autres pistes, la piste 1 d'un CD possède un pre-gap. Or, lorsque vous mettez un CD dans un lecteur et que vous pressez play, celui-ci commence toujours la lecture en sautant au début de la piste 1 – donc au-delà de son pre-gap. Encore une fois, cela permet d'ajouter une chanson cachée: cette fois elle est même très difficile à lire, puisqu'il faut commencer la lecture normalement, puis utiliser la touche rewind (◂◂) pour revenir en arrière jusqu'au début du pre-gap. Tous les lecteurs ne permettent pas cette manipulation. Ceux qui l'autorisent affichent parfois piste 0 lorsque l'on remonte avant le début de la piste 1. D'où le nom de track 0 qu'on donne parfois à ce truc...

Le rapport avec mon histoire d'espionnage du début? Et bien, que se passerait-il si je mettais non pas une piste son, mais un fichier de donnée dans le pre-gap de la piste 1? Il serait invisible pour un lecteur audio qui ne verrait là qu'un CD de musique. Par ailleurs, en usage normale (hors ripping) la plupart des lecteurs de CD-ROM se comportent comme un lecteur de CD Audio en ignorant purement et simplement le pre-gap de la piste 1...

En pratique

Pour mettre en œuvre cette idée, il faut commencer par ripper le disque audio cible:

sh$ cdrdao read-cd --device /dev/cdrom \
                  --datafile the-fame-monster.raw the-fame-monster.toc
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de>
/dev/cdrom: TSSTcorp DVD+-RW TS-L633J	Rev: D200
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

Reading toc and track data...

Track   Mode    Flags  Start                Length
------------------------------------------------------------
 1      AUDIO   0      00:00:00(     0)     04:54:35( 22085)
 2      AUDIO   0      04:54:35( 22085)     04:34:16( 20566)
 3      AUDIO   0      09:28:51( 42651)     04:09:68( 18743)
 4      AUDIO   0      13:38:44( 61394)     04:30:62( 20312)
 5      AUDIO   0      18:09:31( 81706)     04:49:14( 21689)
 6      AUDIO   0      22:58:45(103395)     03:40:70( 16570)
 7      AUDIO   0      26:39:40(119965)     03:55:02( 17627)
 8      AUDIO   0      30:34:42(137592)     03:40:52( 16552)
Leadout AUDIO   0      34:15:19(154144)

PQ sub-channel reading (audio track) is supported, data format is BCD.
Raw P-W sub-channel reading (audio track) is supported.
Cooked R-W sub-channel reading (audio track) is supported.
Copying audio tracks 1-8: start 00:00:00, length 34:15:19 to "the-fame-monster.raw"...
[...]

Le ripping du CD me laisse deux fichiers: le fichier raw qui contient les données audio brutes extraites. Et le fichier toc qui contient la table des matières du CD. Entre autres informations, celle-ci donne le timecode de départ de chaque piste et sa durée. En la modifiant, vous pouvez re-ordonner les pistes d'un album, ou faire votre propre compilation en mélangeant des pistes de plusieurs albums rippés séparément.

Mais ici, j'essaye d'être plus créatif que cela. Mon idée était de graver sur le CD une archive TAR dans le pre-gap comme s'il s'agissait de données audio. Le choix d'une archive TAR n'est pas innocent: c'est un format d'archive non-compressé et capable de continuer l'extraction même si des données sont endommagées. Pourquoi ces points me semblent importants? Et bien, parce que, contrairement aux CD de données, les CD Audio ne possèdent pas le troisième étage de correction Reed-Solomon. Celui-ci étant remplacé par une simple interpolation des données manquantes. Dans l'application que j'en fais ici, cela signifie que potentiellement la relecture de certains octets risques d'être erronée.

Pour en revenir à nos manipulations, j'ai donc créé une archive contenant tous les fichiers du dossier secret-data que je veux cacher sur le disque:

sh$ tar cf secret-data.tar secret-data

Ensuite, j'ai modifié la TOC du CD rippé pour graver mon fichier dans le pre-gap de la piste 1. Ça peut sembler étonnant, mais les modifications se résument à deux malheureuses lignes:

sh$ cat the-fame-monster.toc
[...]
// Track 1
TRACK AUDIO
NO COPY
NO PRE_EMPHASIS
TWO_CHANNEL_AUDIO
ISRC "USUM70903859"
AUDIOFILE "secret-data.tar" 0 // L'archive à cacher
START // Pour n'importe quel lecteur, le CD commence ici !!!
FILE "the-fame-monster.raw" 0 04:54:35
[...]

DATAFILE ou AUDIOFILE

Contrairement à ce que laisse entendre le man, il ne semble pas possible dans ma version de cdrdao de mélanger données audio et fichiers de données sur la TOC d'un CD Audio. Mais visiblement cdrdao ne prends pas la peine de s'assurer que le fichier indiqué par une clause AUDIOFILE contient bien des données audio. Donc...

L'épreuve du feu, maintenant: graver le CD.

sh$ cdrdao write --device /dev/cdrw the-fame-monster.toc

La gravure s'est passée sans problème. Et le CD obtenu semble en tout point être un CD Audio tout ce qu'il y a de plus normal. Et, en ce qui concerne son utilisation, exactement identique à l'original. J'ai pu le lire aussi bien sur mon ordinateur, que sur mon autoradio, ma PS2 ou même un vieux sound system des années 80'. Aucun problème. Quand à l'extraction à partir d'un logiciel comme Rhythmbox, cela crée bien les fichiers audio compressés comme avec n'importe quel CD Audio. Mais pas la moindre trace de mon fichier caché. À tel point qu'on pourrait commencer à douter qu'il ait bien été gravé sur le disque.

Pour vérifier, j'ai rippé la copie:

sh$ cdrdao read-cd --device /dev/cdrom --datafile out.raw out.toc
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de>
/dev/cdrom: TSSTcorp DVD+-RW TS-L633J	Rev: D200
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

Reading toc and track data...

Track   Mode    Flags  Start                Length
------------------------------------------------------------
 1      AUDIO   0      00:00:05(     5)     04:54:35( 22085)
 2      AUDIO   0      04:54:40( 22090)     04:34:16( 20566)
 3      AUDIO   0      09:28:56( 42656)     04:09:68( 18743)
 4      AUDIO   0      13:38:49( 61399)     04:30:62( 20312)
 5      AUDIO   0      18:09:36( 81711)     04:49:14( 21689)
 6      AUDIO   0      22:58:50(103400)     03:40:70( 16570)
 7      AUDIO   0      26:39:45(119970)     03:55:02( 17627)
 8      AUDIO   0      30:34:47(137597)     03:40:52( 16552)
Leadout AUDIO   0      34:15:24(154149)
[...]

D'entrée, un petit indice me laisse penser que l'opération a été un succès: le timecode (en minute:seconde:frame) de début de la piste 1 est 00:00:05 – et pas 00:00:00 comme sur l'originale. Les 5 frames sont en réalité l'espace occupé par mon fichier de donnée (pour cette manip j'ai utilisé un fichier un peu petit).

Cela se confirme quand on compare la taille du fichier rippé à partir de la copie et celui à partir de l'original: le premier est un peu plus gros:

sh$ ls -ls *.raw
354416 -rw-r--r-- 1 sylvain sylvain 362558448 Dec 17 17:54 out.raw
354404 -rw-r--r-- 1 sylvain sylvain 362546688 Dec 16 19:54 the-fame-monster.raw

Et maintenant, l'extraction des données cachées. Et vous allez voir que le choix d'une archive TAR rend la chose incroyablement facile:

sh$ mkdir out
sh$ tar xvf out.raw -C out
secret-data/
secret-data/plan-to-rule-the-world
secret-data/book-of-the-president

C'est fait! Plus fort – et sans doute parce que le CD est encore neuf et que mes données étaient de taille modeste – contrairement à ce que je craignais, les données extraites ne contiennent pas d'erreur:

sh$ diff -r secret-data out/secret-data && echo Identiques
Identiques

En situation réelle, pour que les données soient fiables, il faudrait sans doute cacher un fichier contenant un mécanisme de correction d'erreur plutôt qu'une simple archive TAR. Mais pour cette proof-of-concept, c'est très largement suffisant.

Conclusion

Au delà de la manipulation rigolote, cette technique a des implications sérieuses en terme de sécurité informatique. En effet, cela signifie que si vos utilisateurs ont la possibilité d'amener leurs CD de musique au travail, et qu'ils disposent sur place d'un graveur, il leur devient possible d'exfiltrer n'importe quelle donnée sensible de cette manière. L'examen du CD à la sortie ne révélant rien d'anormale – à moins de doter le personnel de sécurité d'un logiciel spécifique.

Mais, même alors, il ne s'agit là que d'un des moyens d'utiliser un CD Audio pour cacher des données. Après tout, un utilisateur malveillant et audacieux pourrait aussi cacher le fichier dans un autre pre-gap que le premier: il y a peu de chance que quelqu'un écoute son CD en intégralité pour en vérifier le contenu – et dans un pre-gap, les données deviennent invisibles lorsque l'on saute de piste en piste.

Autre piste de recherche, on pourrait aussi employer des techniques de stéganographie pour encoder directement les données à exfilter dans le flux audio. Encore une fois, la détection requiert une application spécialisée. Bref, et pour en revenir à l'histoire originale, les militaires américains ont fait preuve de bien peu de prudence en autorisant leur personnel à utiliser leurs propres CD Audio. Plus légèrement, on se prend à rêver d'une star internationale passant sa vie costumée et qui utilise ses CD pour transmettre des informations secrètes en toute discrétion. Mais là, je vais un peu trop loin...