Ukrywanie plików w systemie Windows – cz I

Czas czytania: 6 minut

Komputer jest bardzo ciekawą maszyną. Wszystkie informacje, które przetwarza nasz cyfrowy pomocnik, są przechowywane w formie bitów, zer i jedynek. W tej formie zapisywana jest każda informacja – zdjęcie, obraz czy plik wykonywalny. Czym jest zdjęcie dla procesora? Ciągiem bitów. Czym jest muzyka dla procesora? Takim samym ciągiem bitów, tylko nieco inaczej zinterpretowanym. Sterując tą „interpretacją” za pomocą odpowiedniego programu możemy zrobić bardzo wiele ciekawych rzeczy – np.: zapisać tekst w pliku graficznym lub muzycznym. Może to otworzyć drogę do wielu bardzo ciekawych zastosowań – od bardziej nielegalnych, takich jak tworzenie różnych „złośliwych” programów, do bardziej przyziemnych, takich jak ukrywanie plików przed rodzeństwem czy rodzicami.

Naszym celem będzie ukrycie „informacji” przed wzrokiem innych użytkowników komputera. Możemy to osiągnąć na wiele lepszych, lub gorszych sposobów. Zaletą poniżej przedstawionych metod jest fakt, że przeciętny użytkownik komputera na 100% nie odkryje plików, które „ukrywamy”. Do czego możemy wykorzystać poniższe rozwiązania? Do wielu różnych rzeczy, ot – choćby dla szpanu. Rozpoczynamy naszą zabawę w ukrywanie plików.

Ukrywanie plików w Wordzie

Worda używałeś z pewnością nie raz. Jest to program, który jest niezbędny dla każdego użytkownika. Zrobienie sprawozdania, projektu czy listy zakupów – do większości z tych zadań nie używamy zaawansowanych funkcji Microsoft Office, ale utarło się przekonanie, że jest do tego niezbędny.

Pliki Worda mają rozszerzenie .docx. Czy zastanawiałeś się kiedyś, jak zbudowany jest ten plik? Utwórz jakikolwiek dokument Worda, zapisz go i spróbuj otworzyć jakimkolwiek archiwizatorem plików (takim jak WinRAR czy 7-zip). Zobaczysz, że plik Worda to nic innego jak zwykłe archiwum, w którym znajdują się pliki opisujące budowę dokumentu Worda, formatowanie tekstu itd.

Plik docx otworzony za pomoca 7zip
Tak wygląda plik docx od środka

Naszym celem będzie umieszczenie w pliku Worda dwóch rzeczy – zwykłego pliku tekstowego o rozszerzeniu txt oraz zdjęcia.

No dobra. Utwórzmy sobie zwykły plik docx. Możesz wpisać w edytorze jakąś treść abyśmy byli pewni, że nie uszkodziłeś pliku podczas modyfikacji. Zapisz zmiany i wyjdź z Worda. Otwórz plik docx za pomocą archiwizatora.

Przygotujmy sobie folder z naszymi plikami, które chcemy „wszczepić” w plik Worda. Nazwijmy go media. Umieśćmy w nim dwa pliki: image.png (wsadź jakieś dowolne zdjęcie, które masz na stanie) oraz tekstowy.txt (umieść dowolny plik z notatnika, który zawiera jakąś treść).

Zdjęcie przedstawiające treść, którą chcemy ukryć w pliku word
Oto treść którą chcemy ukryć w pliku worda

Otwieramy plik Worda za pomocą archiwizatora i przechodzimy do folderu word. Dodajemy utworzony folder media. Po wykonaniu operacji zawartość archiwum powinna wyglądać tak:

Tak powinno wyglądać archiwum po modyfikacji
Tak powinno wyglądać archiwum po modyfikacji

Zamykamy. Próbujemy zmodyfikowany plik za pomocą Worda. Sprawdzamy czy się nic nie zepsuło. Hmmm, komunikaty, które wyskakują nie wyglądają zachęcająco …

