Téléchargements de fichiers, Sécurité, et ADS

Cet article est également accessible avec l'url redirigée http://fspsa.free.fr/ads.htm

Les fichiers téléchargés sont, selon leurs extensions, classés ou non comme fichiers sensibles. Si le disque est formaté en NTFS, un flux ADS est ajouté au fichiers classés sensibles pour afficher un Avertissement de sécurité. L'ADS est effacé si on décoche "Toujours demander avant d'ouvrir ce type de fichier" dans cet Avertissement de sécurité affiché lors de l'ouverture du fichier, ou si on clique sur le bouton [Débloquer] dans les Propriétés du fichier.

 

 

 

Ouverture d'un fichier téléchargé

Lorsqu'on télécharge un fichier potentiellement dangereux,
son utilisation est soumise à un préalable de sécurité :

"L'éditeur n'a pas pu être vérifié. Voulez-vous vraiment exécuter ce logiciel ?"
Coche "Toujours demander avant d'ouvrir ce type de fichier"

Il suffit de décocher pour que la question ne soit plus posée pour ce fichier.
On en conclut que l'information est stockée dans un flux ADS.
Ce point sera abordé un peu plus bas.

 

Propriétés d'un fichier sensible

Les Propriétés d'un tel fichier présentent un Bouton [Débloquer] :

 

Disparition du bouton [Débloquer]

Si on débloque ce fichier ou que "Toujours demander avant d'ouvrir ce
type de fichier" a été décoché, le Bouton Débloquer n'est plus affiché.
Même chose bien sûr si on supprime le flux ADS correspondant à l'aide
d'un programme, ou qu'on l'édite avec Notepad (Bloc-Notes).

Il est impossible de faire revenir ce bouton. Et la coche "Toujours demander avant
d'ouvrir ce type de fichier" n'est plus accessible puisque l'avertissement de sécurité
n'est plus présenté. On verra plus loin qu'on peut recréer manuellement le flux ADS
et faire revenir cette protection.

On a vu que cette sécurité était active pour certains types de fichiers jugés dangereux
soit parce que ce sont des exécutables (EXE, PIF, BAT, CMD, SCR ...),
soit pour la raison qu'ils sont exécutés par le système via le mécanisme
d'association, et que l'action peut modifier le système de façon inattendue.
C'est le cas des fichiers REG qui sont prévus pour être fusionnés au Registre.
Afin d'expérimenter, on trouvera de nombreux fichiers REG à télécharger
chez Kelly Theriot. Ne pas fusionner un fichier REG sans bonnes raisons.
Toujours sauvegarder le Registre AVANT.

 

Désactiver l'avertissement de sécurité pour un type de fichier

Si cette protection est jugée abusive, il est possible de la désactiver dans
Options des Dossiers, Types de fichiers. Taper REG pour accéder rapidement
au Type de fichier "Inscription dans le Registre" :

Le Bouton Avancé donne accès aux coches :

On peut donc choisir ici l'affichage ou non de l'extension pour ces fichiers, et si le système doit ou non afficher l'Avertissement de sécurité pour les fichiers REG venant d'une autre machine.

L'information est sauvegardée dans le Registre par la valeur EditFlags de type DWORD :

Ici "Confirmer l'ouverture après le téléchargement" est coché, EditFlags contient la valeur hexadécimale 0x00020000 (131072 en décimal). Si décoché, la valeur devient 0x000300000.

Si "Toujours afficher l'extension" est coché, une valeur Chaine vide nommée AlwaysShowExt est créée. Elle est supprimée si on décoche.

Il peut arriver que ce réglage soit accidentellement modifié pour les EXE.
On trouvera chez Kelly Theriot de quoi réparer facilement ce dysfonctionnement :
164. Disable or Enable Always Ask Before Opening
    - dontask.reg
    - alwaysask.reg

 

Pas de flux ADS avec les partitions FAT32

Quand on copie le fichier sensible vers une partition non-NTFS,
le message suivant apparait :

On ne bénéficie donc pas de cette protection avec ce type de partitions.

Nous allons examiner à présent les flux ADS.
Comment les afficher, les supprimer, les créer, et les modifier :

 


Les ADS (Alternate Data Stream)

Les ADS sont inhérents au NTFS.

Liens

 

Généralités

Les ADS sont le reflet du HFS ou Hierarchical File System du Macintosh et ont été créés pour assurer une certaine compatibilité entre les deux systèmes de fichiers, tout en généralisant le concept. Il prend sur NTFS le nom de data streams, utilisé en particulier pour la gestion de la sécurité.

