Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

ADS - Alternate Data Stream

ADS - Alternate Data Stream : technologie Microsoft pour ajouter aux objets NTFS des flux de données totalement invisibles, y compris du code exécutable.

cr  01.04.2012      r+  21.08.2020      r-  20.04.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

ADS (Alternate Data Stream) (Flux de Données Additionnels - Ne pas confondre avec Active Directory Service) est une technologie exclusive aux partitions NTFS (New Technology File System) du système d'exploitation d'ordinateurs Windows (voir Comment passer une partition (un volume) de FAT (FAT16 ou FAT32) à NTFS sous Windows NT, 2000, XP, Vista, 7, 8...).

NTFS, outre l'augmentation sensible de la fiabilité et de la stabilité du système de gestion de fichiers de Windows, et le fait de faire sauter le verrou de la limitation à 4GO des fichiers, permet d'ajouter aux objets visibles de type "fichiers" (racine d'un disque, répertoires, fichiers), en plus des données "normales" le constituant (le flux de données principal), un à plusieurs flux de données additionnelles (données alternatives), totalement invisibles, dites "métadonnées", pouvant être de toutes natures (texte, graphique, code exécutable...).

La technologie ADS fut implémentée dans NTFS à partir de Windows 3.1 en mai 1993 par souci de compatibilité avec "Fork" du système de gestion de fichiers HFS (Hierarchical File System) du MacIntosh de la société Apple. Le but de Microsoft était de permettre à des serveurs sous Windows NT d'être serveurs de fichiers pour des clients MacIntosh. Dans HFS du MacIntosh, les fichiers sont stockés en 2 objets : "data fork" et "resource fork".

Différence fondamentale entre FAT et NTFS avant l'implémentation d'ADS

Avant l'implémentation de la technologie ADS dans NTFS :

  • Sous Windows, le système de gestion de fichiers était FAT, hérité de l'ancien système d'exploitation MS-Dos. Un fichier est constitué d'un unique flux de données et c'est l'extension du nom de fichier (par exemple ".gif", ".mp3", ".avi", etc. ...) qui permet au système d'exploitation Windows, par l'intermédiaire d'associations maintenues dans des clés du Registre Windows, de savoir quelle application est associée à ce fichier.
  • Dans HFS, ce sont des informations stockées dans l'objet "resource fork" du fichier qui donnent cette association (il n'y a pas de notion d'extension de fichier).

De quoi est constitué un fichier sous NTFS depuis l'implémentation de la technologie ADS

Depuis l'implémentation de la technologie ADS dans NTFS, les objets sous NTFS (fichiers, répertoires...) sont désormais constitués de :

  • Un flux de données principal (le contenu), visible par son propriétaire et les utilisateurs autorisés (pas toujours - Comment voir les fichiers et dossiers cachés de Windows)
  • Éventuellement, un nombre quelconque de flux de métadonnées extérieurs à l'objet, des ADS (Alternate Data Stream). Ces métadonnées sont des fichiers enfants du flux principal, COMPLETEMENT INVISIBLES à tous les outils standards et il est même impossible d'en soupçonner l'existence. Les ADS (Alternate Data Stream) ne peuvent pas être vus avec l'explorateur de Windows, ni vus à l'intérieur des fichiers. Windows n'en rapporte même pas la taille occupée. Les fonctions de recherches ignorent leurs contenus.

Seuls les volumes organisés avec NTFS (New Technology File System) sont concernés. Pour des raisons de fiabilité, nous vous recommandons vivement de passer à NTFS si vous êtes encore en FAT (Comment passer de FAT à NTFS).

Un objet (un répertoire ou un fichier) peut donc être constitué de plusieurs flux de données dont 1 seul, standard, est visible. La technologie ADS est totalement ignorée et inconnue du "grand public" car très peu d'utilitaires, très techniques, permettent de les voir et, encore moins permettent de les manipuler.

Le transport d'un fichier vers tout autre support non organisé en NTFS fait perdre complètement les métadonnées (copie d'un fichier vers des partitions FAT16, FAT32, disquette, bande, cd-rom, dvd, etc. ...).

