poniedziałek, 16 października 2017

Ukrywanie wiadomości tekstowych w zdjęciach, czyli wstęp do steganografii

Jak przesłać w mailu wiadomość, która ma być niewidoczna dla osób postronnych np. szefa, czy żony?
Jeżeli bowiem umieścicie w mailu zaszyfrowany tekst, to już na pierwszy rzut oka będzie wiadomo, że macie coś do krycia. Podobnie rzecz się ma z zaszyfrowanym załącznikiem. Obydwa przykłady stanowią przykład kryptografii.

Czy jest więc sposób, aby przemycić informację tak, aby nie wzbudzać niczyich podejrzeń?
Tak jest taki sposób i nazywa się on steganografią.

Według Wikipedii jest to:
[...] nauka o komunikacji w taki sposób, by obecność komunikatu nie mogła zostać wykryta. W odróżnieniu od kryptografii (gdzie obecność komunikatu nie jest negowana, natomiast jego treść jest niejawna) steganografia próbuje ukryć fakt prowadzenia komunikacji.


Jak więc tą wiedzę przekuć na praktyczne wykorzystanie?
A może by tak dołączyć do maila zwykłe zdjęcie w którym będzie zawarta ukryta wiadomość? ;)

O co chodzi?
Istnieje możliwość dołączania wiadomości do plików ze zdjęciami. I z tego co sprawdziłem wiadomości na tyle pokaźnych, że można dzięki nim korespondować dość swobodnie, a nie tylko w ograniczonym do kilku słów zakresie.
Przejdźmy zatem do konkretów.

Jak w zdjęciu ukryć tekst?

Jest na to kilka sposobów. Najprostszym jest wyedytowanie pliku graficznego ze zdjęciem za pomocą edytora tekstu jak np. zwykły notatnik w Windows, czy zdecydowanie lepszy Notepad++. Na końcu  edytowanego pliku (ważne!) wystarczy dopisać wiadomość i zapisać plik, najlepiej pod nową nazwą.

Przedstawię to na przykładzie zdjęcia latarki Olight X7 Marauder.

Zdjęcie na którym będą przeprowadzane operacje ukrywania tekstu
Zdjęcie na którym będą przeprowadzane operacje ukrywania tekstu
W tym przypadku powyższe zdjęcie zapisano w dwóch formatach: jpg i png. Następnie obydwa pliki wyedytowano pomocy Notepad++ i na ich końcu została dopisana treść zaznaczona na poniższym screenie niebieskim kolorem (do ostatniej linijki zaznaczonej na czerwono odniosę się w dalszej części tekstu).

Na niebiesko treść wiadomości dodana do plików w formacie jpg i png. W czerwonej ramce ciąg znaków symulujący wirusa (Eicar test)
Na niebiesko treść wiadomości dodana do plików w formacie jpg i png. W czerwonej ramce ciąg znaków symulujący wirusa (Eicar test)
Następnie obydwa pliki zostały zapisane, po czym bez najmniejszego problemu otworzone w przeglądarce plików, tzn. bez żadnych widocznych artefaktów, czy błędów.
Taki plik możecie następnie komuś przesłać i poinformować go, że przy pomocy edytora tekstowego może odczytać ukrytą wiadomość.

Jeżeli powyższy sposób Wam nie pasuje, lub chcecie przekazać raptem kilka słów, to możecie to zrobić także poniższą komendą.
echo Potajemna notatka do ukrycia >> zdjecie_z_wiadomoscia.jpg
Komenda doklejająca wiadomość na końcu pliku graficznego
Komenda doklejająca wiadomość na końcu pliku graficznego

Przemyślenia

W tym miejscu chciałbym się jeszcze odnieść do ostatniego wiersza, który dodałem do pliku graficznego, a który zaznaczyłem czerwoną ramką. Zaznaczony ciąg to znaki symulujące obecność wirusa (tzw. plik testowy Eicar). Gdybyśmy normalnie chcieli go zapisać w pliku tekstowym w dowolnym miejscu komputera, zostałby on zaraz wykryty przez oprogramowanie antywirusowe i przeniesiony do kwarantanny lub usunięty. Z kolei dodanie tego ciągu do pliku graficznego nie spowodowało żadnej reakcji dlatego, że oprogramowanie antywirusowe ignoruje pliki graficzne, jako nieprzenoszące wirusów. Idąc zaś tym tokiem rozumowania, tak samo powinien zachować się system Data Leak Prevention (DLP), który ma zapobiegać wyciekowi informacji z firm.