Sur MAC les fichiers n'ont pas d'extensions et sont reconnus par le système grâce au concept de forks.
Sur HFS un fichier est donc composé de ces deux forks : data fork et resource fork.
Sur NTFS les fichiers ont une extension, et sont composés de plusieurs data streams :

How NTFS works
Unnamed and Named Streams :

Unnamed and Named Streams

Exemple de Streams d'un fichier téléchargé :

La taille de Standard data fait les 13 octets correspondants à la taille du fichier affichée dans Explorer.
Remarquer que ces streams n'ont pas de noms, contrairement à ceux qui vont être étudiés ci-après.

 

Comment mettre en évidence la présence de ces informations cachées ?

Certaines commandes reconnaissent les ADS.
Pour adresser l'ADS d'un fichier (ou d'un dossier), on complètera le nom  par ":NomDel'ADS".
Exemple : 2001.avi sera affublé d'un ADS nommé secret, accessible avec 2001.avi:secret
ECHO et MORE sont ADS-aware ; voir quelques exemples ici : stream.html
Depuis Vista la commande DIR /R affiche les flux de données alternatifs des fichiers.
Notepad.exe, le Bloc-Notes de Windows, est également ADS-aware, mais seulement en lignes de commandes (préférer metapad).

Streams.exe

En lignes de commandes on utilisera ECHO, MORE, DIR /R (depuis Vista), ou des programmes tiers comme l'outil STREAMS de Mark Russinovich :

S:>streams autorunenable.reg

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

S:\autorunenable.reg:
:Zone.Identifier:$DATA 26

Le résultat est le nom du flux : Zone.Identifier (26 octets)
Le commutateur D (Delete) permet de supprimer les ADS :

S:>streams -d autorunenable.reg

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

S:\autorunenable.reg:
Deleted :Zone.Identifier:$DATA

Vérification en retapant la commande streams autorunenable.reg :

S:\>streams autorunenable.reg

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

 

La commande donne un résultat vide, le flux Zone.Identifier a été supprimé.

À présent le fichier téléchargé autorunenable.reg ne déclenche plus l'Avertissement de sécurité.
Le Bouton Débloquer ne fait plus partie de ses propriétés.

 

PHM PowerToy

Un autre outil, très apprécié, permet de faire de même :
PHM PowerToy une des Applications PC de Philippe Majerus :

On remarque l'existence de flux sans nom (3 streams (1 named).

 

LADS.EXE

Voir la section 9 de l'article : Les Alternate Data Streams (ADS) par Stéphane Milani, et le tuto sur OTL.
J'ai téléchargé lads.exe et l'ai placé dans un dossier du %path%. On peut se contenter de le copier dans Windows.
La nouvelle commande lads répond ainsi à la moindre sollicitation.
Démo dans un dossier tests monté en lecteur X: pour avoir des prompts courts.
On voit que la commande type affiche bien le contenu du fichier test, mais ne sait pas afficher le contenu de l'ADS.
Notepad affiche le contenu de l'ADS à condition de savoir son nom.
Streams ne sait qu'afficher le nom de l'ADS.
Avec lads il n'y a pas besoin de préciser le nom du fichier.
On peut indiquer un nom de dossier pour analyser son contenu.
Entrer lads /? pour plus de détails sur la commande.

C:\>subst x: tests

C:\>x:

X:\>echo coucou>test

X:\>echo secret>test:monads

X:\>type test
coucou

X:\>type test:monads
La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.

X:\>notepad test:monads

X:\>streams test

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

X:\test:
             :monads:$DATA 8

X:\>lads

LADS - Freeware version 4.10
(C) Copyright 1998-2007 Frank Heyne Software (http://www.heysoft.de)
This program lists files with alternate data streams (ADS)
Use LADS on your own risk!

Scanning directory X:\

      size ADS in file
---------- ---------------------------------
         8 X:\test:monads

         8 bytes in 1 ADS listed

X:\>lads /?

LADS - Freeware version 4.10
(C) Copyright 1998-2007 Frank Heyne Software (http://www.heysoft.de)
This program lists files with alternate data streams (ADS)
Use LADS on your own risk!

Usage: LADS [Directory] [/S] [/D] [/A] [/Xname]
Directory: directory to scan, current if ommitted
/S include Subdirectories
/D Debug LADS ;-)
/V Verbose error reports
/A give a summary of All bytes used in the scanned directories
(All files and directories are considered as uncompressed
and all security decriptions are skipped
for calculating this number!)
/Xname eXclude any ADS "name"
/Pfile read Parameters from "file"

X:\>mklink /H testHL test
Liaison permanente créée pour testHL <<===>> test

X:\>lads

LADS - Freeware version 4.10
(C) Copyright 1998-2007 Frank Heyne Software (http://www.heysoft.de)
This program lists files with alternate data streams (ADS)
Use LADS on your own risk!

Scanning directory X:\

size ADS in file
---------- ---------------------------------
           8 X:\test:monads
           8 X:\testHL:monads

16 bytes in 2 ADS listed

X:\>subst /d x:

X:\>

En finale j'ai utilisé la commande mklink de Win7 pour créer un Lien Réel.
Ce Lien NTFS fonctionne comme il se doit, la liaison avec l'ADS est effective.

 

Stream Explorer

Stream Explorer est un explorateur de fichiers qui révèle la présence des Streams des fichiers et dossiers, ainsi que leurs contenus.

screen shot

 

AlternateStreamView

 NirSoft - Nir Sofer a le secret de ces petits utilitaires

 

Alternate Data Streams

ADS.exe de Juan M. Aguirregabiria analyse un dossier, liste les fichiers pourvus d'un ADS, et affiche les contenus des streams. Deux boutons permettent de copier facilement les flux.

ADS

 

Comment afficher le contenu d'un ADS

On vient de voir quelques programmes permettant de lister les Streams et de voir leurs contenus.
La commande DIR /R (Vista/W7) permet de repérer les flux, et la commande MORE permet de les afficher.

Il est possible d'éditer le contenu d'un ADS en lignes de commande avec Streams, la méthode est décrite ici, en même temps que l'utilisation de la commande ECHO pour la création d'un flux.

Il est plus confortable d'utiliser Bloc-Notes, MAIS en lignes de commandes (notepad.exe), car ça ne veut rien savoir depuis son interface graphique, même avec des extensions .TXT et des guillemets. J'encourage l'utilisation d'éditeurs tiers ; Metapad est beaucoup moins susceptible et bien plus agréable que l'éditeur minimaliste de Windows. Il affichera et éditera tous les flux, alors que Bloc-Notes ne saura manipuler que ceux finissant par une extension ; stupide limitation.

Ouvrir une Console CMD (Démarrer>Exécuter>cmd) et taper la commande :
"notepad nomdufichier:Zone.Identifier"
Noter que c'est possible parce que notepad croit que .Identifier est une extension ; il est content le cornichon.
Exemple ci-dessous toujours avec notre fichier autorunenable.reg

notepad autorunenable.reg:Zone.Identifier

Le contenu de l'ADS "Zone.Identifier" du fichier autorun.reg s'affiche dans Bloc-Notes :

ZoneId=3 correspond à la zone Internet.

 

Comment éditer un ADS

Avec la technique utilisée ci-dessus. Noter que la moindre modification du contenu du flux  "Zone.Identifier" va avoir le même résultat que sa suppression : le bouton [Débloquer] va disparaitre des Propriétés du fichier, il n'y aura plus d'alerte de sécurité.

 

Comment créer un ADS

On peut utiliser la commande ECHO. Je trouve plus intéressant d'explorer les possibilités de NOTEPAD, le Bloc-Notes de Windows, qu'on remplacera avantageusement par Metapad, moins coincé.

Soit un fichier "TEST".
Pour créer un ADS "mon-ads-à-moi-que-j'ai", créer le fichier directement avec Notepad :

notepad TEST:mon-ads-à-moi-que-j'ai

Le Bloc-Notes de Windows est un outil minimaliste. L'absence d'extension lui cause problème :

Notepad ajoute systématiquement .txt si le nom du flux est laissé sans extension.
Depuis son interface graphique, quand on veut sauvegarder un fichier sans extension il suffit de mettre des guillemets, par exemple "hosts", ou de passer par Type : "Tous les fichiers". Mais en ligne de commandes ça ne marche pas, alors que mon éditeur de texte préféré Metapad ne pose pas de problème. Contournement : donner une extension minimale, ce qui revient à mettre au moins un point dans le nom.
Exemples :
Zone.Identifier
mon.ads
mon.ads.à.moi.que.j'ai
Ou terminer le nom par un point :
mon-ads-à-moi-que-j'ai.

On peut créer un flux sans extension avec la commande echo :
echo Message secret : >TEST:mon-ads-à-moi-que-j'ai
Mais si on cherche à lire ce flux avec Notepad, celui-ci ne le trouvera pas, car il cherche une extension .txt
Encore une fois, pas de problème avec Metapad.

Reprenons. Le nom du flux a donc ici l'extension .txt attribué par Bloc-Notes.
On peut ajouter du texte dans le stream :

Fermer Bloc-Notes, qui demande à sauvegarder le résultat. Le fichier TEST est alors créé.
Noter que le fichier TEST est vide, on peut lui ajouter du texte indépendamment du flux.
On peut renommer TEST en TEST.txt, le flux reste attaché au fichier.
Le flux sera éditable avec la commande corrigée :

notepad TEST.txt:mon-ads-à-moi-que-j'ai.txt

On pourrait s'attendre à ce que le contenu du flux disparaisse suite à ce changement de nom. Ce n'est pas le cas.
Le flux ADS d'un fichier peut-être beaucoup plus important que le fichier lui-même.
On s'est amusé à créer du texte, mais on pourrait aussi bien ajouter un flux composé d'hexadécimal, par exemple une image ou un programme.
On peut ajouter un flux à un dossier et un flux peut contenir un programme.

 

Faire réapparaître le bouton Débloquer

En cliquant sur le bouton [Débloquer] dans les Propriétés du fichier téléchargé autorunenable.reg qui a servi d'exemple depuis le début, on a supprimé le flux  "Zone.Identifier", et le bouton n'est plus présenté, ce qui est l'effet attendu. Le même résultat est obtenu en décochant "Toujours demander avant d'ouvrir ce type de fichier" comme vu sur la première image au début de cet article. Est-il possible de faire revenir le bouton  [Débloquer] en recréant le flux ? Essayons :

notepad autorunenable.reg:Zone.Identifier

Comme le flux n'existe plus :

Cliquer Oui. Entrer le contenu qui convient :

Sauvegarder. Afficher les Propriétés du fichier autorunenable.reg :

Victoire, le bouton [Débloquer] est revenu.

 

 

Visualisation de l'ADS sur le disque

Un éditeur hexadécimal de disque permet de voir où sont placés les octets de l'ADS.
Une clé USB va servir à l'expérience. Il va falloir la formater en NTFS et y créer un ADS.

 

Formater une clé USB en NTFS

Méthode 1   : Rendre possible le formatage NTFS d'une clé USB
Sur XP, par défaut, le format NTFS n'est pas proposé, et il est refusé en ligne de commande. Il faut auparavant modifier la Stratégie du Volume Amovible. Pour cela aller dans le Gestionnaire de Périphériques à la section Lecteurs de disque. Afficher les Propriétés du Flash Disk USB Device et sous l'onglet Stratégie cocher "Optimiser pour la Performance". Une fois enregistrée cette modification, laquelle entraîne que les données ne seront plus écrites en priorité afin de favoriser les performances, le format NTFS devient possible :

Ne pas oublier après le formatage de revenir à "Optimiser pour une suppression rapide", mode qui favorisera une écriture immédiate, réduisant les risques de perte de données en cas de déconnexion sans précaution de la clé ou d'une coupure d'alimentation.

 

Méthode 2 : Formater la clé puis convertir en NTFS avec CONVERT

Cette autre méthode consiste à formater la clé dans le format par défaut, puis convertir en NTFS avec la commande CONVERT. On opère depuis l'explorateur de fichiers ou le Gestionnaire de disque (Démarrer>Exécuter>diskmgmt.msc) :

Une fois la clé formatée en FAT, utiliser CONVERT pour passer du format FAT au NTFS :

E:\>CONVERT u: /FS:NTFS
Le type du système de fichiers est FAT.
Volume QUIR a créé 02/03/2008 20:48
Le numéro de série du volume est C85C-1B6C
Windows vérifie les fichiers et les dossiers...
Vérification des fichiers et des dossiers terminée.
Windows a vérifié le système de fichiers sans trouver de problème.

1 046 446 080 octets d'espace disque au total.
1 046 446 080 octets disponibles sur le disque.

16 384 octets dans chaque unité d'allocation.
63 870 unités d'allocation au total sur le disque.
63 870 unités d'allocation disponibles sur le disque.

Détermination de l'espace disque requis pour la conversion du système
de fichiers...
Espace disque total : 1022192 Ko
Espace libre sur le volume : 1021920 Ko
Espace requis pour la conversion : 8413 Ko
Conversion du système de fichiers
La conversion est terminée

E:\>u:

U:\>

Une fois positionné sur la clé U: créons un fichier ADS :

U:\>notepad TEST.TXT:fspsa.txt

Voici le contenu de TEST.TXT ==>

Et le contenu de TEST.TXT:fspsa.txt ==>

Un éditeur de disque montre comment sont répartis les octets :


Ça vous a plu ? C'est curieux ces streams-flux-ADS-méta-données-choses, hein ?
JF     Les restes du site & ses addenda

compteur Free
Créée le 21/1/2008