MegaLab.it
Stampa Articolo
Aperiodico gratuito di informatica
 
20090422154020_137263391_20090422153958_252892913_Untitled.png

Alla scoperta di "Alternate Data Streams"

21/05/2009 - articolo
Sicurezza - In questo articolo ci avventuriamo alla scoperta degli Alternate Data Streams (ADS), flussi alternativi che possono essere associati ad un file e che non vengono visualizzati dall'Esplora Risorse di Windows. Nascondere informazioni a occhi indiscreti non sarà più un problema; ma l'altra faccia della medaglia? Possono essere sfruttati per veicolare malware di ogni tipo.

Alternate Data Streams (ADS) è una funzione implementata dal file system NTFS probabilmente sconosciuta ai più.

In questo articolo vado a proporre una presentazione di tale tecnologia, con qualche riflessione circa gli aspetti relativi alla sicurezza e numerosi esempi pratici.

In cosa consiste

Quando viene creato un file, il sistema operativo provvede ad associargli un flusso di dati principale, che risulta di fatto il suo contenuto. Si tratta, per intenderci, dei dati che possiamo visualizzare aprendo il documento con la opportuna applicazione.

Molti non sanno però che oltre ai flussi principali, vi sono anche quelli alternativi. I primi risultano ovviamente visibili e liberamente accessibili, mentre i secondi sono nascosti e inaccessibili dall'Esplora Risorse di Windows.

Gli Alternate Data Streams (ADS) sono letteralmente i "Flussi di dati alternativi" e offrono la possibilità all'utente (e non solo) di nascondere all'interno di un file delle informazioni, o addirittura un altro file.

Il file a cui verranno associati dei flussi alternativi, come vedremo nel corso dell'articolo, non subisce modifiche di nessun genere. Al contrario di quanto si potrebbe pensare, la dimensione del file, così come visualizzata dal sistema operativo, rimane la medesima anche dopo l'aggiunta di un flusso di grandezza pari a vari GB, l'unica caratteristica che viene modificata è la data del file.

Cenni storici

Ma coma mai sono nati gli ADS? L'intento di Microsoft, almeno in origine, era quello di dare la possibilità a Windows di poter svolgere la funzione di file-server per sistemi Macintosh basati su filesystem HFS. Quest'ultimo memorizza infatti i dati aggiuntivi relativi ai file utilizzando delle strutture simili agli ADS di Windows.

Con i sistemi successivi, a partire da Windows 2000, gli impieghi degli ADS si ampliarono fino a diventare quelli che sono oggi, a cui abbiamo già accennato in parte e che approfondiremo nel corso dell'articolo.

Seppur in maniera limitata, Windows offre oggi la possibilità di associare un flusso alternativo a un file con la scheda Riepilogo presente nelle proprietà di un file. I dati come il Titolo, l'Autore, e tutte le altre informazioni contenute in quella scheda, vengono memorizzate in un flusso alternativo associato al file.

Gli ADS sono anche tutt'oggi usati da applicazioni di terze parti per gestire meglio i dati. Un esempio lampante è Kaspersky Antivirus, che sfrutta questa funzionalità per contrassegnare i file scansionati in modo da non controllarli una seconda volta se non hanno subito cambiamenti.

Importante però il fatto che siano disponibili solo su sistemi con filesystem NTFS. Cercando di copiare un file a cui sono stati associati dei flussi alternativi in una partizione FAT32, ricevo un avviso che mi informa che tutti gli strem alternativi andranno persi.

ADS 1.PNG

Un pericolo per la sicurezza

Se è vero che anche Kaspersky - e altri software sicuri - sfruttano gli ADS per facilitarsi il lavoro, nulla impedisce ai virus-writer di sfruttare questa funzionalità per i loro scopi. Oltre a informazioni testuali, a un file può anche esserne correlato un altro, con la sola caratteristica che questo sarà praticamente invisibile e inaccessibile e potrà comunque essere avviato senza procedura di decrittazione o decompressione.

In più, poiché non viene alterata nessuna caratteristica del file e, a meno di utilizzare tecniche non immediate, che il sistema non notifica la presenza di flussi alternativi, rende quasi impossibile a un utente (comune o esperto che sia) determinare se il file scaricato contiene o meno degli ADS.

Bisognerebbe controllare ogni file da riga di comando, ma sarebbe davvero poco pratico. La soluzione migliore è sicuramente avere un valido sistema di sicurezza installato e diffidare sempre da quanto scaricato.

