System plików NTFS ma wiele przydatnych funkcji. Jedną z nich są mało komu znane alternatywne strumienie danych (ang. Alternate Data Streams - skrót ADS). Postaram się opisać to zagadnienie.
Każdy plik i katalog znajdujący się na partycji sformatowanej w systemie NTFS posiada dwa strumienie danych: jeden główny dla faktycznych danych, drugi dla informacji o bezpieczeństwie pliku. Plik ten, wraz ze strumieniem głównym, jest jedynym widocznym spod Explorera i linii komend. Plik może posiadać jednak więcej strumieni i można w nich przechowywać dane i różne informacje tak jak w normalnych plikach. Strumienie te umożliwiają stworzenie ukrytych plików "pod" innym plikiem / folderem. Różnica polega na tym, że strumienie te mają nazwę. Dane zapisane w strumieniach nie pozostawiają żadnych śladów - waga frontowego pliku pozostaje bez zmian, a zagadkowo ubywa miejsce na dysku. Można mieć dysk 100GB, jeden widoczny plik o rozmiarze 30KB i ukryć w nim strumienie o wadze prawie całego dysku.
Plik główny: plik.xxx
Plik główny ze strumieniem: plik.xxx:plik2.xxx
Zalety
Strumienie pozwalają omijać przydział dysku dla naszego konta ustalony przez administratora. W strumieniu możemy przechowywać tyle danych, ile się zmieści na dysku :). Umożliwiają również ukrywanie danych np. przed administratorem. Administrator, posiadający pełne uprawnienia, może nam usunąć plik wraz ze strumieniem, ale skąd będzie wiedzieć o istnieniu strumienia?
Zagrożenia
Jednak strumienie stanowią również zagrożenie dla systemu - w razie przedostania się do systemu szkodnika może on przechowywać lub dołączać szkodliwe pliki do normalnych plików.
Przykład strumienia rootkita Pe386:
C:\WINDOWS\system32:lzx32.sys
Funkcjonowanie strumieni
Aby zobrazować działanie ukrytych strumieni tworzymy przykładowy plik:
w Wierszu polecenia wpisujemy jedno z poleceń, w zależności gdzie tworzymy - na partycji systemowej, lub innym dysku
echo 12345 > plik.txt:cyfry
echo 12345 > x:\plik.txt:cyfry

Zostanie utworzony plik.txt zawierający strumień "cyfry". Aby odczytać dane możemy użyć polecenia:
more < plik.txt:cyfry
more < x:\plik.txt:cyfry

lub otworzyć w notatniku, ale musimy dodać rozszerzenie .txt
echo 12345 > plik.txt:cyfry.txt
notepad plik.txt:cyfry.txt
echo 12345 > x:\plik.txt:cyfry.txt
notepad x:\plik.txt:cyfry.txt

