ホストAからホストBへの特定のポートでネットワーク上を飛んでいるパケットを傍受するLinux上のPythonで小さなプログラムを書いています。ホストCは中間者として機能するため、すべてのトラフィックはホストCを通過します(arp中毒方法)。画面上のすべてのデータを見ることができるように、インターセプトで部分を正常に書きましたが、ヘッダーデータを変更せずにパケットデータを変更したい (もちろん、チェックサムは変更されます)。pcapy/imppacket で傍受されたパケットを使用してこれを達成するにはどうすればよいですか?
少し曖昧かもしれませんが、主なアイデアを以下に示します。
1. ホスト A がホスト B に「Hello」を送信します (ホスト A と B は、トラフィックがホスト C を通過するように arp スプーフィングされます)。
2. ホスト C はホスト A から「Hello」を取得します (デフォルトでは、ホスト C は「Hello」をホスト B にリダイレクトしますが、別のものが必要です - ポイント 3 を参照)
3. ホスト C は「Hello」を「Bye」に変更し、リダイレクトします(カーネルの ip_forward?) をホスト B に送信します。
4. ホスト B は「さようなら」を受け取ります。
おそらく、これを達成するためにいくつかのLinuxメカニズムを使用する方法がありますか? 今、私は立ち往生しており、アイデアをいただければ幸いです。
1798 次
1 に答える
1
この種のアプリケーションにはscapyを好みます。これは、プロトコル スタックのさまざまなレイヤーでパケットをキャプチャ、操作、および送信できる強力な Python パッケージです。
中間者攻撃を実行する方法はいくつかあります。おそらく、ホスト A からパケットをキャプチャするフィルターで「スニフ」機能を使用します。次に、パケットを変更し、「sendp」を使用してホスト B に再送信するコールバックを (「prn」パラメーターを介して) 指定します。scapy には組み込みの「arpcachepoison」関数も含まれていることに注意してください。
于 2011-01-04T23:55:27.847 に答える