Błąd

Plik co prawda otworzył się poprawnie. Ale wyświetlające się ostrzeżenia z pewnością zaalarmowałyby przeciętnego użytkownika, że coś jest nie tak. Z czego wynika ten problem?

Docx posiada kilka plików opisujących dokument, nad którym pracujemy. Musimy te pliki zmodyfikować tak, aby Word „rozpoznawał” pliki, które dorzuciliśmy. Pierwszym plikiem, który musimy zmodyfikować, jest [Content_Types].xml, który znajduje się w głównym katalogu archiwum.

Do modyfikacji tego rodzaju plików polecam Notepad++ z wtyczką XML Tools. Wtedy otwierany plik będzie czytelny ze względu na fajne formatowanie.

[Content_Types].xml po otworzeniu wygląda tak:

Zawartość pliku ContentTypes
Zawartość pliku ContentTypes

Interesuje nas górna część pliku, w której definiujemy, jakie rodzaje „danych” znajdują się wewnątrz naszego docxa. Widzimy, że w chwili obecnej wpisany jest tylko xml. Dołóżmy nowe rozszerzenia: png i txt. Po modyfikacji plik będzie wyglądał tak:

ContentTypes po modyfikacji
ContentTypes po modyfikacji

Co zmieniliśmy? Dodaliśmy dwie linijki, które mówią, że wewnątrz pliku docx mogą znajdować się pliki o rozszerzeniu txt, które są czystym tekstem oraz pliki o rozszerzeniu png, które są obrazkami.

Przechodzimy teraz do folderu word\_rels\. Znajduje się tam plik dokument.xml.rels, który opisuje zasoby, które używane są przez plik docx.

Domyślnie, plik ten wygląda tak:

Plik document.xml.rels przed modyfikacją
Plik document.xml.rels przed modyfikacją

Musimy po raz kolejny dopisać dwie linijki, które uwzględnią nasz plik tekstowy oraz graficzny.  Po modyfikacji plik wygląda tak:

Plik document.xml.rels po modyfikacji
Plik document.xml.rels po modyfikacji

Aktualizujemy plik dokument.xml.rels w archiwum. Zapisujemy wszystkie zmiany. Otwieramy plik docx za pomocą Worda. Program powinien uruchomić się prawidłowo, a Word podczas ładowania nie powinien wyświetlić żadnych błędów ani ostrzeżeń. Voila! Udało nam się ukryć plik tekstowy i graficzny w zwykłym dokumencie Worda!

Ukrywanie plików: archiwum 7z w pliku JPG

Sztuczka, którą teraz pokażę jest o wiele mniej wyrafinowana i prostsza do wykonania niż manewr z plikiem Worda. Opiera się na dopisaniu archiwum 7z na końcu pliku ze zdjęciem JPG. Program graficzny rozpozna po nagłówku fragment pliku dotyczący zdjęcia, po czym poprawnie go wyświetli. Natomiast archiwizator będzie szukał w pliku fragmentu, który potrafi rozpoznać. Gdy na taki trafi, rozpoznaje go jako swój plik i rozpoczyna pracę, pomijając początek pliku który opisuje zdjęcie.

Przygotuj sobie jakieś zdjęcie JPG i skompresowane archiwum (może być dowolnego rodzaju, .7z, .rar, .zip – nie ma to żadnego znaczenia). Umieść je w jednym folderze. Otwórz konsolę cmd i za pomocą polecenia cd przejdź do tego folderu.

Wydaj polecenie:

Ukrywamy pliki w jpg
Ukrywamy pliki w jpg

Palac.jpg – zdjęcie JPG, do którego chcemy doczepić nasze archiwum.

+ SnakeProject.zip – oznacza, że chcemy doczepić plik SnakeProject.zip na końcu pliku palac.jpg