Chcę wiedzieć więcej...

Przedstawiony wyżej sposób umieszczania informacji nie jest jedyny i wyłączny. Tak naprawdę wyżej zostało przedstawione bardzo proste zastosowanie techniki steganografii, które opiera się jedynie na założeniu, że osoba atakująca nie będzie wiedziała o jej wykorzystaniu. Gdy tylko posiądzie taką wiedzę, będzie w stanie odczytać przesyłane wiadomości, bowiem wiadomość jest przesyłana bez żadnego szyfrowania.

Doklejanie zaszyfrowanej wiadomości

Tutaj można sprawę skomplikować poprzez wklejanie tekstu już zaszyfrowanego. Jeżeli nie macie doświadczenia w szyfrowaniu tekstu, można do tego celu wykorzystać darmową stronkę Encrypt Easy. W ten sposób nawet jeżeli osoba atakująca posiądzie wiadomość o tym, że w pliku jest ukryta wiadomość, to i tak nie będzie w stanie jej odczytać. Poza tym, tak zaszyfrowana wiadomość zdecydowanie bardziej wtapia się w pozostałą część pliku stając się trudną do odróżnienia od reszty pliku. Jednak wprawne oko i tak zauważy, że część pliku od linijki 2759 wygląda inaczej...

Zdjęcie latarki z wstawionym zaszyfrowanym tekstem (poniżej wiersza 2759)
Zdjęcie latarki z wstawionym zaszyfrowanym tekstem (poniżej wiersza 2759)
Oczywiście jest to dodatkowa komplikacja całego procesu, ale trzeba przyznać, że w tym przypadku przesyłana treść zyskuje znacznie na bezpieczeństwie.

Ukrywanie zaszyfrowanej wiadomości w całym pliku graficznym

Jest jeszcze jeden sposób ukrywania treści w plikach graficznych. Polega ona na modyfikacji najmniej znaczącego bitu, a cytując ponownie za Wikipedią: Ostatni bit (np. wartości składowych piksela) zastępowany jest bitem (lub bitami) z wiadomości. Metoda ta daje się zastosować dla plików grafiki rastrowej oraz cyfrowo zapisanego dźwięku.

W odróżnieniu od wymienionych wcześniej sposobów, tutaj wiadomość jest "chowana" w treści całego pliku graficznego, a nie tylko doklejana na końcu, tak jak to było robione wcześniej.

Jednym z programów, które mogą w ten sposób ukryć wiadomość jest OpenStego. Może on ukrywać wiadomości zawarte w plikach tekstowych, a także szyfrować je przy pomocy algorytmów:

  • AES 128,
  • AES 256,
  • DES

Aplikacja OpenStego
Aplikacja OpenStego
Zakończenie operacji powoduje utworzenie nowego pliku zawierającego ukrytą informację. Jego zawartość możecie zobaczyć na poniższym screenie.

Dla osób, które nie miały styczności z porównywaniem plików napiszę, że po lewej stronie ekranu jest plik oryginalny, zaś po prawej plik z ukrytym słowem "daniel". Pozostawiłem także włączone ustawienia wtyczki, aby było wiadomo jaki kolor za jaką operację odpowiada oraz  minimapę (po prawej stronie ekranu), aby było widać jaką sieczkę pomiędzy tymi dwoma plikami spowodowało jedno tylko słowo.

Porównanie pliku oryginalnego do pliku z ukrytym słowem "daniel"
Porównanie pliku oryginalnego do pliku z ukrytym słowem "daniel"
Porównanie plików wykonano w programie Notepad++ z wtyczką compare-plugin.
Oczywiście wynikowe zdjęcie z ukrytą wiadomością, "na oko", nie straciło na jakości w stosunku do oryginału.
Procedura odwrotna, tj. ujawnienie wiadomości przebiegło bez najmniejszych problemów.

Podsumowanie

Jak widać, w zależności od potrzeb, wiadomości w zdjęciach można ukrywać na kilka sposobów. Od bardzo prostego, z którego można skorzystać praktycznie na dowolnym komputerze i bez zbytniego przygotowania, po korzystanie z zewnętrznego narzędzia. 
Myślę, że warto posiadać wiedzę, że przesyłanie zdjęć w mailach może ze sobą nieść także "drugie dno" :)

Brak komentarzy:

Prześlij komentarz

Bardzo proszę o zachowanie netykiety.