datastream
adv

Come gli iceberg mostrano solo la punta in superficie, anche i file possono essere molto più di ciò che appaiono. È il caso degli ADS (Alternate Data Stream) e delle false icone

In ambito informatico la simbologia è di fondamentale importanza per l’utilizzo intuitivo delle interfacce grafiche. Le icone che troviamo nelle cartelle e sul desktop rappresentano un concetto in modo largamente condiviso, sia esso un programma, un tipo di file, etc.

Cosa succede, però, se il simbolo che tanto bene conosciamo viene associato a qualcosa di totalmente diverso? E cosa accade invece se, oltre al file che vogliamo, c’è anche qualcos’altro che si cela tra i bit?

False Icone

Tutti associamo l’immagine della pagina blu con le righe ad un documento di testo, il foglio verde con la griglia ad un foglio di calcolo, l’immagine della volpe che avvolge il globo blu ad un browser di navigazione web. Le icone hanno questo scopo, evocare. I sistemi operativi offrono la possibilità di cambiare alcune icone, questa modifica, tuttavia, resterà confinata sul computer dove è stata operata.

Sistemi operativi come Windows, associano le icone all’estensione del file. Indipendentemente dal tipo di file, se l’estensione è .docx il file avrà l’immagine della pagina di Word.

Detto ciò, è facile intuire come un file qualunque, ad esempio un’immagine, possa essere visto come un file di testo semplicemente rinominandone l’estensione. Chiaramente l’esecuzione, da editor di testo, non darà un esito favorevole.

Se, tuttavia, il programma ha un eseguibile opportunamente costruito, questo potrà essere lanciato con relative conseguenze, eventualmente nocive.

Sistemi di tipo Unix, invece, per identificare il tipo di file, utilizzano i magic number, sequenze di caratteri dichiarate all’interno del file, prima della sequenza dati.

Essi possono essere sfruttati per capire la vera natura di un file, ad esempio, se si apre un file zip con un editor di testo, prima di un’incomprensibile sequenza di simboli e lettere, si potranno leggere in chiaro le lettere PK.

Esse sono le iniziali di Phil Katz, l’informatico che ha sviluppato la prima implementazione del famoso algoritmo di compressione, e costituiscono, ad oggi, l’identificativo di questo tipo di file. I file possono essere aperti anche con editor esadecimali, quindi un file zip presenterà i corrispondenti caratteri in esadecimale: 50 4B.

Esistono, facilmente reperibili su Internet, delle tabelle dedicate con le corrispondenze tra il magic number ed il tipo di file con relativa estensione. Questo potrebbe aiutarci a capire realmente con cosa abbiamo a che fare.

Alternate Data Stream

Alternate Data Stream

Gli Alternate Data Stream (ADS) sono flussi dati alternativi, cioè dati che si inseriscono nel dato originale senza alterarlo. Essi sono caratteristici delle partizioni disco NTFS, tipo di file system (meccanismo di organizzazione dei file su disco) usato di default da Windows. Furono creati all’epoca di Windows NT per garantire la compatibilità con i file prodotti dai sistemi Apple e sono, poi, stati mantenuti.

In pratica, in un singolo file o cartella potrebbero nascondersi, in qualità di attributi del primo, altri file, documenti segreti, programmi o script. Questi saranno virtualmente invisibili per l’utente, infatti il sistema operativo mostra solo la dimensione del flusso dati principale.

ADS come possibile minaccia

Gli ADS sono stati, sin dall’inizio, ben documentati da Microsoft ma, per quanto noti, restano comunque sconosciuti ai non addetti ai lavori e la possibilità di utilizzo per scopi malevoli è concreta.

Basti immaginare di allegare al flusso principale un file molto grande, l’utente che lo scarica pensa di memorizzare un file di pochi MB ed invece si ritrova con il disco pieno senza capirne il motivo, con conseguente rallentamento o blocco del sistema operativo. Questo tipo di attacco è chiamato DoS (Denial of Service).