Strumienie możemy również tworzyć w katalogach:
mkdir katalog lub md katalog
echo 12345 > katalog:plik.txt
notepad katalog:plik.txt
Zostanie utworzony strumień w katalogu. To jest strumień a nie plik więc jak wejdziemy do tego katalogu to nic nie zobaczymy.
Plików nie można kopiować do strumienia lub na odwrót windowsowym poleceniem "copy". Umożliwia to jednak uniksowy odpowiednik - polecenie "cp". Opis poniżej.
Jednak w przypadku plików tekstowych można użyć polecenia "more":
kopiowanie strumienia cyfry z pliku plik.txt do pliku drugi_plik.txt
more < plik.txt:cyfry > drugi_plik.txt
more < x:\plik.txt:cyfry > x:\drugi_plik.txt
kopiowanie drugi_plik.txt do strumienia cyfry w plik.txt.
more < drugi_plik.txt > plik.txt:cyfry
more < x:\drugi_plik.txt > x:\plik.txt:cyfry
Wykrywanie i usuwanie strumieni
Systemy od Vista w górę mają wbudowaną możliwość przeglądania strumieni przez polecenie DIR z przełącznikiem /R.
Dla systemów 2000/XP trzeba użyć dodatkowych aplikacji.
Streams pobierz: najnowsza wersja
aplikacja obsługiwana z linii komend, umożliwia wykrycie i usuwanie ukrytych strumieni. Najlepiej skopiować plik do katalogu c:\windows. Wówczas po uruchomieniu wiersza poleceń nie musimy wskazywać pełnej ścieżki do narzędzia.
Aplikację obsługujemy z linii komend, wpisując polecenia wg wzoru:
streams [-s] [-d] <file or directory>
[-s] uwzględnienie podfolderów
[-d] usuwanie strumieni
<file or directory> ścieżka do pliku/folderu
wykrycie strumieni z całego dysku c:\
streams -s c:\
usuwanie strumieni z uwzględnieniem podfolderów z całego dysku c:\
streams -s -d c:\
Wykorzystanie polecenia "cp" w ADC
Polecenie "cp" umożliwia skopiowanie pliku binarnego do strumienia i na odwrót. Można w ten sposób ukrywać i przechowywać pliki na dyskach. Ważne, że działa na koncie z ograniczonymi prawami.
Aby skorzystać z tej możliwości potrzebny jest windowsowy port uniksowego polecenia "cp". Można skorzystać z kilku możliwości:
Zestaw CoreUtils strona pobierania: link
pobieramy binaria "coreutils-x.x.x-bin.zip", dodatkowo zależne biblioteki dependencies zip file - "coreutils-x.x.x-dep.zip"); z archiwum binaria coreutils-x.x.x-bin.zip kopiujemy plik .\bin\cp.exe, a z coreutils-x.x.x-dep.zip dwie wymienione biblioteki.
Pliki te kopiujemy do katalogu C:\WINDOWS. Następnie uruchamiamy Wiersz polecenia i wpisujemy odpowiednie polecenia.

Zestaw UnxUtils strona pobierania: link
Pobieramy archiwum, po wypakowaniu kopiujemy pliki:
.\bin\sh.exe
.\usr\local\wbin\cp.exe
Plik cp.exe kopiujemy do katalogu C:\WINDOWS. Następnie uruchamiamy sh.exe (lokalizacja dowolna), który zawiera własny interpretator linii komend, do którego wpisujemy komendy. Czasami trzeba dwa razy kliknąć Enter aby polecenia się wykonały.

port cp (nieoficjalny)
po wypakowaniu pliki kopiujemy do katalogu C:\WINDOWS. Następnie uruchamiamy systemowy Wiersz polecenia i wpisujemy odpowiednie polecenia.

Polecenie "cp" w praktyce
Wzór-przykład skopiowania pliku do strumienia:
cp film.avi plik.txt:film
lub
cp x:\film.avi x:\plik.txt:film
Wzór-przykład skopiowania strumienia do pliku:
cp plik.txt:film film.avi
lub
cp x:\plik.txt:film x:\film.avi
Przykład:

Plik "cp.zip" został skopiowany do strumienia "arch.zip" (nie jest konieczne nadawanie rozszerzenia, alternatywnie można by było nazwać strumień "arch") w pliku "plik.txt" (jeśli plik "plik.txt" nie istnieje zostanie utworzony). Tak więc został utworzony pusty "plik.txt" zawierający strumień "arch.zip", który jest niewidoczny.
W następnym poleceniu strumień "arch.zip" został skopiowany do pliku "arch2.zip". Wynikowo sytuacja na dysku jest taka:

Edycja:Treść poniżej została dodana przez autora - 16 marca 2010
Uzupełnienie "port cp (nieoficjalny)" - zabrakło linku do pobierania: pobierz
Aplikacja streams jest dobra do ujawniania i usuwania strumieni, zwłaszcza w przypadku infekcji. Jednak jest jeszcze jedna przydatna aplikacja AlternateStreamView.
aplikacja wykonuje skanowanie dysku i wyświetla wszystkie ukryte alternatywne strumienie danych NTFS przechowywane w systemie plików. Umożliwia:
•wyodrębnienie strumieni do określonego folderu
•usuwanie niechcianych strumieni
•utworzenie raportu z listą strumieni na dysku
Czyli jak ktoś chce ukrywać pliki w strumieniach ta aplikacja jest dla niego, bo umożliwia ich wyodrębnianie do wskazanego folderu.