ADS: Alternate Data Streams

Gli Alternate Data Streams (o ADS) sono una categoria di oggetti disponibili esclusivamente su file system NTFS, ben noti agli addetti ai lavori ma molto meno in vista all’utente finale, data la totale mancanza di un tool nativo interno a Windows utile per manipolarli.
Per spiegare di che categoria di oggetti si tratta partiamo da NTFS: in questo tipo di file system le informazioni riguardanti file e cartelle sono memorizzati in una speciale tabella presente sul disco detta Master File Table (MFT).
In questa tabella le informazioni sono archiviate in una serie di oggetti chiamati attributi, assegnati in numero variabile al file o alla cartella. Tra questi possiamo trovare ad esempio il nome assegnato al file, la sua data di creazione, la data dell’ultima modifica, i descrittori di protezione e naturalmente i dati contenuti.

Ora, in NTFS é possibile associare a ogni singolo file più attributi, contenenti le informazioni più disparate: al cosidetto ‘flusso dati principale’ (il contenuto del file) é possibile associare n ‘flussi dati alternativi’ (da qui il nome) contenenti ulteriori informazioni, e soprattutto totalmente invisibili all’utente.

La Microsoft ne parla qui.

Nati per far mantenere a Windows compatibilità con i sistemi Macintosh basati su HFS (che include nativamente un sistema simile) e permettergli quindi di operare come file server per essi, con l’avvento di Window 2000 sono stati utilizzati in maniera più ampia, dando la possibilità all’utente di memorizzare una serie di informazioni relative ai files (autore, oggetto, date di modifica, ecc…) normalmente accessibili dalla scheda Riepilogo delle proprietà del file.

E qui viene il bello: non ci sono limitazioni di dimensioni dell’ADS associato al file, né di tipologia di allegato (nessuno vieta di inserire un file eseguibile!); le dimensioni del file visualizzate dal sistema saranno sempre quelle relative al flusso principale, a prescindere dalle dimensioni degli ADS associati (sarebbe teoricamente possibile saturare un disco con un file da 2Kb, ma con 4 Gb di ADS!).

Come detto, Windows non ha nativamente strumenti per la manipolazione dei flussi dati alternativi, tuttavia é possibile effettuare un minimo di operazioni utilizzando il prompt dei comandi e il notepad.

Ogni ADS viene identificato tramite un nome a seguire il nome del file che lo contiene, ad esempio:

fileditesto.txt:filenascosto.txt

identifica il flusso dati alternativo filenascosto.txt presente all’interno del file fileditesto.txt.

Possiamo creare un ADS digitando dal prompt dei comandi

echo Testo di prova > fileditesto.txt:filenascosto.txt

in questo modo inseriamo nel file fileditesto.txt (precedentemente creato con il notepad) il flusso alternativo filenascosto.txt, contenente la frase ‘Testo di prova’.

Possiamo poi visualizzare l’ADS appena creato digitando:

notepad fileditesto.txt:filenascosto.txt

magicamente, invece di visualizzare il contenuto di fileditesto.txt, il notepad ci presenterà il contenuto del flusso alternativo filenascosto.txt.

Se volessimo copiare un file all’interno di un ADS lo potremmo fare con

type fileditesto.txt > fileditesto.txt:altrofile.txt

e nessuno vieta nemmeno di effettuare la stessa operazione con un file eseguibile:

type notepad.exe > fileditesto.txt:blocconote.exe

che una volta inserito potrà essere lanciato con

start .\fileditesto.txt:blocconote.exe

E’ interessante notare che solo il Task Manager di Windows XP informa che il file in esecuzione é un flusso alternativo: Windows 2000 visualizza esclusivamente il nome del file che lo contiene!

Si noti che i file contenenti ADS sopravvivono anche alla copia da disco a disco, anche su dischi di rete, fintantochè entrambi i dischi sono NTFS. Se la destinazione è un disco FAT32 gli ADS sono perduti (previo messaggio di conferma in tal senso da parte del S.O.).

E’ possibile “nascondere” anche un filmato in un ADS: ad es. con

C:\>type “Cattive ragazze.avi” >”esempio.txt:Cattive ragazze.avi”

e quindi eseguirlo con:

C:\>”C:\Programmi\Windows Media Player\wmplayer.exe” “c:\esempio.txt:Cattive ragazze.avi”

Altro particolare inquietante é che non é possibile (sempre tramite i tools forniti con Windows) rimuovere un ADS da un file se non cancellandolo (magari salvando prima il flusso dati principale del file stesso).

Considerando che é possibile aggiungere un ADS anche alla cartella in cui ci si trova con il comando