Altra opzione d’uso è quella di nascondiglio per malware o tool che qualche utente non vuol far rilevare. Va anche detto che i sistemi Microsoft, da Vista in poi, bloccano l’esecuzione automatica da ADS, tuttavia, per un sistema già compromesso in altro modo, si prestano come tana dove le applicazioni nocive resteranno in agguato; shell di comando o script vari possono, infatti, attivarle.

Un tool di recupero/crack delle password, ad esempio, potrebbe essere nascosto in un file, essere eseguito (perché il sistema è già compromesso) e nascondere i risultati in un altro file. L’utente, così, normalmente non si accorgerebbe di nulla.

Come funzionano gli ADS?

Un flusso dati si può definire con la sintassi nome_file:nome_flusso. Se il nome_flusso non è dichiarato, di default viene considerato il flusso principale: il programma o file con cui interagiamo abitualmente. Nel momento in cui il nome_flusso sarà valorizzato verrà creato un ADS per il file definito da nome_file.

Come si popolano però questi flussi con le informazioni? Uno dei metodi è veicolare l’output di un’operazione verso il flusso dati, ad esempio da shell di comando (l’interfaccia testuale “DOS”)

e.g.: echo testo nascosto > filetesto.txt:flusso_alternativo.txt

il comando precedentemente riportato crea nel filetesto.txt un flusso alternativo che, opportunamente aperto, visualizzerà il testo “testo nascosto” mentre il file originale potrebbe anche essere vuoto.

Per vedere il contenuto del flusso alternativo si dovrà conoscere il suo nome, ad esempio, sempre da shell di comando, si potrà veicolare il contenuto in un comando di visualizzazione

e.g.: more < filetesto.txt:flusso_alternativo.txt

A display si vedrà la scritta testo nascosto.

 Alternate Data Stream

Analogamente il discorso sarà valido per i programmi

Come si identificano gli ADS

A meno di controllare per prassi ogni file, per identificare un ADS ne si dovrebbe sospettare la presenza innanzitutto.

Task Manager (Gestione Attività di Windows) talvolta aiuta, evidenziando il flusso in esecuzione. L’esempio seguente mostra come:

Supponiamo di utilizzare Notepad per aprire un flusso alternativo (invece di utilizzare il comando more da testo), l’editor di testo di Windows è, infatti, in grado di leggere gli ADS. In tal modo vediamo che il programma Notepad esegue l’ADS nominato flusso_alternativo.txt

Alternate Data Stream

Allo stesso modo si potrà vedere se un processo qualunque ne sta eseguendo un secondo sconosciuto, anche un’applicazione. Task Manager non è sempre attendibile in quanto non mostra proprio tutti i processi in esecuzione, i driver, ad esempio, non vengono visualizzati. I driver sono, tuttavia, soggetti a controllo con richiesta di certificato da parte del sistema operativo. L’utente, quindi, dovrebbe stare attento a non concedere permessi eccessivi a driver scaricati da fonti non ufficiali.

Gli ADS, in generale, non si possono rintracciare navigando tra le cartelle come si fa abitualmente, occorrono dei programmi dedicati. Windows mette a disposizione, da shell di comando, streams.exe o, con powershell da Windows 8 in poi, le funzioni get-item, set-item e remove-item per gestirli.

Esistono altri programmi, anche con interfaccia grafica, come LADS, che consentono una visualizzazione dei contenuti alternativi ma la scansione va fatta su file appositi, a meno di voler controllare ogni file che arriva.

Conclusioni

Abbiamo visto come identificare la vera natura dei file e come funzionano gli ADS e posto l’attenzione su come questi ultimi possano essere utilizzati per occultare alcune operazioni, magari illecite. Va precisato, tuttavia, che la presenza di ADS non è necessariamente indice che qualcosa di losco sia in atto.

Alcuni applicativi li utilizzano per funzionalità proprie, ad esempio vecchie versioni dell’antivirus Kaspersky ne facevano uso; ancora attualmente alcuni browser di navigazione aggiungono lo Zone.Identifier come ADS per indicare se il file è stato scaricato da siti esterni, da cui il warning di Windows quando cerchiamo di aprire programmi potenzialmente nocivi.

Qualunque sia il loro utilizzo, gli ADS sono una risorsa utile da conoscere per i sistemi con partizione NTFS.