Windows 10のDNSリゾルバーの機能とDNSリーク

画像



TL; DR: Windows 10のDNSリゾルバーは、システムが認識しているすべてのDNSサーバーアドレスにリクエストを並行して送信し、リクエストをインターフェイスにバインドし、より高速な回答を使用します。 ローカルセグメントからDNSサーバーを使用する場合、この動作により、VPNを使用している場合でも、ISPまたはWi-Fiポイントを持つ攻撃者がDNSレコードをスプーフィングできます。



Windowsの最新バージョンは、アクティブなVPNユーザーに頭痛の種を追加します。 Windows 7までのDNSリゾルバーは予測可能な動作を備えており、他のすべてのOSと同様に、一般にDNSサーバーの優先順位と優先順位の順にDNSサーバーにクエリを実行しました。 これにより、VPNトンネル内のDNSサーバーが時間どおりに応答しないか、エラーで応答し、一般にそのような明白な問題ではなかった場合にのみ、いわゆるDNSリーク(VPN接続時の外部インターフェイスを介したDNSクエリのリーク)が作成されました。



Windows 8

Windows 8のリリースで、MicrosoftはDNSリゾルバーに非常に興味深い機能を追加しました。これは、Googleからわかるように、まったく気付かれていませんでした:スマートマルチホーム名前解決。 この機能が有効になっている場合(デフォルトで有効になっている場合)、OSはすべてのネットワークインターフェイス上の既知のすべてのDNSサーバーにリクエストを並列に送信し、リクエストをインターフェイスにリンクします。 これはおそらく、何らかの理由で割り当てられたタイムアウト(デフォルトでは1秒)で応答できなかった場合に、優先DNSサーバーからの応答の待機時間を短縮するため、およびタイムアウト後すぐに、次に優先順位の高いサーバーから応答を返します。 したがって、Windows 8および8.1では、ルーティングテーブルでDNSクエリが許可されていれば、すべてのDNSクエリがインターネットインターフェイスを介して「リーク」し、ISPまたはWi-Fiポイントの所有者がどのサイトを訪問したかを確認できますインターネットインターフェイスを介してサーバー。 ほとんどの場合、この状況は、ローカルセグメント内でDNSサーバーを使用している場合に発生します。このようなDNSは、ホームルーターの99%を発生させます。



この機能は、レジストリブランチに追加することで無効にできます。

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DNSClient





次の名前のDWORD型パラメーター:

DisableSmartNameResolution





また、ゼロ以外の値は、古いリゾルバーの動作を返しました。



Windows 10

Windows 8および8.1は、パブリックインターフェイスを介してユーザーの知らないうちにすべての要求を送信しましたが、攻撃者が偽のサイトにリダイレクトするような方法でDNS回答をリダイレクトすることは問題でした。 OSは、優先DNSサーバー(暗号化されたトンネル内のサーバー)から正しい回答を取得できない場合にのみ、偽装された応答を使用します。

Windows 10の登場により、すべてが変わりました。現在、OSはすべてのインターフェイスを介してリクエストを送信するだけでなく、より速くなった回答も使用します。 さらに、Windows 8.1で機能していたSmart Multi-Homed Name Resolutionを無効にする方法は、新しいバージョンでは機能しません。

問題を解決するための唯一の許容できる(最も信頼できる方法ではありません)方法は、ローカルセグメントの外部のインターネットインターフェース、たとえば有名な8.8.8.8にDNSをインストールすることですが、OpenVPNの場合は役に立ちません。 OpenVPNの場合、唯一の(かつ見苦しい)ソリューションは、スクリプトを使用してインターネットインターフェイスでDNS一時的に無効にすることです。



UPD:記事の前半で、OpenVPNにはdef1



なしでredirect-gateway



パラメーターを使用することをお勧めしました。 IPアドレスが更新されるたびにWindowsがDHCPサーバーからデフォルトルートを返し、しばらくするとすべてのトラフィックがVPNをバイパスし始めます。 現時点では、美しいソリューションは存在しません。



UPD2: プラグインを作成しました



UPD3: Windows 10は、Creators Updateから始まり、既知のすべてのDNSサーバーアドレスにDNSクエリをランダムなインターフェイスから順番に送信するようになりました。 特定のDNSの優先度を上げるには、インターフェイスメトリックを減らす必要があります。 OpenVPN用のパッチを作成しました。2.4.2に含まれることを願っています: https : //sourceforge.net/p/openvpn/mailman/message/35822231/



UPD4: OpenVPN 2.4.2に含まれるアップデート。



All Articles