Affrontiamo oggi l’argomento degli ADS, meglio conosciuti come Alternate Data Stream, strettamente collegati con il filesystem NTFS.
Vedremo come creare un semplice file txt con del testo segreto, come fare la stessa cosa con un’ innocua immagine e come eliminare data stream pericolosi (veicolo di malware, trojan, virus & Co.)
Cosa vuol dire NTFS? Da Wikipedia:
“NTFS (acronimo per New Technology File System), file system dei sistemi operativi basati su kernel NT. Questo file system nasce negli anni Novanta, quando Microsoft abbandonò lo sviluppo congiunto con IBM del sistema operativo OS/2 e decise di sviluppare in proprio Windows NT (che significa New Technology). Proprio per questo alcuni degli aspetti presenti nel file system HPFS di OS/2 sono presenti anche in NTFS.”
NTFS è il filesystem utilizzato da Windows Xp.
Ogni volta che un qualsiasi file viene creato, il filesystem NTFS provvede ad associargli automaticamente un “data stream” finalizzato a memorizzarne il contenuto effettivo; ma è possibile anche, per ogni file memorizzato su NTFS, creare dei data stream aggiuntivi che, a differenza del data stream predefinito ed usato dal sistema operativo per gestire i dati, sono praticamente invisibili, inaccessibili ed impossibili da identificare.
In questo modo è possibile memorizzare altri contenuti su stream addizionali, i famosi ADS, capaci di contenere altri contenuti nascondendoli. Sono quindi veicoli di malware, spyware & company.
Impariamo a riconoscerli e a distruggerli.
Veniamo al dunque, ed ecco i passaggi per creare un ADS, che nel nostro caso si occuperà di
nascondere un testo segreto in un file txt, testo.txt
- Apriamo il prompt dei comandi (cmd.exe) e creiamo un file di testo con il data stream aggiuntivo denominato “secret” (ma potrebbe anche chiamarsi “segreto”, “ciao”…), utilizzando la seguente sintassi: “notepad text.txt:secret”
- Confermiamo le operazioni di creazione del file e scriviamo la parola “ciao”, salviamo e chiudiamo.
- A questo punto nella cartella C:Documents and Settingsnomeutente avete un file “text.txt” che se aperto con il normale doppio click sarà vuoto, ma se aperto con la sintassi che specifica lo stream aggiuntivo “notepad text.txt:secret” vedrete la parola “ciao”.
FAT vs NTFS… un attimo di chiarezza
La storia della FAT affonda le sue radici nel lontano 1980 con la prima versione di QDOS di Tim Paterson, il predecessore del PC-DOS e di MS-DOS della Microsoft. Con questa innovazione si poteva tener traccia delle aree di disco usate e di quelle libere. In seguito la FAT assunse nuovi nomi, come FAT12, FAT32, VFAT e NTFS, la differenza consisteva in quanti bit sono allocati per numerare i cluster del disco, ad esempio con 32 bit si potevano gestire 232 = 4.294.967.296 cluster e così via…
La FAT è sostanzialmente composta di quattro aree: Area riservata, Tabella di Allocazione dei File, Directory
radice ed Area dei File; le informazioni per gestire il disco (boot sector) sono immagazzinate nell’area riservata che parte dal settore logico zero.
La NTFS nasce negli anni ’90 ed è un sistema a 64 bit portando i computer a poter indicizzare hard disk enormi.
Possiede caratteristiche di affidabilità (se un processo è interrotto brutalmente il filesystem non si corrompe), di sicurezza (si possono impostare dei permessi di accesso su files e cartelle) e di supporto dei nomi lunghi dei files fino a 255 caratteri grazie alla codifica Unicode.
Nella NTFS le informazioni su file e cartelle sono memorizzate in una tabella chiamata Master File Table (MFT). In questa regione del disco ogni file è identificato da una collezione di oggetti chiamati attributi. Tra questi troviamo, ad esempio, il nome assegnato al file, la data di creazione, la data dell’ultima modifica, i descrittori di protezione e, ovviamente, i dati che ne rappresentano il contenuto. Ma a questi dati ufficiali si affiancano dei dati di contenuto alternativi, gli ADS appunto, che permettono, come in un allegato e-mail, di agganciare ad un file noto, ad esempio notepad.exe, un altro file di qualsiasi tipo.
Nonostante se ne intraveda già la pericolosità è da dire anche che gli ADS sono invisibili e non alterano la dimensione del file originale, se per esempio inseriamo un file di 2,66 Mb nel notepad.exe (70Kb), il nostro blocco note continuerà a mantenere la dimensione di 70Kb, l’unico campanello d’allarme sarà raffigurato dalla modifica della data di creazione del file. Ma anche questo è un problema facilmente aggirabile. Ecco due semplici utilities per cambiare il date-time stamp dei files:
- Attribute Magic (free)
- FileTweak(trial)
All’opera…
Vediamo come creare velocemente un ADS con cui includere il contenuto di un file bmp nel Blocco Note.
Prima creiamo una cartella c:ads1, poi clicchiamo su START, quindi su ESEGUI, digitiamo CMD, scriviamo cd ads1, e infine scriviamo copy %windir%notepad.exe c:ads1
Così copiamo il file notepad.exe (il Blocco Note) nella cartella ads1. Poi copiamo un’immagine esemplare, in nostro caso: immagine.bmp nella cartella c:ads1.
Adesso procediamo alla grande alchimia, inseriamo l’immagine immagine.bmp nel file notepad.exe e scriviamo:
type immagine.bmp -> notepad.exe:immagine.bmp
ed il gioco è fatto!
Notiamo subito che notepad.exe è di 70Kb e immagine.bmp è di 2.66 Mb.
Dopo aver cancellato immagine.bmp, notiamo che notepad.exe è ancora di 70Kb, però la data è cambiata, dal 19/08/2004 al 16/09/2006 ed anche l’ora.
Che succede se digitiamo notepad.exe e premiamo INVIO?
Ecco la risposta: parte il Blocco Note, ma se digitiamo start ./notepad.exe:immagine.bmp , accade
un’altra cosa: appare un innocentissimo biglietto da visita, ma se fosse stata un eseguibile
(exe) malevolo? Virus, spyware, ecc? O un immagine illegale?
Facciamo finta che il programma calc.exe (la calcolatrice di windows) sia un pericoloso trojan virus:
type %windir%calc.exe >notepad.exe:calc.exe
Adesso abbiamo inserito il file calc.exe nel blocco note quindi se digitiamo:
start ./notepad.exe:calc.exe
Ecco che appare la calcolatrice di Windows.
La peculiarità degli ADS è che possono inglobare dei file eseguibili da altri programmi, come ad esempio uno script PERL o VBS o PHP ed essere eseguiti dal programma relativo, ad esempio:
perl notepad.exe:ciaoscript.pl
Dobbiamo però ricordarci, che gli ADS:
- possono essere eseguiti solo se chiamati direttamente da un programma col percorso completo del file inquinato, quindi è impossibile che sia eseguito accidentalmente
- nessuno dei protocolli di Internet come SMTP (posta elettronica), FTP ecc. può trasportarli, perchè non supportano gli streams, quindi gli ADS non possono essere inviati via Internet
- i files contenenti ADS possono viaggiare attraverso le LAN a patto che si vadano a copiare su sistemi che hanno l’NTFS. In alcuni casi, gli streams sono stati usati per effettuare degli exploit sui web server.
Come eliminare un file sospetto
Se scrutando nei meandri del Task Manager osservassimo un processo del tipo notepad.exe:
ciao.exe , potremmo già insospettirci. È l’ora di rimboccarsi le maniche e in questi casi può essere utile:
- copiare il file sospetto su una chiavetta USB(solitamente formattata in FAT) o spostarlo su un Hard Disk non NTFS.
- Pulirlo da linea di comando con ren notepad.exe note.exe
- type note.exe -> notepad.exe
- del note.exe
- Utilizzare un utility come Streams