In questo articolo analizzeremo una tecnica di evasione impiegata da molti malware: l’utilizzo degli Alternate Data Streams (ADS). Sebbene questa strategia di occultamento dei payload dannosi all’interno del file system sia ben nota e datata, il suo impiego è tutt’altro che obsoleto. La capacità degli ADS di eludere i sistemi di rilevamento tradizionali li rende ancora oggi uno strumento efficace nelle mani degli attaccanti. Per questo motivo, comprenderne a fondo il funzionamento è essenziale per rafforzare le difese informatiche.

Cos’è l’Alternate Data Stream (ADS)?

L’ Alternate Data Stream (ADS) è una funzionalità del file system NTFS, introdotta per la prima volta in Windows NT 3.1, con l’obiettivo di garantire la compatibilità con il file system HFS (Hierarchical File System) utilizzato sui computer Macintosh. Grazie agli ADS, un singolo file può contenere più flussi di dati, utilizzabili per memorizzare metadati o altri tipi di informazioni aggiuntive.

Questa caratteristica è esclusiva dei file system NTFS e non è disponibile nei file system FAT o in altri tipi di file system.

Come funzionano gli ADS?

Per comprendere meglio il funzionamento degli ADS, vediamo un esempio pratico utilizzando il prompt dei comandi (CMD):

  • Il primo comando crea un file di testo chiamato file.txt e inserisce nel suo flusso principale la stringa: “Questo non è un ADS”.
  • Il secondo comando crea un flusso di dati alternativo associato allo stesso file, denominato stream1, e vi inserisce la stringa: “Questo è nell’ADS”.
Il comando echo “Questo non è un ADS” > file.txt crea un file di testo e al suo interno inserisce la stringa “Questo non è un ADS”
Il comando echo “Questo è nell’ ADS” > file.txt:stream1 crea un ADS associato al file.txt e lo chiama stream1 e al suo interno inserisce la stringa “Questo è nell’ ADS”

Se si esegue il comando DIR prima e dopo la creazione dell’ADS, file.txt continuerà a mostrare la stessa dimensione (24 byte nell’esempio). Questo perché gli ADS non incidono sulla dimensione visibile del file principale.

Come identificare un ADS

Per verificare l’esistenza di un ADS, è necessario utilizzare il comando DIR /R, che elenca i flussi di dati associati ai file:

file.txt apparirà con un ADS associato denominato :stream1

Come leggere i contenuti di un ADS

Per accedere ai dati presenti in un ADS, si possono utilizzare comandi come more o sort. Ad esempio:

 Output dei comandi more e sort

Creare ADS tramite codice

Gli ADS possono essere creati e gestiti anche tramite programmazione, utilizzando le API di Windows. Ecco un esempio in C:

Dettagli del codice:

  1. La funzione CreateFile permette di aggiungere un ADS specificando il nome del flusso dopo il nome del file, separandolo con i due punti (:). Ad esempio: file.txt:stream2.
  2. La funzione WriteFile consente di scrivere i dati all’interno del flusso.

Gli ADS sono utili per gestire dati supplementari o metadati senza alterare il contenuto principale di un file. Tuttavia, possono essere sfruttati in modo improprio per nascondere informazioni malevole, rendendoli un possibile vettore di attacco. Pertanto, è importante monitorarne l’utilizzo e adottare misure per rilevare eventuali abusi.

Uso legittimo di un ADS

Gli ADS consentono di nascondere dati aggiuntivi all’interno di un file. Un esempio pratico di utilizzo è il flusso Zone.Identifier, utilizzato da Microsoft per identificare la provenienza di un file. Questo flusso può contenere informazioni come la zona di sicurezza da cui proviene il file (es. Internet). Vediamo un esempio.

Scarichiamo un’immagine da Internet, ad esempio una foto di un cane, e analizziamone l’ADS.

Fonte: https://www.laspiegazione.it/cani-piu-belli-del-mondo-razze-e-caratteristiche/
Salviamo l’immagine nella cartella “Downloads”.
Utilizzare il comando DIR /R per verificare la presenza di un ADS.
 Contenuto dell’ADS Zone.Identifier

Contenuto del Zone.Identifier:

