jeudi 18 mars 2010

Bookmark and Share

Le danger des flux additionnels - ADS : Alternate Data Stream

ADS signifie Alternate Data Stream (flux de données additionnels). Cette technique ne concerne que les systèmes de fichiers NTFS utilisé sous Windows.
Elle permet de cacher des flux de données dans un fichier totalement légitime. Ces flux peuvent être un simple fichier texte, une image ou bien du code exécutable.
Ces données cachées sont totalement invisibles pour l’explorateur ou même l’invite de commande Windows. La taille du fichier qui contient un ou plusieurs flux est tout simplement la même que celle du fichier ne contenant aucun flux.
Une technique qui intéresse particulièrement tout individu souhaitant cacher des fichiers, virus, chevaux de troies… aux yeux du système et de l’utilisateur.

Mais alors pour quelles raisons Microsoft a-t’il implémenté une telle fonctionnalité dans son système de fichier NTFS?
Une des raisons principales du support des ADS par Windows est de permettre le support du système de fichiers Macintosh Hierarchical File System (HFS) et ainsi de permettre à un système de type Windows d'être serveur de fichiers pour des clients Macintosh.
De nos jours, ils sont aussi utilisés par les antivirus qui stockent les checksums (sommes de vérification qui assurent l’intégrité du fichier) dans un flux, par des applications comme Internet Explorer, Outlook Express ou Windows Messenger qui marquent les fichiers qui en sont issus pour prévenir l’exécution de ces derniers. Le système de quotas, depuis Windows server 2003 R2, utilise aussi les Alternate Data Streams.

Les principaux dangers
- Les flux ne sont visibles que par des logiciels spécialisés tierces.
- Les flux ne s'attachent pas seulement aux fichiers, mais aussi aux répertoires ou racine d’un volume.
- Il peut y avoir plusieurs flux attachés à un même fichier.
- Sans outil spécifique, la suppression d’un flux nécessite soit la suppression du fichier hôte, soit le déplacement déplacement du fichier hôte vers un système de fichier non NTFS (une clé USB formatée en FAT32 par exemple).
- Le système ne prenant pas en compte la taille des flux, il peut indiquer un espace disque disponible important alors que votre disque est plein, entrainant ainsi un dysfonctionnement.
- Les flux peuvent être exécutés.
- Selon le système, seul le nom du fichier hôte peut apparaître lors de l'exécution d'un flux.

Les ADS en pratique
Il est techniquement assez simple de créer des ADS.

Lancer un invite de commande (démarrer > exécuter> taper cmd puis entrée)
Ensuite il suffit de créer un dossier pour faire les tests :
mkdir c:\testads

Puis se déplacer dedans :
cd c:\testads
Il faut ensuite créer un simple fichier texte avec un peu de contenu grâce à :
echo "Ceci est un simple fichier texte" > fichier.txt
De lancer la commande "dir" pour afficher le contenu du dossier et la taille du fichier et l'espace disque disponible :
dir
Nous pouvons maintenant créer un ADS :
echo "Ceci un 2e fichier cache dans un flux de donnees" > fichier.txt:ads1.txt
Ensuite effectuer la commande dir pour constater que la taille du fichier, le contenu du dossier et l'espace disponible sont identiques :
dir
Pour ouvrir le fichier texte classique, utilisez :
start fichier.txt
ou bien
notepad fichier.txt
Pour ouvrir l'ADS, utilisez :
notepad fichier.txt:ads1.txt
Vous pouvez créer un deuxième ADS et constater que le résultat de la commande "dir" est toujours le même et l'ouvrir lui aussi :

echo "Ceci un 2e fichier cache dans un flux de donnees" > fichier.txt:ads2.txt
dir
notepad fichier.txt:ads2.txt

Il est possible de faire la même chose avec d'autres fichiers même des exécutables, par exemple en utilisant notepad.exe qui correspond au bloc note et calc.exe qui correspond à la calculatrice (%windir% correspond au dossier contenant les fichiers windows par défaut c:\windows) :
type %windir%\system32\calc.exe > %windir%\system32\notepad.exe:calc_ads.exe
start %windir%\system32\notepad.exe:calc_ads.exe
La calculatrice s'ouvre.
Ces manipulations nécessitent qu'à un moment donné le fichier que l'on souhaite insérer dans un flux soit existant comme un "simple" fichier (par exemple calc.exe). Une fois placé dans le flux, le fichier "simple" d'origine peut alors être supprimé.

Prochain épisode "Détecter et supprimer les Alternate Data Streams"

Aucun commentaire:

Enregistrer un commentaire