Wymiana tajnych wiadomości poprzez logi serwerowe

Zgodnie z definicją zawartą w Wikipedii, tajnik (dead drop) to narzędzie konspiracji, które służy do wymiany informacji lub przedmiotów pomiędzy osobami, które wykorzystują tajne miejsce. Chodzi o to, że ludzie nigdy się nie spotykają, ale wymieniają informacje, utrzymując bezpieczeństwo operacyjne.

Tajnik nie powinien przyciągać uwagi. Dlatego w świecie offline często używa się mało rzucających się w oczy przedmiotów: luźna cegła w ścianie, książka w bibliotece lub dziupla w drzewie.

W Internecie istnieje wiele narzędzi do szyfrowania i anonimizacji, ale sam fakt korzystania z tych narzędzi przyciąga uwagę. Ponadto mogą być one zablokowane na poziomie korporacyjnym lub państwowym. Co robić?

Programista Ryan Flowers zaproponował interesującą opcję — używać jako tajnika dowolnego serwera WWW,. Jeśli się nad tym zastanowić, to co robi serwer WWW? Odbiera zapytania, wydaje pliki i zapisuje logi. A on zapisuje w logach wszystkie zapytania, nawet niepoprawne,!

Okazuje się, że każdy serwer WWW pozwala na zapisanie w logach praktycznie dowolnej wiadomości. Flowers zastanowił się, jak to wykorzystać.

Proponuje następujące rozwiązanie:

  1. Bierzemy plik tekstowy (tajna wiadomość) i obliczamy jego hash (md5sum).
  2. Kodujemy go (gzip+uuencode).
  3. Zapisujemy w logach za pomocą celowo niepoprawnego zapytania 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ć te operacje w odwrotnej kolejności: dekodować i dekompresować plik, sprawdzić hash (hash można bezpiecznie przesłać przez otwarte kanały).

Spacje są zastępowane przez =+=, aby w adresie nie było spacji. Program, który autor nazwał CurlyTP, używa kodowania base64, jak w załącznikach e-mail. Zapytanie jest akceptowane z kluczowym słowem ?transfer?, aby odbiorca łatwo mógł je znaleźć w logach.

Co widzimy w logach w takim przypadku?

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 uzyskać sekretne wiadomości, należy przeprowadzić operacje w odwrotnej kolejności:

Zdalna maszyna

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

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

Proces można łatwo zautomatyzować. Md5sum się zgadza, a zawartość pliku potwierdza, że wszystko zostało poprawnie zdekodowane.

Metoda jest bardzo prosta. „Celem tego ćwiczenia jest tylko udowodnienie, że pliki można przesyłać przez niewinne małe żądania sieciowe, i działa to na każdym serwerze WWW z zwykłymi dziennikami tekstowymi. W zasadzie każdy serwer WWW jest schowkiem!”, pisze Flowers.

Oczywiście, metoda działa tylko wtedy, gdy odbiorca ma dostęp do logów serwera. Taki dostęp mają na przykład wielu dostawcy usług hostingowych.

Jak to wykorzystać?

Ryan Flowers mówi, że nie jest specjalistą w dziedzinie bezpieczeństwa informacji i nie będzie sporządzał listy potencjalnych zastosowań CurlyTP. Dla niego to po prostu dowód koncepcji, że standardowe narzędzia, które widzimy na co dzień, można używać w nietradycyjny sposób.

W rzeczywistości ta metoda ma szereg zalet w porównaniu do innych serwerowych „schowków” typu Digital Dead Drop lub PirateBox: nie wymaga szczególnej konfiguracji po stronie serwera ani żadnych specjalnych protokołów — i nie wzbudza podejrzeń u osób monitorujących ruch. Mało prawdopodobne, że SORM lub system DLP będą skanować URL na obecność skompresowanych plików tekstowych.

To jedna z metod przesyłania wiadomości poprzez pliki serwisowe. Można przypomnieć, jak niegdyś niektóre zaawansowane firmy umieszczały oferty pracy dla programistów w nagłówkach HTTP lub w kodzie stron HTML.

Wymiana tajnych wiadomości poprzez logi serwerowe

Idea polegała na tym, że taką „jajko niespodzianka” zobaczą tylko programiści webowi, ponieważ normalny człowiek nie przegląda nagłówków ani kodu HTML.

Wymiana tajnych wiadomości poprzez logi serwerowe

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster