Alternate Data Streams: ultimamente se ne sente parlare un po' piu' spesso per via di alcuni virus/trojan che li utilizzando per 'nascondersi', ma cosa sono?

Gli Alternate Data Streams (da ora ADS) sono una categoria di oggetti disponibili esclusivamente su filesystem 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 filesystem le informazioni riguardanti file e cartelle sono memorizzati in una speciale tabella presente sul disco chiamata 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 e' possibile associare a ogni singolo file piu' attributi, contenenti le informazioni piu' disparate: al cosidetto 'flusso dati principale' (il contenuto del file) e' possibile associare n 'flussi dati alternativi' (da qui il nome) contenenti ulteriori informazioni, e soprattutto totalmente invisibili all'utente.

Nati per far mantenere a windows compatibilita' con i sistemi macintosh basati su HFS (che include nativamente un sistema simile) e permettergli quindi di operare come fileserver per essi, con l'avvento di Window 2000 sono stati utilizzati in maniera piu' ampia, dando la possibilita' all'utente di memorizzare una serie di informazioni relative ai files (autore, oggetto, date di modifica ecc...) normalmente accessibili dalla scheda Riepilogo delle proprieta' del file.

E qui' viene il bello: non ci sono limitazioni di dimensioni dell'ADS associato al file, ne 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 ho gia' detto, windows non ha nativamente tools per la manipolazione dei flussi dati alternativi, tuttavia e' 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
pippopaperino.txt:pluto.txt

identifica il flusso dati alternativo pluto.txt presente all'interno del file pippopaperino.txt.

Possiamo creare un ADS digitando dal prompt dei comandi
echo Testo di prova > pippopaperino.txt:pluto.txt

in questo modo inseriamo nel file pippopaperino.txt (precedentemente creato con il notepad) il flusso alternativo pluto.txt, contenente la frase 'Testo di prova'.

Possiamo poi visualizzare l'ADS appena creato digitando
notepad pippopaperino.txt:pluto.txt

magicamente, invece di visualizzare il contenuto di pippopaperino.txt, il notepad ci presentera' il contenuto del flusso alternativo pluto.txt.

Se volessimo copiare un file all'interno di un ADS lo potremmo fare con
type fileditesto.txt > pippopaperino.txt:altrofile.txt

e nessun ci vieta nemmeno di effettuare la stessa operazione con un file eseguibile:
type notepad.exe > pippopaperino.txt:blocconote.exe

che una volta inserito potra' essere lanciato con
start .\pippopaperino.txt:blocconote.exe

E' interessante notare che solo il TaskManager di windowsXp informa che il file in esecuzione e' un flusso alternativo: windows 2000 visualizza esclusivamente il nome del file che lo contiene! :-)

Altro particolare inquietante e' che non e' 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 e' possibile aggiungere un ADS anche alla cartella in cui ci si trova con il comando
echo Testo di prova > :pluto.txt

mi vien da pensare che se si esegue un comando del genere nella root di C: non ci sarebbe altro modo di rimuovere quanto inserito se non formattando il disco!

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

Una volta installato, aggiunge alla finestra delle proprieta' del file una nuova scheda chiamata Streams dalla quale possiamo visionare e cancellare gli alternate data streams legati al file.

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

  • utilizzati da virus e trojan per nascondersi a gli occhi dell'utente (per fortuna i principali antivirus/antispyware supportano lo scanning degli ads)

  • usati per attacchi DenialOfService, saturando un filesystem apparentemente vuoto.

  • riempiti con materiale illecito che deve essere nascosto da occhi indiscreti

  • utilizzati per archiviare programmi poi eseguiti sotto 'falso nome' (solo su sistemi precedenti a WindowsXP).