Accueil Tarhison
Post
Annuler

Tarhison

Quand on parle de fuites d’informations dans les formats de fichier, on pense généralement aux formats propriétaires et en particulier aux formats de la suite MS Office.
Dans un document au format Word on trouve tout un tas d’informations que l’on ne souhaite pas forcément rendre public (votre nom, nom de votre PC, chemin sur le disque, noms des auteurs, dates de modifications etc).

Microsoft en a pris conscience et développé un outil de suppression de métadonnées pour ses formats propriétaires.

À un niveau moindre, le format d’archivage Tar pose le même problème. Ce format est à l’origine destiné à effectuer des sauvegardes, par conséquence, il garde un nombre important d’informations comme les id de l’utilisateur et du groupe propriétaires, les droits sur le fichier et la date de dernière modification.

L’évolution de l’ancien format tar pour la norme ustar n’arrange pas les choses et rajoute le nom d’utilisateur et le nom du groupe.

Mais le format Tar n’est pas seul à l’origine de ce problème. On pourrait montrer du doigt les programmes gzip et bzip2 qui ne permettent pas de compresser un répertoire et obligent par conséquent le passage par Tar.

Heureusement il existe des programmes de compression capables de gérer les répertoires directement comme zip et 7z, seulement ils ne sont pas forcément disponibles selon le système UNIX que vous utilisez.

Ce problème m’a donné l’envie d’écrire un petit programme d’anonymisation d’archives tar (compressées ou non par gzip/bzip2) que j’ai baptisé “Tarhison”.

Pour illustrer le fonctionnement du programme, j’ai téléchargé une archive disponible sur PacketStorm. L’ouverture avec Ark nous apprend que le login de l’auteur est kevin et que les fichiers ont été modifiés entre le 2 et le 10 mars 2007 :

tar file metadata

On fait appel à Tarhison pour dissimuler ces informations :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ python tarhison.py seccheck-0.7.1.tar.gz
Creating temporary directory /tmp/tmp243Mtp
Creating temporary file /tmp/tmp-QALe5.tar.gz
Extracting archive
Generating anonymous copy
/tmp/tmp243Mtp/seccheck-0.7.1/
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/seccheck_00_services.sh
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/seccheck_01_users.sh
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/seccheck_03_kernelcheck.sh
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/seccheck_05_logging.sh
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/seccheck_10_accessauth.sh
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/seccheck_99_perms.sh
/tmp/tmp243Mtp/seccheck-0.7.1/modules.d/seccheck_NN_template.sh.NOT
/tmp/tmp243Mtp/seccheck-0.7.1/seccheck.sh
Overwritting original
Deleting temporary file
Deleting temporary extracted files
Anonymisation done !

On ouvre à nouveau l’archive :

anonymised tar file metadata

Le nom du groupe et de l’utilisateur sont passés à anon, le gid et uid à 1000 et la date des fichiers est fixée au 1er janvier 1970.

Le programme se base sur le module python tarfile. Il extrait les fichiers de l’archive et la recrée en changeant les informations.
J’aurais pû modifier directement le fichier pour changer les informations seulement cela m’aurait restreint aux archives non compressées.

Code source : tarhison.py

Published January 08 2011 at 16:33

Cet article est sous licence CC BY 4.0 par l'auteur.