Alcuni malware, come CoinMiner, tentano di eliminare il flusso Zone.Identifier per nascondere la loro origine da Internet. Questo rappresenta un rischio in termini di sicurezza, poiché rimuove un’indicazione utile per l’identificazione del file scaricato. Gli analisti di malware utilizzano strumenti di reversing per identificare queste operazioni e capire il comportamento del malware.

Fonte https://secrary.com/ReversingMalware/CoinMiner/

Uso non legittimo di un Alternate Data Stream (ADS): Nascondere i file binari

Gli Alternate Data Streams (ADS) possono essere usati dai malware per occultare file eseguibili o altre informazioni sensibili. In questa dimostrazione, mostreremo come sia possibile nascondere, un eseguibile, come quello della calcolatrice di Windows, all’interno di un ADS, un’operazione che può sembrare innocua ma che evidenzia la potenza e i rischi di questa tecnica.

Vediamo come funziona:

In questo esempio, il comando type copia il file eseguibile della calcolatrice (calc.exe) nel flusso di dati ” stream1“.

Per eseguire il file nascosto, possiamo utilizzare lo strumento Windows Management Instrumentation Commandline (WMIC).

Sebbene questa dimostrazione mostri come una tecnica di occultamento possa essere utilizzata per nascondere applicazioni legittime, la stessa metodologia può essere impiegata da malintenzionati per nascondere malware o altre attività dannose.

Metodi Alternativi per individuare un Alternate Data Stream (ADS)

Come accennato in precedenza, la tecnica di nascondere i dati tramite ADS è ben nota, e strumenti come Windows Defender e diversi antivirus moderni sono già in grado di rilevare e mappare questi flussi. Tuttavia, un amministratore di sistema o un analista forense può individuare gli ADS utilizzando strumenti specifici e comandi mirati.

Uso di Streams di Sysinternals

Uno strumento efficace per individuare gli ADS è Streams, fornito da Sysinternals. Questo tool consente di identificare rapidamente tutti i flussi associati ai file in un sistema.

Output comando

Uso di PowerShell

Se si preferisce utilizzare PowerShell, è possibile ricorrere al comando Get-Item con il parametro -Stream. Ecco un esempio:

Output comando

Per analizzare tutti i file in una directory:

Output comando

Per eseguire una scansione ricorsiva di tutte le sottodirectory:

Output comando

Come Nascondere un Alternate Data Stream (ADS)

L’occultazione degli ADS si basa su alcuni nomi di file riservati al Windows environments.   Alcuni di questi nomi includono:

Ora vediamo cosa succede quando proviamo a creare un file utilizzando uno di questi nomi riservati:

In entrambi i casi, il file non viene creato:

Output comandi

Esiste un metodo per aggirare il controllo sui nomi riservati. Utilizzando i prefissi \\?\ o \\.\, si possono indicare alle API di Windows di ignorare completamente l’analisi delle stringhe. In questo modo diventa possibile creare file con nomi riservati.

Output comando

Abbiamo creato il file con successo. Ora proviamo a integrare un Alternate Data Stream (ADS) nel file appena generato.

Output comando

A questo punto, Windows non è più in grado di individuare l’ADS associato al file. Solo chi conosce esattamente il nome del file e del flusso potrà accedervi o eseguirne il contenuto tramite comandi specifici.

Un aspetto interessante da notare è che, tentando di eliminare il file tramite l’interfaccia grafica di Windows, viene mostrato un messaggio di Accesso negato, anche se si dispone di permessi amministrativi.

Per poter eliminare il file basta digitare il seguente comando:

Esiste una soluzione chiamata LADS, che è in grado di identificare gli ADS associati ai nomi riservati, ed è disponibile su GitHub

Output comando

Conclusione

Nonostante la tecnica degli Alternate Data Streams (ADS) sia ben conosciuta, continua a essere utilizzata con successo negli attacchi, evidenziando l’importanza di comprenderne a fondo il funzionamento per sviluppare difese efficaci. Sebbene gli ADS siano stati introdotti per gestire metadati aggiuntivi nei file, la loro capacità di nascondere dati senza alterare il contenuto li rende un veicolo ideale per occultare payload dannosi o attività malevole.

Ti è piaciuto l’articolo? Seguici su Linkedin per sostenerci!

consigliati