DNSキャッシュポイズニング(別名カミンスキー攻撃)については、すでに多くの質問が寄せられていますが、質問に対する明確な答えは見つかりませんでした。
MITM攻撃を実行せずに、LANでDNSキャッシュポイズニングは可能ですか?
説明:
MITM攻撃中にDNSキャッシュポイズニングが発生する可能性があるのは正常です。
ただし、MIT攻撃(Kaminsky攻撃など)を実行せずに、LANをキャッシュポイズニングする手法を中心に展開するトピックはあまりありません。すべてのDNS要求/応答はプレーンなhttpであり、暗号化されていないので、それは可能だと思います。したがって、要求(トランザクションIDと正確なポートを含む)を確認し、「適切な」DNSサーバーが要求に応答する前に偽の応答を準備できるはずです。攻撃者はターゲットと同じLAN上にいるため、LANの外部にある別のDNSサーバーよりも応答がはるかに速くなります。
そのような攻撃は可能ですか? MITM攻撃中にDNSスプーフィングを実行する方が簡単であると理解しています。MITM攻撃を実行せずにDNS応答レースに勝つことにより、LAN上の有害クライアントをキャッシュすることが実際に可能かどうかを知りたいだけです。
注:これは、カミンスキー攻撃がどのように防止されたかについての質問ではありません(トランザクションIDとポートのランダム化)
はいこれは可能ですが、より優れた攻撃も可能です。
DNSキャッシュポイズニングはいくつかの方法で可能であり、Kaminsky攻撃はその1つにすぎません。カミンスキー攻撃が非常に注目された理由は、同じLAN上にいる必要がないためです。地球の途中でDNSサーバーを攻撃する可能性があります。
トラフィックが暗号化によって保護されていない限り、自分と同じLAN上のトラフィックを改ざんできることは十分に確立されています。ほとんどのツール(例: Android Network Spoofer )は、DNSポイズニングと組み合わせてARPポイズニングを使用します。これが最も信頼できる方法だからです。原則として、提案どおりにMITMなしでDNSポイズニングを実行できますが、競合状態に依存しているため、信頼性は低くなります。
そして、それが提案された攻撃についてあまり議論されない理由です。実際の状況では、より良いオプションがあります。
DNS要求と応答はHTTPではありません。彼らは... DNSです。 標準 を参照してください。ほとんどの場合、DNS要求と応答は [〜#〜] udp [〜#〜] を使用します:要求は単一IPパケットです、およびレスポンスもそうです。
UDPでは、各パケットは以下によって識別されます。
クライアントからのDNSリクエスト[〜#〜] c [〜#〜]からDNSサーバー[〜#〜] s [〜#〜]は[〜#〜] c [〜#〜]のIPアドレスをソースとして使用し、[〜#〜] s [ 〜#〜]の宛先としてのIPアドレス、ランダムポート値pをソースポート、53を宛先ポート(DNSの標準ポート値)サーバ)。 DNS応答は[〜#〜] c [〜#〜]のIPアドレスを使用します宛先として[〜#〜] s [〜#〜]のIPアドレスをソースとして、53をソースポートとして、p宛先ポートとして。クライアントは、宛先ポートとしてpを使用するため、応答を「正しい」として受け入れます。これは、使用されるものと同じpです。リクエストのソースとしてのクライアント。
偽のDNS情報をクライアントにフィードしたい攻撃者[〜#〜] c [〜#〜]は[〜#〜] cを知ることができます[〜#〜]のIPアドレスと[〜#〜] s [〜#〜]のIPアドレスであり、適切な推測ができるクライアントがリクエストを送信する瞬間。攻撃者の目標は、偽のDNS応答を送信し、DNSサーバー[〜#〜] s [〜#〜]からの送信であると主張しますが、それを含むことです。完全な盗聴アクセスがない場合、攻撃者はpパケットを見ることができないため、(= /// =)pの値を知ることができません。ただし、ポート番号の範囲は制限されています(ポート番号の範囲は0〜65535ですが、ランダムに割り当てられた番号の実際の範囲は小さく、関連するオペレーティングシステムによって異なります)。したがって、攻撃者はすべての可能なポートp値に対して、偽の情報をそれぞれ含む数千の偽装IPパケットを送信する可能性があります。クライアントは、正しいp値を使用するものを除いて、それらすべてをドロップします。
同じ概念をDNSサーバー間の通信間に拡張できます。これは、それらが互いに通信し、応答をキャッシュするためです。多くの場合、攻撃者はDNSからDNSへの交換をトリガーできるため、何千ものなりすましの応答を開始する正確なタイミングを許可できるため、攻撃者は簡単に引き離すことができます。彼が偽の情報をDNSサーバーに送ることに成功した場合、そのDNSサーバーは poisoned であると言われます。
この種のものは、盗聴機能を持たないローテクの攻撃者にとってさえ比較的簡単です。真の MitM クライアントとそのDNSサーバーの間、またはDNSサーバー。簡単にする理由は、UDPの使用です。これは、攻撃者が、狭い範囲に存在するランダムな送信元ポート以外のすべてを知っていることを意味します。 2つのDNSサーバーが [〜#〜] tcp [〜#〜] を介して互いに通信する場合、TCPフローに偽のデータを挿入するため、攻撃はより困難になります。 接続シーケンス番号を推測することを意味します。これは、32ビット範囲でランダムに選択されます。「数千のパケット」は「数十億のパケット」になりました。