Result.jpg – nazwa i rozszerzenie pliku, do którego mają zostać zapisane rezultaty pracy polecenia copy.

Widzimy że plik JPG powiększył się do nienaturalnych rozmiarów
Widzimy, że plik JPG się powiększył do nienaturalnych rozmiarów

Okno właściwości pliku wygląda tak jak na screenie powyżej. Jak widzimy, sztuczkę dosyć łatwo rozpoznać. Rozmiar tego zdjęcia jest na pewno podejrzanie duży w stosunku do najczęściej spotykanych przypadków. Ale wszystko działa prawidłowo. Plik możemy otworzyć dwuklikiem jako zdjęcie. Każdy program poradzi sobie z tym bez najmniejszych problemów. Jeśli chcemy dostać się do ukrytego wewnątrz archiwum, musimy otworzyć plik jako archiwum. Wybieramy opcję Otwórz za pomocą albo zmieniamy rozszerzenie pliku na zip/rar/7z (zależnie od tego, jaki rodzaj archiwum podpiąłeś pod plik).

Ukrywanie plików w strumieniach NTFS

Od czasów Windows 2000, New Techology File System, potocznie nazywany NTFS, wspiera coś takiego, co zwie się „Alternate Data Streams”. Ten „feature” NTFS-a nie jest powszechnie używany i mało kto o nim wie. W sumie został wprowadzony po to, aby zapewnić kompatybilność z apple’owym HFS. Dzięki temu w teorii można było łatwo kopiować pliki między jednym systemem plików a drugim.

Spróbujmy utworzyć plik tekstowy zawierający ADS. Nie jest to trudne, ale potrzebujemy wsparcia konsoli.

Otwórz cmd i przejdź do jakiegoś folderu, w którym chcesz zapisać wyniki eksperymentów. Wydaj następujące polecenie:

Tworzymy zwykły plik tekstowy

Z pewnością się domyślasz, że polecenie to utworzy zwyczajny plik tekstowy. Zapisz w nim cokolwiek. To będzie nasza „jawna treść”.

Teraz dodajmy ukryty strumień. Polecenie niewiele różni się od poprzedniego. Spójrz na screen:

Tworzymy ukryty strumień

System po raz kolejny zapyta, czy chcesz utworzyć nowy plik, gdyż ten nie istnieje. Odpowiedz twierdząco. Wprowadź jakąś treść w pliku, po czym zapisz zmiany. Super! Właśnie utworzyłeś tajny strumień!

W ADS możemy umieszczać nie tylko pliki tekstowe. Mogą to być także zdjęcia, a nawet pliki wykonywalne.

Jak wykryć pliki, które zawierają „alternatywne strumienie danych”? Niestety, jest to dosyć proste. Wystarczy wydać w konsoli polecenie dir z przełącznikiem /r. Ta kombinacja ujawni nam wszystkie strumienie przypisane do danego pliku. Wynik jest przedstawiony na poniższym screenie.

Wykrywamy tajne strumienie
Wykrywamy tajne strumienie

Czy to wszystko?

Powyższe metody są raczej zabawą niż realnym zagrożeniem. Choć oczywiście wszystko zależy od punktu widzenia. Jeśli tworzylibyśmy jakieś malware, powyższe techniki mogą wprowadzić w błąd oprogramowanie antywirusowe, a co za tym idzie przedłużyć żywot naszego szkodnika. Nie mniej mam nadzieję, że nie będziesz wykorzystywał tej wiedzy do tak okrutnych i niecnych celów J.

W tym krótkim artykule celowo pominąłem jedną metodę, która wydaje się być najciekawsza. Opiera się ona na ukrywaniu informacji w obrazkach bmp. Jednakże, w przeciwieństwie do powyższych metod, nie zmienia ani rozmiaru pliku ani jego atrybutów. Wprowadza jedynie trochę szumów, które zauważy jedynie osoba z sokolim wzrokiem. Co to za metoda? Dowiesz się niebawem.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *