gci -r $HOME|gi -s *|where Stream -ne ':$DATA'|select Filename,Stream - znajdź w katalogu domowym użytkownika pliki, które posiadają ukrytą zawartość jako Alternate Data Streams
System plików NTFS udostąpnia mechanizm strumieni ( Alternate Data Streams), dzięki któremu do plików (a także katalogów) mogą być dopisywane różne metadane, a nawet alternatywna zawartość pliku. Nazwa alternatywnego strumienia podawana jest po dwukropku. Realnym przykładem wykorzystania ADS jest strumień o nazwie Zone.Identifier, w którym aplikacje internetowe typu Internet Explorer, Google Chrome, Microsoft Outlook zapisują informacje o tym, że plik pochodzi ze strefy Internet.
ADS jest również bardzo lubiany przez cyberprzestępców - jest świetnym miejscem na ukrycie złośliwego oprogramowania lub fantów zdobytych podczas operacji.
Nasz oneliner pobierze rekursywnie listę plików z katalogu domowego użytkownika ( Get-ChildItem -Recurse $HOME, w skrócie gci -r $HOME), następnie dla każdego pliku i katalogu pobierze wszystkie strumienie ( Get-Item -Stream *, w skrócie gi -s *), po czym odrzuci domyślne strumienie where Stream -ne ':$DATA'. Na koniec wyświetlimy jedynie nazwę pliku i nazwę strumienia.
Jak pracować z ADS?
Niech jeden listing stanie się wart więcej niż tysiąc słów:
PS C:\Users\drg> mkdir ads
Directory: C:\Users\drg
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 29.09.2020 11:27 ads
PS C:\Users\drg> Set-Content -Path .\ads\hello.txt -Value "hello"
PS C:\Users\drg> Set-Content -Path .\ads\hello.txt -Value "tajne dane" -Stream ukryty
PS C:\Users\drg> Get-ChildItem .\ads\
Directory: C:\Users\drg\ads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 29.09.2020 11:28 7 hello.txt
PS C:\Users\drg> Get-ChildItem .\ads\|Get-Item -Stream *|Select Filename,Stream
FileName Stream
-------- ------
C:\Users\drg\ads\hello.txt :$DATA
C:\Users\drg\ads\hello.txt ukryty
PS C:\Users\drg> Get-Content .\ads\hello.txt
hello
PS C:\Users\drg> Get-Content .\ads\hello.txt -Stream ukryty
tajne dane
PS C:\Users\drg> cat .\ads\hello.txt:ukryty
tajne dane
PS C:\Users\drg>