Windows può nascondere dati in qualunque file con gli ADS

Alternate Data Stream: lo strumento utilizzato da Windows per nascondere dati all'interno di qualunque file memorizzato su hard disk e SSD.

Ai tempi di Windows 2000 il file system NTFS, ideato e utilizzato da Microsoft addirittura fin dal 1993, ha introdotto il supporto per gli Alternate Data Streams (ADS).

Gli ADS vengono utilizzati per memorizzare insiemi di informazioni aggiuntive rispetto a quelle che normalmente vengono conservate in qualunque tipo di file (TXT, DOCX, XLSX, ODT, JPG, PNG e così via).
L’attributo $DATA eventualmente aggiunto a qualunque elemento memorizzato a livello di file consente proprio di gestire gli ADS.

Nell’articolo sui trucchi e segreti del file system NTFS abbiamo parlato degli ADS ricordando come molti malware utilizzassero in passato e sfruttano ancora oggi questa tecnica per celare informazioni necessarie per il loro funzionamento.
La maggior parte delle soluzioni antimalware sono oggi in grado di rilevare la presenza di eventuali ADS e segnalare dati malevoli in essi conservati.

Ma a cosa servono gli ADS in Windows? Che senso ha memorizzare dei dati aggiuntivi a livello di file system che non sono direttamente visibili all’utente e alle applicazioni installate?

Il motivo principale consiste nell’annotare la provenienza di un file: quando un oggetto viene prelevato da Internet, ad esempio, Windows mostra un messaggio d’avviso (PC protetto da Windows) e richiama l’attenzione dell’utente.
In ogni caso, quando il file proviene da un altro computer (quindi non è stato prodotto o modificato in precedenza sul dispositivo in uso) Windows mostra un’allerta. Cliccando con il tasto destro del mouse quindi selezionando Proprietà si potrà notare la presenza dell’indicazione Il file proviene da un altro account e la casella Annulla blocco in basso.

Questo comportamento è proprio dovuto alla presenza di un ADS per il file indicato.
Provate a scaricare un file dal web, salvare un allegato a un messaggio di posta o a prelevare un file accessibile da browser attraverso la intranet: aprendo il prompt dei comandi, portandosi nella cartella contenente il file e digitando quanto segue si leggerà il contenuto dell’ADS.

more < "nome_file.ext:Zone.Identifier"

Nel caso dei file scaricati l’ADS ZoneIdentifier sarà impostato a 3 (ZoneID) e conterrà i riferimenti dell’host dal quale si è effettuato il download.

Nascondere dati con Windows e gli ADS

Si tratta più di una curiosità che altro ma gli ADS consentono comunque di nascondere dati sul sistema locale.
Per proteggere i dati e sottrarli alla vista e al raggio d’azione di utenti non autorizzati è fondamentale ricorrere alla crittografia usando ad esempio BitLocker o VeraCrypt oppure creando volumi cifrati con questo secondo software.

Provate a creare ad esempio un nuovo file di testo e a salvarlo sul Desktop di Windows. Il file potrebbe essere in qualunque formato e salvato all’interno di qualsiasi cartella.

Supponiamo comunque di chiamare tale file test.txt salvandovi le informazioni che devono risultare leggibili quindi di aprirlo con il Blocco Note di Windows premendo Windows+R quindi digitando quanto segue:

notepad %userprofile%\Desktop\test.txt:Segreto.txt

Non appena avviato, il Blocco Note non aprirà il contenuto del file test.txt ma indicherà che il file test.txt:Segreto.txt non esiste.
Rispondendo alla richiesta di creare il nuovo file, si creerà il nuovo ADS chiamato Segreto.txt.

Inserendo le informazioni “da nascondere” e salvando il file con il Blocco Note queste saranno conservate all’interno dell’attributo $DATA a livello di file system NTFS.

Aprendo normalmente il file test.txt verranno mostrate le “informazioni palesi” mentre premendo Windows+R quindi digitando notepad %userprofile%\Desktop\test.txt:Segreto.txt si accederà allo stream di dati nascosto.

Dal prompt dei comandi si può verificare la presenza di eventuali ADS nei file salvati all’interno della cartella corrente digitando quanto segue:

dir /r | find ":$DATA"

Nell’esempio portandosi nella cartella del desktop quindi digitando more < test.txt:Segreto.txt si leggerà il contenuto dello stream nascosto.

Per aggiungere un ADS dal prompt dei comandi al file test.txt basata usare la sintassi seguente:

echo "Testo nascosto!" > test.txt:Segreto.txt

I data stream aggiuntivi possono essere letti anche da PowerShell usando la sintassi Get-Content nomefile -Stream nome-ADS.

Ti consigliamo anche

Link copiato negli appunti