ADS di NTFS: se il file è uno, nessuno o centomila

botnet

Così come altre feature che esistono da molti anni e sono poco conosciute, la possibilità di creare dei veri e propri fork o versioni alternative dei nostri file è con noi anche sul filesystem NTFS fin dai tempi di Windows NT 3.1 ed il concetto, sotto altri nomi, è presente in vari sistemi operativi, non ultimi Apple e Solaris. Non è difficile immaginare che, anche in questo caso, ciò possa rappresentare un rischio per la sicurezza e un posto in più in cui possono trovarsi malware di vario genere, ma andiamo per gradi.

Sebbene i concetti siano estremamente simili tra vari filesystem, ci concentreremo, per adesso, sull’implementazione Windows su NTFS, chiamata Alternate Data Streams.

S’immagini di avere un file di testo. Ciò che vedremo aprendolo normalmente sarà ciò che è memorizzato dentro il nostro data stream principale, conosciuto con etichetta “” (una stringa vuota) e il cui attributo principale è $DATA.

Se volessimo, però, fare un piccolo esperimento, ci basterà aprire una shell normale cmd.exe e una PowerShell:

Da shell normale cmd.exe, potremmo creare un file con:

PS C:\Users\mrossi> echo "questo è il contenuto del file che appare normalmente" > file.txt

Verifichiamo l’hash del file:

PS C:\Users\mrossi> Get-Filehash file.txt Algorithm Hash Path
--------- ---- ----
SHA256 46249647833B53707B527CC90DDFE92AFAFA6BDF4F229987DBD34333E18E731D C:\Users\mrossi\file.txt 

Creiamo ora 2 data stream alternativi con:

PS C:\Users\mrossi> echo "questo è un contenuto nascosto" > file.txt:alternativo1 PS C:\Users\mrossi> echo "questo è un ulteriore contenuto nascosto" > file.txt:alternativo2

Così facendo, il nostro file avrà come contenuto 2 stringhe diverse a seconda del data stream a cui si accede e, in caso lo si apra normalmente, esso mostrerà il contenuto del data stream di default.

Vediamo degli esempi:

Da Powershell, potremo verificare che esistono diversi stream del file appena creato:

PS C:\Users\mrossi> Get-Item -path file.txt -stream * PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\mrossi\file.txt::$DATA
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\mrossi
PSChildName : file.txt::$DATA
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Users\mrossi\file.txt
Stream : :$DATA
Length : 21 PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\mrossi\file.txt:alternativo1
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\mrossi
PSChildName : file.txt:alternativo1
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Users\mrossi\file.txt
Stream : alternativo1
Length : 39 PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\mrossi\file.txt:alternativo2
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Users\mrossi
PSChildName : file.txt:alternativo2
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Users\mrossi\file.txt
Stream : alternativo2
Length : 45

E, per vederne il contenuto:

PS C:\Users\mrossi> Get-Content -path file.txt "questo è il contenuto del file che appare normalmente"
PS C:\Users\mrossi> Get-Content -path file.txt -stream "" "questo è il contenuto del file che appare normalmente"
PS C:\Users\mrossi> Get-Content -path file.txt -stream $DATA "questo è il contenuto del file che appare normalmente"
PS C:\Users\mrossi> Get-Content -path file.txt -stream alternativo1 "questo è un contenuto nascosto"
PS C:\Users\mrossi> Get-Content -path file.txt -stream alternativo2 "questo è un ulteriore contenuto nascosto"

Come si può notare, lo stream “” e quello $DATA fanno riferimento allo stesso, ovvero quello di default, che è quello a cui si accede se non ne viene specificato alcuno in particolare.

Il limite, qui, è in gran parte costituito dalla vostra immaginazione, visto che è possibile creare fino a 256mila stream alternativi per ogni file.

Tutto ciò sembra essere innocuo ma la vostra prospettiva cambierà sicuramente se si aggiunge il fatto che dentro un data stream alternativo può esserci anche del codice eseguibile in più o totalmente diverso da quello del file principale e che l’hash del file non cambia quando si aggiungono data stream o se ne modifica il contenuto.

Potete verificare voi stessi, sempre da Powershell, con:

PS C:\Users\mrossi> Get-Filehash file.txt Algorithm Hash Path
--------- ---- ----
SHA256 46249647833B53707B527CC90DDFE92AFAFA6BDF4F229987DBD34333E18E731D C:\Users\mrossi\file.txt 

L’hash del file, come notiamo, non è cambiato.

I più curiosi potranno continuare a sperimentare, provando ad esempio a includere un file .exe nel nostro file di testo, o a controllare ricorsivamente tutti i data stream dentro una folder, ma veniamo a noi.

Vi starete a questo punto domandando se gli antivirus tengono conto degli ADS e la risposta è, almeno per quelli degni di questo nome, affermativa. Si tratta, del resto, di una feature presente in NTFS da 2 decenni.

Non mancano, però, esempi anche relativamente recenti di ransomware che ne fa uso e, se l’azienda usa altri tool interni per la sicurezza, deve tenere conto anche degli stream dati alternativi, pena il rischio di lasciarsi sfuggire elementi chiave della catena di cybersecurity, non ultima la possibilità che questo meccanismo venga usato come via d’uscita (data exfiltration).

E’ importante, infatti, ricordarsi che la sicurezza non consiste solo in impedire che qualcosa di malevolo entri e impedisca di fare danni (non tutti gli attacchi sono finalizzati a interferire col normale funzionamento dell’infrastruttura), ma anche che dati riservati riescano a uscire passando del tutto inosservati.

Fonte: https://www.miamammausalinux.org/2022/07/ads-di-ntfs-se-il-file-e-uno-nessuno-o-centomila/

Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!

Hai dubbi o problemi? Ti aiutiamo noi!

Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.
Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
Amazon Music
Scopri le ultime offerte per dischi ssd su Acquista su Amazon
Scopri le ultime offerte per memorie RAM DDR su Acquista su Amazon
Scopri le ultime offerte per Chromebook su Acquista su Amazon
Scopri le ultime offerte per Raspberry su Acquista su Amazon

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.