web-dev-qa-db-ja.com

リクエストヘッダーを読み取ってTorプロキシを検出する

私はセキュリティ分野の初心者です。 HTTPリクエストヘッダーとレスポンスヘッダーについてさらに詳しく調べようとしたところ、 (このWebサイト に遭遇しました。これは、送信されるリクエストヘッダーの詳細な分析を提供します)システムからサーバーへ。ウェブサイトによると、ViaまたはX-Forwarded-Forヘッダー。クライアントがプロキシを使用しているかどうかを判断できます。プロキシを使用せずに ウェブサイト にアクセスすると、これらのヘッダーの両方が存在しない(予期された)として表示されました。しかし、このウェブサイトに再度アクセスしたとき、今回はTor Browserを使用しましたが、それでも2つのヘッダーはありませんでした!プロキシの兆候はまったくありません。

Torの動作について非常に曖昧な考えがありますが、Tor Browserを使用しているときにヘッダーがプロキシを検出できない理由がわかりません!誰でも同じ理由を素人の言葉で説明できますか?また、Torがこのレベルの匿名性を提供する場合、Torプロキシを検出する他の方法はありますか?

14
Rahil Arora

Torは、匿名の透過HTTPプロキシとして要求を繰り返すだけです。つまり、通常のプロキシヘッダー(ViaX-Forwarded-Forなど)を添付しないか、他の方法でHTTP要求または応答を変更します( "タマネギは、Torネットワークを通じてルーティング、暗号化、および復号化されます"

Torネットワークを介して接続しているクライアントの識別に関しては、Webサーバー側でそのようなクライアントを検出する最も簡単な方法は、Tor出口ノードを公開するパブリック TorDNSELサービス をクエリすることです。

TorDNSELは、Tor出口ノードのアクティブなテスト、DNSベースのリストです。 Torは終了ポリシーをサポートしているため、ネットワークサービスのTor終了リストは、IPアドレスとポートの関数です。従来のDNSxLとは異なり、サービスはクエリでその情報を提供する必要があります。

以前のDNSELは、Torのネットワークディレクトリで出口ノードのIPアドレスを取得していましたが、この方法では、ディレクトリで出口アドレスをアドバタイズしないノードを一覧表示できません。 TorDNSELはこれらのノードを積極的にテストして、より正確なリストを提供します。

このTorDNSELクエリは自動化できます。 Webアプリケーションでは、多くのプログラミング言語のサンプルコードがインターネットで見つかります。たとえば、PHPでこれを行う方法を示す これはサンプルコードです です。

このTorチェックをWebアプリケーションに実装する場合は、しばらくの間ローカルでクエリ結果をキャッシュすることをお勧めします。その間、出口ノードが変化しないことを期待して、常に同じクエリを繰り返して追加するのではなく、あなたの応答に追加の遅れ。


追加して編集:このTor出口ノードのクエリを最適化し、TorDNSELを常に使用しないようにするもう1つの方法は、 DNS逆引き参照を行うことです 事前に確認し、主要な既知のTor出口ノードホストのリストと照合してください。多くの主要な出口ノードホストは決して変更されず、同じまたは類似のrDNS名を使用して多数の出口ノードを操作できるため、これは実際には非常に効果的です。たとえば、正規表現、LIKE SQL演算子などを使用して、rDNS名をリストに一致させることができます。いくつかの既知のTor出口ノードホスト(実際の例)は、これらの名前と一致します。

tor[0-9].*
tor-exit*
*.torservers.*
*.torland.is

これは私が使っているリストです。ご覧のように、完全とはほど遠いですが、それは開始点であり、簡単に一致するパターンに従うようにエントリを検出したら、いつでもエントリを追加できます。これは単にクエリを最適化することを目的としているため、完全に完了する必要はありませんが、一致するたびに確実にスピードアップします。お役に立てれば!

11
TildalWave

X-Foreward-For-headerは、オプションで(そして意図的に)プロキシによって送信されます。プロキシがユーザーの身元を隠そうとする場合、このヘッダーは送信されません。

Onion Networkは、ユーザーのIDを非表示にする目的で特別に設計されています。ユーザーの身元を示す可能性のあるIPアドレスやその他のデータが明らかになることはありません。

8
copy

ここに小さなメモ:

プロキシサーバーに関するウィキペディアの記事 を確認しているときに、プロキシサーバーがHTTP_VIA、HTTP_X_FORWARDED_FOR、HTTP_FORWARDEDなどのヘッダー行を使用していない場合でも、Webサイトが疑わしい可能性があることがわかりましたプロキシifクライアントから送信されたパケットには、匿名性の高いプロキシサーバーを使用しなかった前回の訪問からのCookieが含まれています。

1
Rahil Arora

これは、Firefoxリソースバンドルで検出できます。 JavaScriptプログラミングに注意する必要があります。

resource:// URIスキームは、Firefoxが内部モジュールおよび拡張機能からディスク上のリソースを呼び出すために使用されます。

ただし、これらのリソースの一部は、任意のWebページに含まれ、スクリプトタグを介して実行される場合もあります。 Mozillaの開発者は、リソースの一部をユーザーが明らかにしたくないことを明らかにできるという事実にもかかわらず、そのリソースをフィンガープリントのベクトルと見なしていません。たとえば、組み込み設定ファイルの違いは、Torの背後にいる場合でも、Windows、Linux、またはMacを使用しているかどうかを明確に示します。

Torブラウザで次のURLを試してください: https://www.browserleaks.com/firefox

0
Zigri2612