Provando ad aggiungere come flusso alternativo di un file di testo la dll di Conficker, la versione da riga di comando di Avira AntiVir rileva la minaccia, e mi dice anche che risiede in un ADS.

ADS 3.PNG

Oltre a comuni malware, prendiamo in esame un altro esempio. Immaginiamo che venga creato un flusso alternativo grande tanto quanto è lo spazio libero sul disco fisso, e che venga associato a un file vuoto. Cosa succederebbe? Sarebbe praticamente impossibile venire a capo della situazione.

La riga di comando e gli ADS

Dalla riga di comando di Windows è possibile manipolare i flussi dati alternativi. Possiamo quindi correlarne ad un file, rimuoverne, lanciarne ed eseguire praticamente qualunque operazione con essi.

È importante precisare che ogni flusso alternativo è identificato da un nome. Quindi, file_legittimo.txt:trojan.exe identificherà il flusso di nome trojan.exe nel file file_legittimo.txt.

Creare un ADS

Apriamo quindi il menu Start, clicchiamo su Esegui e digitiamo cmd. Per creare un ADS e correlarlo a un file, usiamo la seguente sintassi:

echo %TestoDaNascondere% > %FileCavia%:%NomeADS%

Esempio pratico:

echo Questo è un flusso alternativo nascosto > ads.txt:hidden.txt

Leggere un ADS

Per leggere un flusso alternativo associato a un file, sapendone l'identificativo, basta usare una sintassi del genere:

notepad %FileCavia%:%NomeADS%

E quindi, digitando:

notepad ads.txt:hidden.txt

Si aprirà il Blocco Note mostrandoci il contenuto del flusso nascosto.

Correlare un file a un altro file

Come avevo anticipato, oltre a testo, informazioni e immagini - cose del tutto innocue - un ADS può anche essere fornito ad un file eseguibile, o da uno script VB, PERL o PHP. Per farlo, sfrutteremo un comando simile al seguente:

type %File% > %FileCavia%:%NomeADS%

E quindi, nella pratica, diventa:

type trojan.exe > innocuo.bmp:trojan.exe

Lanciare un ADS

Per lanciare un eseguibile nascosto in un flusso alternativo, possiamo sfruttare il comando start.

start %PercorsoFileCavia%:%NomeADS%

Che nella pratica, potrebbe diventare:

start C:\innocuo.doc:trojanformattatutto.exe

Rimuovere un ADS

Non esiste di fatto un comando per rimuovere un flusso alternativo. L'unico modo è copiare il file incriminato su una penna USB, e più precisamente su una partizione non-NTFS, e ricopiarlo poi sulla partizione di origine. L'alternativa, è rimuovere completamente il file.

Considerazioni e Conclusioni

Gli ADS non solo malevoli di loro, ma sono le loro caratteristiche che li rendono una potenziale minaccia per la sicurezza. Esistono alcuni virus che li sfruttano per veicolare il proprio codice malevolo.

Inoltre, non si tratta neanche di attacchi la cui implementazione è assurdamente complicata, come potrebbe essere l'infezione del Master Boot Record, del BIOS e di qualunque altra parte non sia il sistema operativo.

Sebbene molti software anti-malware dichiarino di scansionare i flussi alternativi, questo non corrisponde sempre a verità. Molte case si difendono affermando che per essere lanciato un eseguibile malevolo nascosto in un altro file, deve prima essere caricato in memoria, e il software antivirus sarebbe in grado di rilevarlo.

Il problema di fondo rimane però che un antivirus che è in grado di intercettare un flusso alternativo malevolo solo quando viene mandato in esecuzione, non sarà mai in grado di ripulire il computer completamente.

È doveroso precisare comunque che tutti i protocolli usati per la trasmissione di dati in rete non supportano gli ADS, e quindi, trasmettendo un file a cui sono associati dei flussi alternativi via e-mail, FTP o HTTP, i flussi nascosti andranno persi. Possono invece viaggiare tramite reti locali LAN.

Windows stesso sfrutta gli ADS per memorizzare informazioni aggiuntive riguardo ai file. Il flusso Systeminformation è usato per salvare le informazioni relative alla scheda Riepilogo delle proprietà di un file, Zone.Identifier [PDF] identifica invece tutti i file scaricati dalla rete, e Encriptable è sempre presente nei file thumbs.db per la cache delle anteprime delle immagini.

Riferimenti

MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .

Copyright 2008 MegaLab.it - Tutti i diritti sono riservati