TCP接続を終了するために、パケットを注入
-
18-09-2019 - |
質問
私は、ネットワークパケット(その1-簡単な部分)を盗聴プログラムを記述する必要があります。
そして、私は接続を終了することができるようになりますようにプログラム(その2)を更新する必要があります。
特定の要件は次のとおりです:
適切なソースと宛先MACとIPアドレスを含むデータリンク層とネットワーク層の情報を指定することによって、生のパケットを構築します。これらのパケットは、接続を終了することを意図しています。そのためには、自分でヘッダ情報を設定できるようにソケットタイプとしてSOCK_RAWを使用する必要があります。
誰が私の第二の部分にいくつかのアイデアを与えることはできますか?
私はセッションをハイジャック、ユーザーの一人にDoS攻撃を適用する必要がありますか?
私は必要なのは、接続を終了する方法のいくつかのヒントです。 私は、Cプログラミング言語を使用していますが、これはセキュリティのコースのコースの割り当てです。
解決
は、あなたが終了接続によって何を意味するかに依存します。あなたは、TCP回路またはUDPストリームのためのエンドポイントを提供することを意味することがあります。
それとも、ストリームの終わりを示すために、TCPストリームの途中で許容RSTを送る意味するかもしれません。これを達成するには、とりわけ他の側で期待されるシーケンス番号を知っておく必要があります。
あなたがクラスに注意を払っていない明らかであるいずれかの方法。割り当ての全体のポイントは、それはそう、あなたは生のIPパケットのレイアウトと、おそらくTCP / UDPを理解示すことです。私はあなたが主題の教科書を購入する(間違いなくあなたの講師による推奨)、および/またはウィキペディアの読み取りを取ることをお勧めます。
他のヒント
この割り当てのために私はPythonのパケットキャプチャと注入された、 pypacp に使用します図書館。 Pypcapは、パケットを偽造するために、生のソケットを使用しています。いくつかの奇妙な理由で、あなたがCを使用するように強制されている場合、このプロジェクトは、より困難になります。この場合、あなたは上の開発プラットフォームに依存しますラインと生ソケットライブラリを盗聴するためのlibpcapを使用する必要があります。
あなたは、TCPシーケンス番号の探しているラインを盗聴することができます。このIDに基づいて、あなたは、接続の片側を破るためにRSTまたはFINを偽造することができます。ハードの部分は、rawソケットを使用してTCP接続を維持しようとします。 HTTPを維持するために、より簡単なプロトコルとなり、アプリケーション層の接続を維持することはほぼ不可能になりますが、それは、HTTPをした場合、それだけでクッキーをハイジャックするために容易になるだろう。
私はCライブラリのお手伝いをすることはできません - ない私の得意はなく、そこに何かがあるはずのように思える。
。 DOSのを防ぐためであるあなたがパート2でやろうとしている、1を起こさないように、しかし、それはそうです!
ここでチェックします:
http://en.wikipedia.org/wiki/Denial-of-service_attack の
DoS攻撃のもののため。あなたの教授にチェックアウトする必要があり、その1 - PPが言うように、あなたのassigment程度である1把握したいので、接続悪用に関連する攻撃の数は、あります。例えば、上記のWikiページには、SYN洪水に言及 - しかし、ほぼすべてのコネクション指向のプロトコルは、あまりにも多くの接続要求の接続プールをいっぱいにして、今までにそれらを閉じていない攻撃の危険になります。
。私はあなたの仕事は、攻撃者が開かれた接続を閉じることでこの問題を解決する方法を見つけ出すためにあることを、割り当てを読んで、想定しています。あなたはどちらを意味し、両方のは、攻撃がどのように機能するかを把握し、それから回復する方法を把握する必要があります。
ヒント:クローズ接続要求の洪水でサーバーを叩くことは、攻撃ではありません。あなたは、必ずしも開いている接続をクローズしていないので、それは、どちらか、その有用ではないのです。しかしダメージは、オープン接続要求によって引き起こされます。ここで参照してください。
http://en.wikipedia.org/wiki/SYN_floodする
一例について
あなたはパケットスニッフィングを支援するためのlibpcapを使用することができます。 libpcapのは、tcpdumpのチームによって開発されました。