web-dev-qa-db-ja.com

TCPパケットを既存の接続に挿入する

スキームを見てみましょう:

enter image description here

と私は2つのケースを検討したいと思います:

すべてのIPアドレスはパブリックです。クラウドはインナーネットのシンボルです。

最初の1つ

  1. Hは確立済みTCP接続:C = (210.10.10.10,9999,98.98.98.98,9999)です。この接続はHTTP通信に使用されます。いくつかのHTTPフレームが接続Cから送信されました。

  2. したがって、HはいくつかのHTTPメッセージを送信するだけです。

  3. ここで、MHHTTPの代わりにHメッセージを送信しようとしています。だから、それはTCP.SequenceNumberおよびその他のTCPのヘッダーフィールド。次にMHは適切なTCPメッセージをIP.srcAddress set toH`のアドレスとHTTPのメッセージ:「私はばかです」(スキームを見てください)。

接続Cで次のパケットとしてパケットが受信されました。

私の質問は:それは可能なシナリオですか?

二番目

状況は上記と同じです。ただし、HServerはhttpsによって通信します。 MHは、以前と同様にHTTPメッセージの送信を試みます。 MHはキーを知らないため、暗号化できません。したがって、サーバーで正しく復号化することはできません。コンテンツは正しい形式に解読されないため、サーバーはパケットが悪意のあるものであると判断できます。

パケットが悪意のあるonly症状ですか?滑りやすいようです。

3
Gilgamesz

「攻撃者が好むすべての確率」シナリオ

攻撃者は被害者と同じネットワークにいて、ネットワークを監視でき、接続を盗聴できるだけでなく、接続を妨害することもできます。これは、攻撃者が被害者に対して ARPスプーフィング 攻撃を実行できる場合です。

この場合、攻撃は可能であり、HTTPなどの暗号化されていないプロトコルに対しては簡単です。攻撃者は被害者とサーバーからすべてのパケットを読み取ることができ、必要に応じて変更を加えることができます。彼は自分がゲートウェイであることをHに伝え、サーバーに送信されるパケットを変更できます。パケット全体を手に持っているので、彼はTCP=シーケンス番号、すべてのフラグ、オプション、その他すべてを知っています。これはManと呼ばれますミドルアタック

別のネットワークの攻撃者

32ビットの数値を推測するよりも困難です。この場合、MHは正しいシーケンス番号(32ビット番号)[〜#〜]および[〜#〜]正しいフラグ[〜#〜]および[〜#〜]で正しいオプションを使用して、注入されたパケットを作成します[〜#〜]と[〜#〜]は、パケットがHからのパッケージの前にサーバーに到達するようにします。 HMHは同じネットワーク内にないため、MHIP spoofingを使用する必要があり、実行することはほとんど不可能です。多くのルーターは Egress Filtering を備えているため、発信元アドレスが偽装されたパケットを破棄します。

暗号化されたプロトコル

他のシナリオと同じ制約ですが、複雑です。攻撃者は暗号化されたパケットを偽造し、暗号スイート、すべての暗号化パラメーター、パディング、IV、チェックサムを推測し、クライアントからの次のパケットとシームレスにマージする必要があります。 ..いいえ、暗号化されたプロトコルにデータを挿入して、サーバーまたはクライアントに受け入れられることを期待することはできません。

コンテンツは正しい形式に解読されないため、サーバーはパケットが悪意のあるものであると判断できます。

いいえ、TCPシーケンス番号が正しくない、または正しいが遅れている(新しいパケットがすでに到着している)、または予期された番号と伝送ウィンドウをはるかに上回っている)ため、サーバーは悪意のあるパケットを検出します。値を偽装することは不可能であり、暗号化が採用されているため、リモートで有効なパケットのように見えないため、サーバーはパケットを破棄します。

TCPは複雑なプロトコルであるため、実際にバイパスするのは困難です。その上にさらに複雑なプロトコル(TLS/SSL)を追加すると、スプーフィングされたパケットを通信に注入しようとする不可能なタスクがあります。

4
ThoriumBR