web-dev-qa-db-ja.com

Webサイトは、クライアントが使用するDNSサーバーをどのようにして知るのですか?

「DNSリークテスト」をしていると主張するウェブサイトがあります。 DNSリークについてはあまり気にしませんが、興味があります。Webサイトは、使用しているDNSサーバーをどのようにして知るのですか? HTTPリクエストで送信されたヘッダーだと思いましたが、見つかりませんでした。

ウェブサイトの例: https://www.dnsleaktest.com/

編集:他にもたくさんあります グーグル検索で見つかりました。

28
Craigxyz

これは、http以外のプロトコルを使用しても実行できるDNS解決策ですが、この場合は、ランダムなホスト名とhttp経由のゼロピクセルイメージを使用して実行されます。

ページのソースコードを見ると、いくつかのURLに対して要求された一連のランダムな10文字のサブドメインが表示されます。これらは非常にユニークなホスト名であり、コンピューターやISP、さらに重要なことにはDNSプロバイダーがローカルDNSにキャッシュします。

これらの一意のURLのホスト名がDNSプロバイダーにヒットすると、テスト会社のWebサイトからホスト名を要求し、所有者のIPアドレスを関連付けて一意のDNS要求を行い、要求を行った会社名をクイックルックアップで通知します。

すべて同じドメインのランダム化されたホスト名のリスト

ixc9a5snm4.dnsleaktest.com
rhl50vm36o.dnsleaktest.com
4xov3y3uvc.dnsleaktest.com
2n5t99gbzp.dnsleaktest.com
6mzklkved4.dnsleaktest.com
d6z20e9c2x.dnsleaktest.com

次のhtmlにあります(ホスト名は異なります)

<img width=0 height=0 src="https://ixc9a5snm4.dnsleaktest.com">.
<img width=0 height=0 src="https://rhl50vm36o.dnsleaktest.com">.
<img width=0 height=0 src="https://4xov3y3uvc.dnsleaktest.com">.
<img width=0 height=0 src="https://2n5t99gbzp.dnsleaktest.com">.
<img width=0 height=0 src="https://6mzklkved4.dnsleaktest.com">.
<img width=0 height=0 src="https://d6z20e9c2x.dnsleaktest.com">.
33
Trey Blalock

私はこれについて知りませんでした。非常に興味深い。それはそれが制御する長いランダムなサブドメインへの接続を生成しようとすることによって機能するようであり、それはおそらく呼び出し側のDNSサーバーからのドメイン解決要求を照合することができます。

List of requests initiated by the browser that failed 図1:失敗したブラウザによって開始されたリクエストのリスト


内部的には、ゼロサイズの画像ジェネレータを使用した標準の追跡です。

    <pre class="progress">Query round Progress... Servers found
        <br/>&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <img width=0 height=0 src="https://1k9oraud8h.dnsleaktest.com">.
        <img width=0 height=0 src="https://dajo0hwg9c.dnsleaktest.com">.
        <img width=0 height=0 src="https://6crg9z68gj.dnsleaktest.com">.
        <img width=0 height=0 src="https://nwitgnyo7r.dnsleaktest.com">.
        <img width=0 height=0 src="https://z3yine4a7p.dnsleaktest.com">.
        <img width=0 height=0 src="https://2tvxmp2yd5.dnsleaktest.com">.
    </pre>

興味深いことに、私はデフォルトでpiwik(分析エンジンを使用)をブロックしているため、すべての要求は失敗しましたが、DNSサーバーは引き続き識別されました。つまり、HTTPトラッカー以外にも依存しているということです。

@ファルコの質問に対処するための説明を追加。

サブドメインが存在しないため、すべてのユーザーが画像を読み込めない可能性があります。したがって、以下のスクリーングラブからわかるように、リクエストは決して生成されません(無効なDNSルックアップ)。私の場合の唯一の違いは、追跡IDを受信しないことです。

The domain name never resolves 図2:ドメイン名はどのサブドメインでも解決されません


Hence the HTTP requests are never made by the browser 図3:したがって、HTTP要求がブラウザによって行われることはありません


バックエンドにアクセスできないので、舞台裏で何が起こっているのかを推測しています。おそらく、DNSサーバーにフックがあり、それぞれのソースIPを書き込みます DNS質問 受信したDBに(おそらく、このスレッドは、データを保存する前にホスト名とISPルックアップも行います)。これはDNSの質問であり、具体化されたHTTPルックアップにはなりません。中央のWebサーバーがしなければならない唯一のことは、私のブラウザーに関連付けられているsuddomainsに対応する行を返すことです。

最も簡単な方法は、追跡IDと1対1で対応することです。通常、これはpk_idのような名前のpiwikトラッキングCookieを送信し、末尾にpiwik.phpへの追加のリクエストがあり、トラッキングの詳細がたくさんあります。私の場合、このCookieは確立されず、追加のホップは発生しません。他のセッションの識別が行われているのはわかりません。コミュニティが掘り下げていない場合は、週末にそれを詳しく調べます。

13
Jedi