Les Alternate Data Stream en NTFS.

Le système de fichier NTFS possède une particularité méconnue due à un volonté de compatibilité avec HFS de Macintosh : Il est possible d'ajouter un flux de données additionnel à un fichier ou à un répertoire. Plus grave : ce flux de données est complètement invisible !

warning.gif (1K) Ces manipulations sont réservées à des informaticiens expérimentés. Toute fausse manoeuvre peut être fatale à votre système.

warning.gif (1K) Toutes les manipulations sur les ADS se font en ligne de commande ou dans Démarrer - Exécuter.

Passons à la pratique :

Comment créer un ADS

Tapez : notepad C:\testads.txt:ads.txt

Si le fichier testads.txt n'existe pas, il sera créé. Un ADS associé(ads.txt) sera également créé, tout ce que vous pourrez saisir dans cette fenêtre de notepad sera inclus dans le flux de données additionnel.

Maintenant, sauvegardez le fichier puis refermez notepad. Allez dans l'explorateur et ouvrez de manière 'normale' le testads.txt. Où est donc passé ce que vous venez de saisir ?
C'est simple : dans l'ADS ! Il suffit de relancer la commande ci-dessus pour retrouver votre saisie.

Une autre particularité facilement vérifiable : Que vous insériez 3 mots ou 3 Mo dans votre ADS, le fichier 'porteur' ne change pas de taille !

Une autre manière d'insérer un ADS consiste à l'associer à un répertoire (ou une racine !)

Tapez en ligne de commande :
C:
md testads
cd testads
notepad :ads.txt
Et voilà ! surprenant, non ?

Vous commencez à vous familiariser ? Bien ! on continue !

Vous vous demandez : c'est bien beau tout ça, mais...

Comment effacer ces ADS ?

1ère méthode : Effacer le répertoire ou le fichier porteur.
del testads.txt ou rd testads
2ème méthode : Déplacer le fichier/répertoire sur un disque en FAT.
Malheureusement, la commande del ne gère pas les ADS...
Par contre, la version 1.5 de l'outil "stream" permet d'effacer ces ADS.

Comment créer un ADS à partir d'un fichier ?

La manoeuvre est assez simple :
type FichierSimple.txt > FichierPorteur.txt:FichierSimpleEnADS.txt
ou
type AppliSimple.exe > FichierPorteur.txt:AppliSimpleEnADS.exe

Eh oui ! Pourquoi pas un txt porteur d'un exe ?

Comment récupérer un fichier depuis un ADS ?

La manoeuvre est 'presque' aussi simple :
more < FichierPorteur.txt:FichierSimpleEnADS.txt > FichierSimple.txt
ou
cat FichierPorteur.txt:AppliSimpleEnADS.exe > AppliSimple.exe
(Cat est un outil du Ressource Kit NT)

Comment lancer un exécutable en ADS ?

start FichierPorteur.txt:AppliSimpleEnADS.exe

Transférer un ADS ?

La seule manière de déplacer un ADS est le déplacement de disque NTFS à disque NTFS (au maximum par un LAN). Les protocoles internet n'ont pas été prévus pour les ADS (E-mail, FTP, etc..), ouf !

warning.gif (1K) Quels dangers ?

Malheureusement, plusieurs :
- Une méconnaissance de ces possibilités par le grand public.
- Les ADS peuvent être associés à des fichiers, mais aussi à des répertoires ou à des racines.
- Les ADS ne peuvent pas être effacés simplement.
- Les ADS attachés à une racine ne peuvent pas être effacés du tout.
- Du code dangereux peut être dissimulé ou utiliser les ADS de manière malveillante.
- Un ADS peut être exécuté. - Un ADS exécuté ne présente pas son vrai nom.

Comment contrôler les ADS ?

Il existe quelques outils :
JC Bellamy
Streams
LADS
TDS-3

Références

Giac.org
Cert-Ist
BizNix
FAQ NTFS et ADS chez Heysoft