echo Testo di prova > :filenascosto.txt

verrebbe da pensare che eseguendo un comando del genere in C: non ci sia altro modo di rimuovere quanto inserito se non formattando il disco!

Fortunatamente esistono software di terze parti adatti a manipolare gli ADS, uno dei quali distribuito dalla stessa Microsoft (NTFS ext):

LADS – elenca tutti gli alternate data streams di una partizione NTFS
ADSSpy di Merijn software, strumento per elencare, visualizzare o cancellare ADS; funziona tramite una comoda interfaccia grafica.
LNS – strumento per cercare streams NTFS
CrucialADS – strumento per cercare ADS
Streams di Sysinternals, simile ad ADSSpy. Offre la possibilità di ripulire i file dagli ADS tramite l’opzione -d. Si ottiene l’help digitando streams /?
Visual ADS Detector si integra in Windows Explorer consentendo di vedere in tempo reale gli Alternative Data Streams non crittati.
X-Ways Forensics – programma avanzato con funzionalità di analisi forense
NTFS ext – creato da Microsoft, permette di aggiungere nelle proprietà del file o cartella una scheda per visualizzare eventuali ADS.

Una volta installato, aggiunge alla finestra delle proprietà del file una nuova scheda chiamata Streams, dalla quale possiamo vedere e cancellare gli ADS legati ad un file.

Per installare l’estensione dovrete seguire i seguenti passi:

  • fate doppio click sul file scaricato e scompattate l’archivio autoestraente in una cartella del desktop
  • nella cartella estratta troverete un altro archivio di nome StrmExt.zip. Da questo file, nella sottocartella ReleaseMinDependency, dovrete estrarre i file StrmExt.dll, RWStream.vbs, HardLinks.vbs e salvarli nella cartella c:\windows\system32
  • premete Start->Esegui… e digitate regsvr32 StrmExt.dll
  • se volete rendere visibile la nuova scheda anche per le cartelle, dovrete aggiungere la seguente chiave di registro:
    HKEY_CLASSES_ROOT\Directory\shellex\PropertySheetHandlers\{C3ED1679-814B-4DA9-AB00-1CAC71F5E337}
  • se volete rendere visibile la scheda streams anche per le partizioni, aggiungete inoltre:
    HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers\{C3ED1679-814B-4DA9-AB00-1CAC71F5E337}
  • a questo punto potete sperimentare la nuova funzione.

NTFSext permette di visualizzare e modificare il contenuto degli stream e di cancellarli. È da notare comunque che l’estensione sembra avere dei problemi con i percorsi dei file che contengono degli spazi. Tra questi troviamo quelli che contengono Documents and settings.

Considerazioni e conclusioni

Gli Alternate Data Streams non sono in sé pericolosi, purtroppo è la loro implementazione che li rende un potenziale rischio. La loro virtuale invisibilità viene già usata da trojan e adware quali Download.Fugif, Trojan.Comxt e  Adware.Iefeats.

L’antispyware AdAware dichiara esplicitamente di scansionare il contenuto degli ADS ma questo aspetto è in generale forse un po’ trascurato. I produttori di antivirus sostengono che uno stream alternativo di tipo eseguibile deve essere caricato in memoria prima di essere lanciato. Questo consente al motore di scansione in tempo reale di intervenire e bloccare l’infezione. Il problema in ogni caso rimane, un antivirus che non analizza gli ADS non sarà mai in grado di eliminare il codice dannoso dal computer.

Per quanto riguarda l’uso legittimo di tali oggetti, infine, si elencano alcuni ADS di sistema in cui probabilmente vi imbatterete:

  • Zone.Identifier [PDF]: se usate Windows XP sp2 contraddistingue tutti i file scaricati da internet.
  • Systeminformation: contraddistingue l’aggiunta di metainformazioni tramite la scheda Proprietà->Riepilogo.
  • Encriptable: sempre presente nei file nascosti thumbs.db contenenti la cache delle anteprime delle immagini.

Riassumendo, gli ADS sono indubbiamente utili, permettendo una migliore organizzazione dei file e delle cartelle; tuttavia possono essere utilizzati per scopi meno leciti, come ad esempio:

  • da virus e trojan per nascondersi a gli occhi dell’utente (per fortuna i principali antivirus/antispyware supportano lo scanning degli ads)
  • per attacchi tipo DenialOfService ad un dispositivo di memoria di massa, saturando un file system apparentemente vuoto
  • per materiale illecito che deve essere nascosto da occhi indiscreti
  • per archiviare programmi poi eseguiti sotto ‘falso nome’ (solo su sistemi precedenti a WindowsXP).