スプーフィングされたIPが実際の既存のリモートIPであり、TCP 3ウェイハンドシェイクがサーバーで行われたことが判明した場合。
MiTMマシンは、IPが偽装されたパケットをサーバーに送信します。実際のIPは、サーバーから実際のIPに返送されたACKを確認し、サーバーからの応答パケットを受信して確認しますか?
編集:上記の簡単な説明は明確ではなかったので、ここではできるだけ説明的にします。
クライアント[〜#〜] a [〜#〜]実際のIPがサーバーに接続しました[〜#〜] s [〜#〜]完了TCP通常の接続と同様に、3ウェイハンドシェイクとデータパケットの転送。攻撃者マシン[〜#〜] m [〜#〜]は、IPアドレスを偽装したパケットを送信します[〜#〜] a [〜#〜]そして、このパケットがサーバーによって受信されると、ACKフラグ/フィールドを[〜#〜] a [〜# 〜]。ACKフラグ/フィールドのこの部分が間違っている場合は、ここで修正してください。
ここで私の質問は次のとおりです。
まず、すべてのTCPパケットには、ランダムな位置から始まる順次識別子があります。( この説明で簡単に説明します )したがって、攻撃者が(既存の接続をハイジャックしようとする)(non -SYN
)パケットをスプーフィングしている場合、それらのスプーフィングされたパケットはすべて無視されるか拒否されます(パケットのタイプ)シーケンスから外れるためです。
したがって、攻撃が成功するためには、接続を盗聴して、シーケンシャル識別子が何であるかを知る必要があります。
シーケンスを決定した後。 (パッシブ盗聴による)サーバーにシーケンス内のデータを受け入れることは簡単です。
クライアント[〜#〜] a [〜#〜]と実際のIPが接続されました...今、攻撃者のマシン[〜#〜] m [〜#〜]は、IPアドレスを偽装したパケットを送信します[〜#〜] a [〜#〜]... ACKフラグ/フィールドサーバーSからAに受け入れられますか?
確認応答パケットは、送信されたデータパケットと同じ連続した識別子を持ちます。
クライアント[〜#〜] a [〜#〜]は、データが攻撃者から送信されたため[〜#〜] m確認応答を受け入れません[〜#〜]。 (したがって、クライアントはまだ承認を予期していません)
(もちろん、これは攻撃者に真のMiTMなどのより多くのオプションを与えるアクティブ(非パッシブ)攻撃であった場合を除きます)
ただし、サーバーは引き続きデータを受け入れます。
クライアントがスプーフィングされたデータパケットの確認応答を受け入れない場合でも、接続は開いたままになります。クライアントは別のデータパケットを送信することもできます。サーバーは2番目のデータパケットが同じ連続した識別子であるため無視しますが、クライアントへの確認応答を繰り返します。私はこれについて100%確信がないので、念のため その点に関する特定の質問 を投稿しました。
[〜#〜] m [〜#〜]が送信したパケットは、[〜#〜] a [〜#〜][〜#〜] s [〜#〜]から[〜#〜] a [〜#〜]への応答を取得します。この応答は[〜#〜] a [〜#〜]によって受け入れられますか?
はい、入力ストリームと出力ストリームは順次識別子を個別に増分します。
TLSなどの安全な接続を使用すると、このようなTCP=なりすましが非常に簡単に検出されるため、通常はこれが推奨されるソリューションです。
質問は少し不明確ですが、私はいくつかの仮定をして何かに答えようとします。
Aが攻撃者で、Rが実際のIPであると仮定します。 Sはサーバーです。
覚えておくべきこと。
だからあなたの質問に来て、
システムが予測可能なTCPシーケンス番号を生成する場合、なりすましが可能です。