外部リソースからの写真-善か悪か?

ほとんどのマルチサイトサイトでは、外部リソースから画像をホストできます。 これは、普通のユーザーだけでなく、あなたに関する情報を収集する人々にとっても非常に便利で便利な機能です。



兄貴はあなたを見ています



最も効果的な方法に関する詳細を知りたいですか? 画面の解像度、現地時間を決定し、いくつかのパスワードを変更するために小さな画像を使用する方法を疑問に思っていますか? 猫へようこそ!
内容:




何を使用しますか




アクティブなメソッドは検出可能ですが、目的の結果を得ることができます。



統計

受動的方法



各ユーザーをバルクから分離し、それらの監視を開始できるようにするためのすべての情報を取得する必要があります。 最下位レベルでは、これはIPプロトコル 、次にTCP 、場合によってはSSL / TLS 、そしてHTTPです。



従来、この分野ではトラフィック分析が使用されてきました。
Mozilla Firefox Google Chrome(RU)
GET /image.png HTTP/1.1 Host: habrahabr.ru User-Agent: Mozilla/5.0 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://habrahabr.ru/ Connection: keep-alive : \r\n
      
      





 GET /image.png HTTP/1.1 Host: habrahabr.ru Connection: keep-alive User-Agent: Mozilla/5.0 Accept: */* Referer: http://habrahabr.ru/ Accept-Encoding: gzip,deflate,sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3 : \r\n
      
      





これらは、同じページから同じ画像への、ただし異なるブラウザからの2つのリクエストです。 ご覧のとおり、ヘッダーの内容が異なるだけでなく、その順序も異なります。 ブラウザのバージョンも異なるため、 User-Agentのローカライズと意図的な変更を想定できます。



大きなファイルの場合、タイムスタンプを読み取ることで情報転送の速度を決定できます。 スピードとIPアドレスにより、ソーシャルエンジニアリングを個人に適用するのに役立つプロバイダーと料金を見つけることができます。



ボット
サイトの表示をエミュレートし、ブラウザエンジンに基づいていないほとんどのボットは、小文字のホストヘッダーを提供しません。このタグは、管理者の助けを借りずに悪役をすばやく検出するのに役立ちます。



 <img src="http://HABRAhabr.ru/image.png" alt="  ">
      
      





アクティブメソッド



今、私たちは今、楽しい部分に移っています。このテクニックを最大限に活用してみませんか?



クッキー


サーバーとクライアントの間でデータを転送するためのこの技術について聞いたことがあるはずです; IEバージョン2はそれをサポートし始めました。 Mozilla Firefox 22が最近近づきました。サードパーティドメインからのCookieインストールはデフォルトでブロックされていますが、他のブラウザを使用するすべての人を待っています。 ベクトルを使用する:





最初の段落では、すべてが明確です-長い有効期間でCookieを設定し、その中に一意の識別子を書き込んでから、すべてを読み取ります。



2番目の項目は最初の項目と同じくらい簡単です。有効期限を設定しない場合、Cookieはブラウザーが初めて閉じられるまで有効です。したがって、最初のCookieのみが要求されます。



ウィキペディアのデータでは、各ブラウザーがデータ量に制限を設定し、さらにバージョンによってバージョンが変わることがあるため、別のドメインから別の画像を公開すると、正しい定義の可能性が高くなると述べています。



4番目の段落には、ある程度の努力が必要です。



 Set-Cookie: name=VALUE[; expires=DATE][; path=PATH][; domain=DOMAIN_NAME][; secure][; HttpOnly]; Cookie: name=VALUE;
      
      





サーバーはSet-Cookieを使用してCookie設定し 、必要なパラメーターを設定して、すべてをブラウザーに転送します。 ブラウザはパラメータを保存し、データのみが返されます-エレガントでシンプル。



ここで最も興味深いのは日付フィールドで、 Wdy、DD Mon YYYY HH:MM:SS GMTの形式で設定されます。 つまり、場所に関係なく同じですが、システム時刻が同期されていないか、異なるタイムゾーンが設定されている場合、違いが発生します。



注: これらはすべて、サーバーが日付ヘッダーとその時刻を渡さなかった場合にのみ機能します-ブラウザーはなんとかする必要があります。







コントロールと2つの異なるバージョンのCookieの2つのバージョンを2時間の差で設定し、 Locationを介してリダイレクトすることで次のユーザーの応答を確認します。 次に、必要に応じて、時間を1日以上変更した場合に範囲を狭めたり広げたりして、範囲が2番目のマークに達します。その後、サーバーとクライアントの時間の関係を判断し、次回に人を特定できます。



キャッシュ



ブラウザキャッシュを使用すると、Cookieが無効になっている場合でもまったく同じことができます。



エタグ
画像が送信されると、一意のハッシュ文字列を持つEtagヘッダーが提供されます。

 Etag: 1aa69b6c6273a8
      
      





後続のサーバー要求は次のようになります。

 If-None-Match: 1aa69b6c6273a8
      
      





サーバーには、画像自体を転送せずに304 Not Modifiedのステータスを与える権利があります-ブラウザはキャッシュからそれを取得します。



最終変更
Etagの古いアナログも追跡に使用できます。 ドキュメントが最後に変更された日付を示します。

 Server => Last-Modified: Fri, 02 Jan 1970 10:17:36 GMT Client => If-Modified-Since: Fri, 02 Jan 1970 10:17:36 GMT Server => HTTP/1.1 304 Not Modified
      
      





期限切れ
文書の関連性の有効期限が切れる日付を示します。 時間の定義のより長い類似物。



 Expires: Fri, 02 Jan 1970 10:17:36 GMT Cache-Control: must-revalidate
      
      





タイトルの詳細はここで説明されます



リンクヘッダー



リンクHTTPヘッダーは<link>タグと同等です。 ヘッダーで直接RSSフィード、スタイルシートなどへのリンクを指定できます-これはチャンスです。HTMLを画像に含めることができないためです(Internet Explorerの古いバージョンを除く )。



 Link: <./style.css>; rel=stylesheet
      
      





最新のCSS 3機能( メディアクエリ)を使用すると、たとえば画面解像度などの条件を介してデータを読み込むことができます。

 @media all and (device-width: 1024px) { html { background: url("./w1024.jpg"); } } @media all and (device-height: 768px) { body { background: url("./h768.jpg"); } }
      
      





この方法は常に機能するとは限りません-画像は、それらに対応するタグがある場合にのみダウンロードされます。WebKitのサポートはなく、構文は条件に制限があります。 しかし、いくつかの構成では動作します!



無限のGIF



フレーム数はアニメーションGIFの形式では示されないため、ブラウザは画像を表示した後、ファイルの終わりに関する信号ビットを受信するまでサーバーからの新しいフレームを待機します。 つまり、サーバーは、GIFの開いているチャネルを介してブラウザーにメッセージをプッシュできます。



(c) アリザー


habrahabr.ru/post/151538およびhabrahabr.ru/post/180877を参照



さらに、エンドレスGIFを使用して、ユーザーがページで費やした時間を追跡できます。ネットワーク設定の変更、プロキシサーバー、VPNサーバーの切り替え後、タブが閉じられるか、ハングするとソケットが閉じられます。



ヘッダーを更新



このタイトルは( Linkとは異なり)標準では設定されていませんが、ほぼどこでもサポートされています。



 Refresh: 15; url=http://habrahabr.ru/images/bg-multilogo.png
      
      





ユーザーがページをロードし、タブを閉じずにVPNとプロキシを切断すると、一定の期間をリダイレクトできます-彼のIPはポケットに入れられます。



基本認証



この方法は非常に古く、私は主張しません。ヘッダーでも機能し、依然として関連しています。 そして、誰もそれを探すことのない待ち伏せを見つけるために適切な人々にのみフォームを配ると、不可能な作業になります。



材料: habrahabr.ru/post/140054



CSRF攻撃



CSRFは、HTTPプロトコルの欠陥を悪用するWebサイト訪問者への攻撃の一種です。 被害者が攻撃者によって作成されたWebサイトにアクセスすると、攻撃者に代わって、何らかの悪意のある操作(攻撃者のアカウントへの送金など)を実行する別のサーバー(支払いシステムサーバーなど)にリクエストが密かに送信されます。 この攻撃を実行するには、リクエストの送信先サーバーで被害者を承認する必要があります。このリクエストでは、攻撃スクリプトによって無視または改ざんできないユーザーからの確認は必要ありません。



https://ru.wikipedia.org/wiki/Interface request_fake





URLが厳密にフィルタリングされている場合、そのような攻撃が不可能であることを意味しません。 同じLocationヘッダーを介して、悪意のあるリンクを送信してパスワードを変更したり、メッセージなどを送信したりできます。



 Location: http://www.ru/panel/password?newpass=qwerty&newpass2=qwerty&submit=ok
      
      







GETメソッドのみを使用することも可能です。そのような脆弱性は今日広く普及しています。 多くの場合、ログには安全ではあるが不快なCSRFがあるため、しばらくサイトを無効にすることができます。



低レベル、エラー、その他の方法





グレーIP(内部ネットワーク)定義



OpenVPNテクノロジーでは内部ネットワークが広く使用されており、サーバーに到達するTTLとパケットを配信する際の可能な最小値を測定することにより、その存在を判断すると考えられていました。



メソッドはすぐに反論されました-リソースへのパスとリソースからのパスが一致しない場合があり( マテリアル )、メソッドは正しい答えよりも多くの失敗を与えます。



ただし、 デフォルトでは、LinuxのTTLは64、Windowsでは128のアプリケーションがまだあります。このような大きな違いは、場合によってはリモートホストのOSを決定するのに役立ちます。



ファイアウォールの使用を決定する(Winの場合)



この方法は非常に簡単ですが、 カスペルスキーインターネットセキュリティなどの製品が広く使用されているWinシステムにのみ適しています。 ブロッキングを追跡するために画像にウイルスコードを配置することは難しくありません。リソースが長時間ブロックされる可能性があり、画像がキャッシュに置かれることはありません。



ホストスキャン



これは必要かもしれませんが、可能な限り注意する必要があります-そのようなアクティビティが検出されたとき、何も良い輝きはありません。



おわりに



独自のWebサイトを持っている場合は、考えてみてください。ただし、1つの機能のために多くの問題が必要ですか?



UPD1:

コメントの baadf00dは、DNSリークを思い出しました(使用しているDNSサーバー、場合によってはプロバイダーを特定できます)。



Google Public Servers:

 8.8.8.8 8.8.4.4
      
      



Firefoxのセットアップ(約:config):
 network.proxy.socks_remote_dns = 1
      
      






All Articles