PowerShell protip 0040
in 𝕏

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

tty1 · powershell
PS> gci -r $HOME|gi -s *|where Stream -ne ':$DATA'|select Filename,Stream
#Windows#Powershell#BlueTeam#ThreatHunting

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>

Przydatne linki

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/c54dec26-1551-4d3a-a0ea-4fa40f848eb3 Informacje o streamach NTFS na stronach Microsoft web ↗ https://sekurak.pl/alternate-data-streams-ads/ kilka słów o Alternate Data Stremas od Michała web ↗
← poprzedni protip 003f ••• Wszystkie protipy następny → protip 0041
// subskrybuj

Nowe protipy prosto na maila.

Mięsiste jednolinijkowce i triki z prawdziwych zleceń. Zero spamu, zero teorii. Wypisujesz się jednym kliknięciem.

wersja newslettera: