L’abuso dell’Alternate Data Stream non è scomparso

Il seguente post del blog presenta il concetto di Alternate Data Stream e come è stato usato in natura, sia in passato che in questi giorni: come tecnica usata per nascondere un payload malevolo nel file system. Anche se potrebbe essere considerata una vecchia tecnica, è ancora rilevante oggi e comune in natura.

Che cos’è un Alternate Data Stream?

Alternate Data Stream (ADS) è la capacità di un file system NTFS (il principale formato di file system in Windows) di memorizzare diversi flussi di dati, oltre al flusso di default che viene normalmente utilizzato per un file. Quando questa caratteristica fu creata, il suo scopo principale era quello di fornire supporto al Hierarchical File System (HFS) di macOS.

Il file system NTFS contiene file con attributi. L’attributo rilevante per il nostro scopo è l’attributo $DATA, che viene utilizzato per memorizzare i flussi di dati di un file.

In passato, era comune memorizzare un carico utile dannoso all’interno di un ADS di un file legittimo. Ma oggi, molte soluzioni di sicurezza rilevano e scansionano gli ADS. Tuttavia, vi mostreremo in questo post, un ADS può ancora essere usato per eseguire payloads mentre è nascosto all’utente così come a vari prodotti di sicurezza.

Per semplificare i concetti che sono presentati in questo articolo, tutti gli esempi sono basati su strumenti nativi in Windows.

Come usare ADS

Ai bei tempi di Windows Vista, Alternate Data Streams (ADS) era un metodo comune per gli sviluppatori di malware per nascondere il loro codice dannoso. Un flusso di dati alternativo era efficacemente usato per nascondere la presenza di file dannosi che corrompevano, comprimendoli all’interno di un file legittimo. Inserendo il malware nell’Alternate Data Stream, il file di Windows conteneva informazioni e indicazioni per i file legittimi, ma anche per il file maligno. Per eseguire il codice maligno che l’hacker ha depositato nell’Alternate Data Stream, vorrebbe creare un collegamento simbolico utilizzando il comando mklink. Ma per fare questo è necessario avere i diritti amministrativi sulla macchina. Considerando che il normale comportamento di un utente non richiede di operare come amministratore, gli hacker tendono ad avvicinarsi ai loro obiettivi assumendo di atterrare su una casella senza diritti di amministrazione.

Enumerazione – Il flusso principale sotto $DATA è la stringa vuota (quindi: “”, chiamato anche il flusso senza nome). Questo flusso è usato per contenere il flusso regolare di un file.

Il seguente è un esempio di enumerazione dei flussi di dati di un file con PowerShell:

Puoi anche usare dir /R, o SysInternals\streams.exe per enumerare un ADS di un file / ricorsivamente su una directory

Come puoi vedere sopra, il file contiene solo il flusso senza nome.

Tuttavia, a volte è possibile trovare un ADS all’interno di un file legittimo, poiché ci sono diversi usi legittimi per questa tecnica.

Di seguito un esempio di enumerazione dei flussi di dati di un file con un ADS con PowerShell:


Questo è anche un esempio di un uso legittimo di ADS: il Zone. Identifier. Questo campo presenta il livello di fiducia della fonte del file. Questo è un uso del browser per memorizzare il suo macOS corrispondente è il “bit di quarantena”.

Creazione – Mentre ci possono essere usi legittimi per ADS, ADS può anche essere utilizzato per memorizzare un payload dannoso. Gli attaccanti potrebbero preferire questo metodo rispetto al salvataggio del payload nel flusso senza nome, perché la sua presenza sarà nascosta all’utente – non è accessibile da explorer.exe (e la dimensione visualizzata di un file non include quella di ADS). Inoltre, non viene visualizzato di default con il comando “dir” (tuttavia, la bandiera /R visualizza ADS, ed è applicata da Windows Vista).

Creare un ADS è abbastanza semplice.

Un esempio di creazione di un ADS con il comando type:

Fino a Windows XP, era possibile eseguire un ADS con il comando start. Tuttavia, dalle versioni successive di Windows, non è più possibile.

Accesso ai dati – Abusare degli ADS è ancora una minaccia rilevante, poiché ci sono più modi per leggere ed eseguire un ADS.

Il primo utilizzo è l’accesso ai dati. Si può accedere facilmente al contenuto dell’ADS. Il seguente è un esempio con PowerShell:

Esecuzione – Oltre a leggere i dati, è anche possibile eseguirli. Anche se non è possibile eseguire un ADS con il comando “start”, può comunque essere eseguito da altri programmi. Per esempio, con WMI:

“wmic process call creates” – esegue un processo con WMI. Può anche eseguire un ADS. Esempio:

Ci sono ulteriori strumenti nativi legittimi di Windows che possono essere utilizzati per eseguire direttamente un ADS. Per esempio, una DLL può essere salvata all’interno di un ADS e chiamata da DllMain attraverso rundll32.exe; inoltre, un HTA può essere salvato all’interno di un ADS e chiamato attraverso mshta.exe; e così via.

Campagne dannose che abusano di ADS

Può sembrare che Windows sia riuscito a gestire le minacce che risiedono in ADS. Tuttavia, ci sono molte famiglie di malware in natura che ancora abusano degli ADS.

Un altro esempio del 2017 è BitPaymer, un ransomware che ha utilizzato due ADS nella sequenza di attacco, al fine di aggiungere stealth alle azioni e nascondere l’attività dannosa. Il primo ADS è stato creato per eseguire il comando “net view” per ottenere le quote di rete, poi il secondo ADS rimescola i dati sul disco e le quote di rete.

Per concludere, abusare degli ADS è una tecnica ancora attuale. Infatti, le recenti versioni di Windows hanno limitato e indurito la funzionalità di ADS. Tuttavia, il comando di base degli strumenti nativi di Windows come Power-Shell e WMI, o una certa conoscenza della riga di comando di Windows permette agli attori delle minacce di continuare e sfruttare ADS nei loro attacchi. È interessante notare che le recenti campagne che utilizzano ADS sono considerate piuttosto sofisticate e tendono a ridurre al minimo l’uso di file persistenti su disco.

Lascia un commento