web-dev-qa-db-ja.com

TCP 3ウェイハンドシェイクが行われた場合の実際のIPによるIPスプーフィング

スプーフィングされたIPが実際の既存のリモートIPであり、TCP 3ウェイハンドシェイクがサーバーで行われたことが判明した場合。

MiTMマシンは、IPが偽装されたパケットをサーバーに送信します。実際のIPは、サーバーから実際のIPに返送されたACKを確認し、サーバーからの応答パケットを受信して​​確認しますか?

編集:上記の簡単な説明は明確ではなかったので、ここではできるだけ説明的にします。

クライアント[〜#〜] a [〜#〜]実際のIPがサーバーに接続しました[〜#〜] s [〜#〜]完了TCP通常の接続と同様に、3ウェイハンドシェイクとデータパケットの転送。攻撃者マシン[〜#〜] m [〜#〜]は、IPアドレスを偽装したパケットを送信します[〜#〜] a [〜#〜]そして、このパケットがサーバーによって受信されると、ACKフラグ/フィールドを[〜#〜] a [〜# 〜]。ACKフラグ/フィールドのこの部分が間違っている場合は、ここで修正してください。

ここで私の質問は次のとおりです。

  1. サーバーからのACKフラグ/フィールド[〜#〜] s [〜#〜][〜#〜] a [〜#〜]によって受け入れられますか?
  2. [〜#〜] m [〜#〜]によって送信されたパケットは、偽造IP [〜#〜] a [〜#〜]から応答を受け取ります- [〜#〜] s [〜#〜] to [〜#〜] a [〜#〜]。この応答は[〜#〜] a [〜#〜]によって受け入れられますか?
2
WCO

まず、すべてのTCPパケットには、ランダムな位置から始まる順次識別子があります。( この説明で簡単に説明します )したがって、攻撃者が(既存の接続をハイジャックしようとする)(non -SYN)パケットをスプーフィングしている場合、それらのスプーフィングされたパケットはすべて無視されるか拒否されます(パケットのタイプ)シーケンスから外れるためです。

したがって、攻撃が成功するためには、接続を盗聴して、シーケンシャル識別子が何であるかを知る必要があります。

シーケンスを決定した後。 (パッシブ盗聴による)サーバーにシーケンス内のデータを受け入れることは簡単です。

クライアント[〜#〜] a [〜#〜]と実際のIPが接続されました...今、攻撃者のマシン[〜#〜] m [〜#〜]は、IPアドレスを偽装したパケットを送信します[〜#〜] a [〜#〜]... ACKフラグ/フィールドサーバーSからAに受け入れられますか?

確認応答パケットは、送信されたデータパケットと同じ連続した識別子を持ちます。

クライアント[〜#〜] a [〜#〜]は、データが攻撃者から送信されたため[〜#〜] m確認応答を受け入れません[〜#〜]。 (したがって、クライアントはまだ承認を予期していません)

(もちろん、これは攻撃者に真のMiTMなどのより多くのオプションを与えるアクティブ(非パッシブ)攻撃であった場合を除きます)

ただし、サーバーは引き続きデータを受け入れます。

クライアントがスプーフィングされたデータパケットの確認応答を受け入れない場合でも、接続は開いたままになります。クライアントは別のデータパケットを送信することもできます。サーバーは2番目のデータパケットが同じ連続した識別子であるため無視しますが、クライアントへの確認応答を繰り返します。私はこれについて100%確信がないので、念のため その点に関する特定の質問 を投稿しました。

[〜#〜] m [〜#〜]が送信したパケットは、[〜#〜] a [〜#〜][〜#〜] s [〜#〜]から[〜#〜] a [〜#〜]への応答を取得します。この応答は[〜#〜] a [〜#〜]によって受け入れられますか?

はい、入力ストリームと出力ストリームは順次識別子を個別に増分します。


TLSなどの安全な接続を使用すると、このようなTCP=なりすましが非常に簡単に検出されるため、通常はこれが推奨されるソリューションです。

2
Bryan Field

質問は少し不明確ですが、私はいくつかの仮定をして何かに答えようとします。

Aが攻撃者で、Rが実際のIPであると仮定します。 Sはサーバーです。

覚えておくべきこと。

  • TCPパケットには、ハンドシェイクや他のパケットを含め、シーケンス番号と確認応答番号があり、通信相手がセッションを識別するのに役立ちます。
  • 3ウェイハンドシェイクは、各データパケットではなく、TCP接続の開始時にのみ発生します。

だからあなたの質問に来て、

  1. RはSとの既存の接続を持っています
  2. Aは、送信元アドレスとしてRのIPを使用してSYNをSに送信します。
  3. SはSYN-ACKをRに送信します。
  4. 構成に応じて、RはRSTで応答または応答しません。これは、受信したパケットのシーケンスと確認応答番号を、以前に開始した接続から予期されるものと一致させることができないためです。

システムが予測可能なTCPシーケンス番号を生成する場合、なりすましが可能です。

0
hax