Note :

À partir de Windows Vista, la commande "dir" contient un nouveau switch, /r, qui permet d'ajouter les ADS à la liste obtenue. Utilisez le programme ShowStream qui, en mode graphique, est bien plus agréable, bien plus puissant et bien plus complet.

À partir de Windows 7, Microsoft a eu une excellente initiative, sans en parler : pour des raisons évidentes de sécurité, Microsoft a retiré toute possibilité d'exécuter quoi que ce soit qui se trouve en ADS. Dans cet exercice de création d'un ADS, et jusqu'à Windows Vista, il était possible d'exécuter du code caché dans un ADS.




Puisque les flux ADS sont si bien cachés et indétectables, les cybercriminels s'en servent, une fois une machine pénétrée, pour y cacher des données ou des parasites.

On estimait, fin 2012, que, sur les 2 milliards d'ordinateurs installés dans le monde (2 230 000 000 d'internautes fin 2011), 25% d'entre eux, soit 500 millions d'ordinateurs, sont zombifiés silencieusement, à l'insu de leurs propriétaires, et sont devenus des Zombies dans des BotNet (des réseaux de Zombies).

Le 21 janvier 2018, les statistiques Internet en temps réel estiment qu'il y a :

  • 3.828.573.288 (3,8 milliards) d'utilisateurs de l'Internet (du Web)
  • Il se vend 400.000 ordinateurs par jour.
  • 68.000 sites Web sont hackés pour des tentatives d'opérations de fiching ou de zombifications ou d'attaques en DDoS.

Les Zombies (et les BotNets dans lequel ils se trouvent) sont utilisés pour :

  • Lancer des attaques de type DDoS afin de faire « tomber » des sites civils, militaires, gouvernementaux, etc. (attaques politiques/économiques, y compris de pays contre pays).
  • Lancer des attaques de type DDoS afin de faire « tomber » des sites de e-commerçants et faire des demandes de rançons.
  • Déployer un virus.
  • Lancer des spams.
  • Lancer des attaques en Phishing.
  • Etc.

L'internaute n'est pas victime de la zombification de son ordinateur, mais complice des attaques déployées, à cause de son laxisme à protéger l'accès à son ordinateur. L'internaute sera juridiquement recherché pour complicité passive. Les dispositions de la loi dite " Hadopi " reposent sur le même principe de négligence caractérisée, punissable de contraventions de cinquième classe pour :

  • 1° Soit ne pas avoir mis en place un moyen de sécurisation de cet accès
  • 2° Soit avoir manqué de diligence dans la mise en œuvre de ce moyen

Il n'y a pas que les cybercriminels qui transforment des machines en Zombies dans des BotNet. Des terroristes ou des criminels peuvent utiliser votre machine pour y cacher dans des ADS et revenir les consulter et les mettre à jour, des plans d'attaques, des schémas d'armes et explosifs, des plans de bâtiments, des professions de foi, des vidéos etc. ... tous documents qu'il serait trop dangereux pour eux de manipuler sur leurs propres ordinateurs... Des pédophiles ne conserveront jamais des milliers d'images ou vidéos pédophiles dans leurs propres ordinateurs mais dans ceux des autres, qu'ils ont pénétrés, sous formes de flux ADS indétectables.

Les flux ADS peuvent contenir un graphique, tel un icône, associé au flux principal ou un code de Tracking dans la poursuite des pirates de musiques et films ou un hashcode inscrit par un antivirus ou un outil de contrôle d'intégrité, etc. ...

La séparation entre un objet et ses flux ADS est à tel point complète qu'il est possible de le vérifier en utilisant les Hashcodes. Les Hashcodes sont des "chiffres clé" calculés à partir d'un contenu, de telle manière qu'il est impossible d'obtenir 2 Hashcodes identiques à partir de 2 contenus différents (quoique des attaques sur les Hashcodes obtenus avec l'algorithme MD5 rendent celui-ci moins fiable actuellement, la fabrication de "collisions" étant devenue possible). Installez SummerProperties, ou HashTab, et vérifiez les Hashcodes MD5 et SHA1 d'un fichier, ajoutez des flux ADS (noms des flux et contenus), revérifiez les Hashcodes : ils n'ont pas changé !

]




