← Torna al blog

Alternate Data Streams: attributi $DATA nascosti su NTFS

· 2 min di lettura

NTFS consente a un file di avere più di un attributo $DATA. Il primo è senza nome e contiene il contenuto principale del file. Ogni $DATA aggiuntivo è nominato e agisce come un flusso parallelo agganciato allo stesso file. Questi flussi extra sono gli Alternate Data Streams (ADS).

La sintassi

Si leggono e scrivono ADS da PowerShell o cmd:

echo testo nascosto > note.txt:segreto
type note.txt:segreto

note.txt appare vuoto in Esplora risorse e in dir — il suo $DATA primario pesa zero byte. Ma il flusso nominato segreto contiene il tuo testo. Dal punto di vista dell'utente il file si comporta normalmente; il flusso alternativo viaggia in parallelo.

Dove si incontrano ADS in modo legittimo

Windows stesso usa gli ADS per la propria contabilità. Il più comune è Zone.Identifier, agganciato a ogni file scaricato da Internet. Contiene un breve blocco di testo che descrive l'URL d'origine e la zona di sicurezza. È ciò che fa scattare l'avviso «questo file proviene da un altro computer».

Altri usi legittimi:

  • $KSP per i file di layout di tastiera
  • OECustomProperty per gli allegati di Outlook
  • vari flussi di thumbnail e indici di ricerca

Perché gli attaccanti amano gli ADS

Tutto ciò che vive fuori dal flusso principale tende a essere invisibile per:

  • viste delle cartelle che mostrano solo la dimensione dei file (riportano quella del flusso senza nome);
  • antivirus che scansionano solo il flusso di default;
  • revisioni manuali da parte dell'analista che non ha chiesto esplicitamente i flussi.

Schema classico: depositare un payload in documento-lecito.docx:payload.exe e lanciarlo via WMI. Il file sembra un documento Word, e tale rimane finché non si pongono le domande giuste.

Come rilevarli

dir /R elenca ogni flusso di ogni file in una directory. L'output mostra la dimensione del flusso accanto al nome del flusso:

1.234.567 documento-lecito.docx
   45.056 documento-lecito.docx:payload.exe:$DATA

L'equivalente più leggibile in PowerShell:

Get-Item documento-lecito.docx -Stream *

Perché $MFT è la lente migliore

L'enumerazione file per file può perdere flussi su file ai quali non si era pensato. $MFT non ha questo problema: ogni attributo è lì, nel record. Percorrere l'MFT ed elencare gli attributi $DATA di ogni voce — nominati e no — restituisce in un solo passaggio l'inventario completo di tutti i flussi del volume.

In triage, è la differenza tra «devo ricordarmi di controllare gli ADS» e «li ho già controllati tutti».

Risorse esterne