Les ADS de Windows pour camoufler vos fichiers dans des fichiers

21
Sep
2012
  • Google Plus
  • LinkedIn
  • Viadeo
Posted by: Yann C.  /   Category: Network and system administration / Invisibility & camouflage / OS / Windows   /   1 Comment

Les ADS, pour “Alternate Data Stream”, ou flux alternatifs de données, sont des mécanismes intégrés à Windows et plus particulièrement au format NTFS afin de rendre compatible le format de fichier HFS de Mac. En d’autres termes, les ADS sont des emplacements alternatifs où des données peuvent être stockées et qui sont propres à chaque fichier d’un système Windows NTFS.

Peu connu, ce principe est très employé par des personnes malintentionnés afin de placer dans des fichiers anodins des malwares dans leur ADS.

C’est au travers des ADS que le résumé ou les informations complémentaires sur un fichier sont stockées.

Le fonctionnement des ADS est très simple. Il y a le flux principal, qui est le contenu du fichier en lui même, puis divers flux alternatifs identifiés par le biais d’une clé. Par exemple, l’ADS du résumé d’un fichier texte a pour clé “DocumentSummaryInformation”.

Pour illustrer la gestion des ADS, voyons sur un simple fichier texte :

[bash]echo Je suis le contenu du fichier !  > test.txt[/bash]

Création d'un simple fichier texte

Création d’un simple fichier texte

Pour ajouter à ce même fichier des données cachées et identifiées par la clé “hidden.txt”, procéder comme suit :

[bash]echo Contenu invisible !  > test.txt:hidden.txt[/bash]

Ajout de données cachées via ADS

Ajout de données cachées via ADS

Bien que des données soient ajoutées dans un ADS identifié par une clé précise, le contenu principal du fichier ne s’avère pas modifié. Seuls ceux en connaissances de la clé peuvent accéder au contenu de l’ADS.

La dangerosité des ADS sur un fichier s’illustre par le fait que :

  • La taille du fichier demeure inchangée même après l’ajout d’un certains nombres d’ADS
  • La somme de contrôle (checksum, md5, sha1…) du fichier ne change pas malgré l’ajout d’ADS
  • Toutes sortes de données (des exécutables par exemple) peuvent être stockés dans les ADS d’un fichier.
  • Seul la date de dernière modification du fichier s’avère altérée, bien que ceci soit modifiable.

L’ajout de données annexes en ADS est fonctionnel sur tous les Windows (XP, 7, 8…). Il est donc possible d’y cacher ce que bon semble à l’utilisateur. Pour récupérer ces données, la commande “more” peut être utile au sein d’un terminal :

[bash]more < test.txt:hidden.txt[/bash]

Toutefois, une différence notable entre Windows XP/Server 2003 et les successeurs 2008, Vista, 7 et 8 est que l’exécution d’application .exe stockées dans les ADS d’un fichier n’est plus possible directement. En effet, les versions plus récentes de Windows ont intégré un mécanisme vérifiant le type du fichier et le lieu de son stockage avant exécution. Ainsi, l’exécution directe au sein des ADS d’une application n’est plus fonctionnelle.

Exemple sous Windows XP de l’exécution d’une application (netcat) au travers de l’ADS d’un fichier texte (via la commande “start” ou “wmic process call create”) :

Exécution de netcat via les ADS d'un fichier texte sous Windows XP

Exécution de netcat via les ADS d’un fichier texte sous Windows XP

Il est donc possible de stocker tous types de données de manière inerte dans les ADS quelque soit la version de l’OS, mais pour l’exécution de celle-ci leur extraction sera nécessaire au préalable pour les version récentes de Windows.

Visibilité du processus nc.exe lancé au travers de l’ADS de calc.exe :

Gestionnaire de tâches et processus ADS

Gestionnaire de tâches et processus ADS

Pour contrer cette protection d’exécution sous les Windows récents, l’utilitaire “mklink” qui permet la création de lien s’avère utile. Toutefois celui-ci n’est pas disponible sous toutes les versions.

[bash]mklink shortcut test.txt:nc.exe[/bash]

Il est aussi possible d’ajouter des données dans l’ADS d’une partition en elle même comme le montre l’exemple suivant (nécessite des privilèges) :

[bash]type nc.exe > :nc.exe[/bash]

Dans le cas précédent, l’ADS ne sera supprimé qu’avec le formatage de la partition.

Pour supprimer les ADS d’un fichier, une méthode radicale consiste à transférer ce fichier sur une partition non-NTFS (FAT32 par exemple), ce qui aura pour action de nettoyer les méta-data. Sinon, il est possible d’effectuer les opérations simple suivantes qui recréeront le fichier d’origine qu’avec son contenu légitime :

[bash]C:\>ren test.txt test2.txt</p>
<p>C:\>type test2.txt > test.txt</p>
<p>C:\>del test2.txt[/bash]

Il existe divers logiciels et utilitaires spécialisés permettant de contrôler les ADS des fichiers. C’est le cas de “ADS Locator” (GUI), “LADS” (console) ou encore “Streams” de Sysinternals.

Les ADS sont encore une méthode exploitée des utilisateurs malintentionnés pour stockées de manière invisible des malwares et autres logiciels illicites. A garder en mémoire lors d’audit de sécurité.

Références :

  • Google Plus
  • LinkedIn
  • Viadeo
Author Avatar

About the Author : Yann C.

Consultant en sécurité informatique et s’exerçant dans ce domaine depuis le début des années 2000 en autodidacte par passion, plaisir et perspectives, il maintient le portail ASafety pour présenter des articles, des projets personnels, des recherches et développements, ainsi que des « advisory » de vulnérabilités décelées notamment au cours de pentest.