Nous allons créer un fichier de test, à la racine de la partition C:. Nous utilisons le nom de fichier ads.txt - assurez-vous de ne pas avoir un fichier légitime portant déjà ce nom. Nous utilisons le programme "Notepad", le bloc-notes de Windows, un programme toujours disponible et faisant partie intrinsèque de Windows.

  • Clic sur le bouton « Démarrer » Clic sur le bouton « Démarrer » de Windows 7 dans les versions Vista, 7, 8, etc. ... de Windows.
  • Passez en ligne de commande (Démarrer Exécuter ou saisie directement dans le champs de saisie, selon la version de Windows)
  • Saisissez : notepad c:\ads.txt
  • Appuyez sur la touche "Entrée"
    Si le fichier n'existe pas, il vous est demandé si vous voulez le créer. Dites Oui.
  • Saisissez un texte quelconque
  • Quittez notepad et enregistrez votre fichier.

Jusqu'à présent, tout le monde suit : c'est une opération normale (même si elle n'est pas habituelle).

Appelez l'explorateur de Windows : votre fichier ads.txt est là et vous pouvez lire son contenu.

  • Repassez en ligne de commande (Démarrer Exécuter)
  • Saisissez : notepad c:\ads.txt:flux_01.txt



  • Appuyez sur la touche "Entrée"
    Windows ne trouve pas le fichier et propose de le créer. Dites Oui



  • Mettez dedans un texte très long (des dizaines de milliers de caractères)
  • Quittez notepad et enregistrez votre fichier
  • Appelez l'explorateur de Windows. Le fichier c:\ads.txt est toujours là, inchangé mais le fichier c:\ads.txt:flux_01.txt est introuvable - il n'existe pas.
  • Repassez en ligne de commande et re-saisissez :
    notepad c:\ads.txt:flux_01.txt
  • Appuyez sur la touche "Entrée".
  • Hop, voilà le fichier de flux ads ! Le fichier c:\ads.txt:flux_01.txt est bien là, bien enregistré sur le Disque dur, avec tout son contenu !

Vous pouvez tester la même chose avec un répertoire et un à plusieurs flux ADS attachés, y compris si le répertoire est la racine du volume (de la partition).

Et si le flux ADS est un code exécutable ?

  • Recommencez la même opération mais en mettant un suffixe .exe au flux additionnel ADS attaché au flux principal (à son "maître") et mettez-y un binaire (un programme comme un Spyware, un Keylogger, un Cheval de Troie, etc. ... - pour ce test, on peut ajouter notepad.exe en flux ads, de la manière suivante :
    type c:\windows\notepad.exec:\fichier_maitre_test.txt:notepad2.exe
  • Repassez en ligne de commande saisissez :
    start c:\fichier_maitre_test.txt:txt:notepad2.exe
  • Appuyez sur la touche "Entrée". Le flux est exécuté et notepad s'ouvre ! Son flux principal ("maître") n'est, pourtant, qu'un banal petit bout de fichier texte, dont le suffixe est .txt, un fichier texte inoffensif comme il peut difficilement se faire plus inoffensif.
]




Là où cela devient dangereux, c'est lorsque ce flux ADS contient des données sensibles cachées pour être relevées ou exécutées ou consultées ultérieurement, localement ou à distance. Rien ne permet de soupçonner un programme quelconque, à commencer par les milliers de composants de Windows, d'écrire des données dans des flux ADS et rien ne permettra de voir et savoir qu'un fichier qui sort légalement de notre ordinateur (à l'occasion d'un test antivirus, par exemple) n'est pas en train de faire sortir un flux ADS contenant des données cachées (et, probablement, compressées et chiffrées (cryptées)).

  • Les ADS (Alternate Data Stream) sont totalement invisibles (sauf à utiliser quelques utilitaires spécialisés, généralement gratuits, développés par ceux qui ont découvert leurs existences - voir Contre-mesures : Anti-ADS (Anti-Alternate Data Stream) et utiliser le programme ShowStream.
  • Vous pouvez stocker et cacher un nombre illimité de documents secrets (fabrication de bombe, cours de hacking, programme exécutable cybercriminel, trucs piratés comme des films, document de 1, 10, 100 GO...) derrière un fichier apparent de 1 KO totalement anodin.
  • Les flux ADS s'attachent à tous les objets d'un système de gestion NTFS (fichiers, mais aussi répertoires, y compris celui racine d'un volume).
  • Un nombre quelconque de flux ADS peut être attaché à un même objet.
  • Les flux ADS n'étant pas soupçonnés par l'utilisateur, celui-ci n'a aucune raison de chercher à les analyser et encore moins de les supprimer.
  • « L'espace disque disponible » (information affichée, par exemple, par l'explorateur de Windows ou par « Propriétés » d'un volume NTFS ne tient pas compte des tailles des flux ADS (Alternate Data Stream). Un disque peut sembler vide alors que son espace est entièrement occupé par des flux ADS invisibles et non décomptés. Ainsi, un parasite peut saturer un disque et, de la sorte, faire « tomber » un système, sans que l'utilisateur ou l'administrateur n'en soupçonne la cause.





  • Les flux ADS (Alternate Data Stream) ne peuvent être supprimés par des moyens normaux. Seul l'effacement de l'objet parent ou la copie de l'objet parent sur un support non organisé en NTFS puis sa restauration sur le support en NTFS permet l'effacement des flux cachés attachés. Les flux ADS (Alternate Data Stream) attachés à un dossier racine d'un volume NTFS ne peuvent pas du tout être effacés. Nota : depuis leur découverte, certains antivirus et anti-trojans les recherchent et les analysent. Il existe également, depuis, quelques utilitaires spécialisés - voir Contre-mesures : Anti-ADS (Anti-Alternate Data Stream).
  • Un flux ADS (Alternate Data Stream) peut être un exécutable totalement invisible et peut être exécuté sans révéler son nom ! Il se lance avec la commande "Start" comme, par exemple,
    start c:\fichier_maitre_test.txt:fichier_ads_test.exe. L'exécution de cette tâche n'apparaîtra pas clairement dans le gestionnaire de tâches qui ne fera apparaître que le nom de l'objet parent !

À partir du « Service Pack 2 (SP2) » de Windows XP, sorti en août 2004, Microsoft a introduit un nouvel élément dans la gestion des fichiers NTFS : l'identifiant de zone ou « Zone Identifier » –« ZoneID ». Ce drapeau est positionné dans la partie « ADS » ("Alternate Data Stream") de la structure de chaque fichier issu/téléchargé depuis les applications Internet Explorer, Outlook Express ou Windows Messenger. Il permet de contrôler l'origine du fichier afin de prévenir l'utilisateur de toute exécution de fichier « parasite » provenant d'Internet à travers un des logiciels susmentionnés. Cette fonctionnalité fait l'objet de nombreux débats, car elle peut être contournée aisément (en nécessitant néanmoins une interaction de l'utilisateur connecté).




Metadata Files enregistrés dans la MFT (Master File Table)

La MFT est le composant principal du système de fichiers NTFS (New Technology File System). Grâce à la MFT le système de fichiers NTFS est un réseau hautement organisé de documents contenant des informations décrivant le contenu de votre système de fichiers. Chaque instance de données sur votre Disque dur est décrite dans ces documents, à partir du secteur d'amorçage de votre volume.

Les seize premiers enregistrements de la MFT sont dédiés aux fichiers de métadonnées. Les fichiers de métadonnées définissent la structure de la table MFT et permettent essentiellement une base de données auto-descriptives. L'utilisation de fichiers de métadonnées dans la table MFT n'est pas surprenant, chaque base de données utilise une certaine forme de métadonnées pour définir sa structure de données. Les fichiers de métadonnées qui sont stockées dans les seize premiers enregistrements de la MFT sont les suivantes:

Microsoft utilise plusieurs ADS (Alternate Data Stream) légitimement. En voici la liste :
Source : http://www.microsoft.com

Vérifié le 15.05.2016

System File

File Name

MFT Record

Purpose of the File

Master file table

$Mft

0

Contains one base file record for each file and folder on an NTFS volume. If the allocation information for a file or folder is too large to fit within a single record, other file records are allocated as well.

Master file table 2

$MftMirr

1

A duplicate image of the first four records of the MFT. This file guarantees access to the MFT in case of a single-sector failure.

Log file

$LogFile

2

Contains a list of transaction steps used for NTFS recoverability. Log file size depends on the volume size and can be as large as 4 MB. This log file is used to restore consistency to NTFS after a system failure. For more information about the log file, see NTFS Recoverability. Voir également la commande CHKDSK.

Volume

$Volume

3

Contains information about the volume, such as the volume label and the volume version.

Attribute definitions

$AttrDef

4

A table of attribute names, numbers, and descriptions.

Root file name index

$

5

The root folder.

Cluster bitmap

$Bitmap

6

A representation of the volume showing which clusters are in use.

Boot sector

$Boot

7

Includes the BPB used to mount the volume and additional bootstrap loader code used if the volume is bootable.

Bad cluster file

$BadClus

8

Contains bad clusters for the volume.

Security file

$Secure

9

Contains unique security descriptors for all files within a volume.

Upcase table

$Upcase

10

Converts lowercase characters to matching Unicode uppercase characters.

NTFS extension file

$Extend

11

Used for various optional extensions such as quotas, reparse point data, and object identifiers.

12 à –15

Reserved for future use.







Calcul de l'espace disque réel utilisé, taille des ADS et liens physiques multiples

Lorsque l'on regarde la taille d'un fichier, d'un répertoire, etc., ces calculs sont faux ! La taille annoncée des données sur un volume (un disque organisé en NTFS (New Technology File System)), ou la taille annoncée de l'espace libre sur un volume, sont faux ! Que ces valeurs soient annoncées par l'Explorateur de Windows ou par des utilitaires et outils de tierces parties, elles sont fausses !

Avec les propriétés d'un volume organisé en NTFS, d'un répertoire ou d'un fichier (Explorateur de Windows clic droit Propriétés), ou avec les outils donnant les mêmes informations, la taille libre ou occupée d'un volume disque (d'une partition) est fausse.

Certaines données, qui peuvent être extrêmement volumineuses, sont peut-être stockées dans des ADS. Elles ne sont absolument pas visibles et il n'est absolument pas tenu compte de leurs tailles.

Le seul outil, à interface graphique, qui soit capable de le faire, est TreeSize Professional. Il tient compte de la compression NTFS, des fichiers fragmentés, de liens en dur et des flux de données alternatifs ADS. Pour ces deux derniers, une option doit être sélectionnée car elle ralentit l'analyse d'un disque.

En cas de liens physiques (hard links créés, sur les systèmes de fichiers NTFS, avec les commandes fsutil hardlink ou mklink), il y a un problème particulier : si vous avez deux liens physiques, dans deux dossiers différents, pointant vers le même fichier, il faut se poser la question « Pour lequel de ces deux dossiers allez-vous comptabiliser la taille du fichier ? » (si vous ne voulez pas le compter deux ou plusieurs fois !). Il n'est pas possible de retrouver, lors d'un calcul de ce type, les autres noms qui pointent, par des liens physiques, vers une donnée physique. Tout ce dont on peut être sûr, c'est qu'elle sera dans le même système de fichiers (le même volume - si la ressource se trouvait sur un autre volume, elle ne compterait pas et les liens utilisés seraient des « liens symboliques » et non pas des « liens physiques »). Cela signifie que si nous trouvons un fichier ayant plus d'un lien physique pointant vers lui, nous ne savons pas si nous avons déjà tenu compte, par ailleurs, de la taille de cette donnée. TreeSize Professional résout ce problème en comptant, au niveau de l'espace disque total utilisé, 1 / n de la taille du fichier qui a n liens physiques pointant sur lui.