scapyでパケットデータを変更するにはどうすればよいですか?scapyでパケットデータを変更するには?
私はsniff()
を使用して、次にsend()
を編集しようとしましたが、元のパケットがすでに宛先に達しているため動作しません。
scapyでパケットデータを変更するにはどうすればよいですか?scapyでパケットデータを変更するには?
私はsniff()
を使用して、次にsend()
を編集しようとしましたが、元のパケットがすでに宛先に達しているため動作しません。
"元のパケットがすでに宛先に到達しているため、動作しません。
まず最初に、両端にあるすべての通信がデバイスを横断するように、いくつかのMiTMソリューションをセットアップし、パケットデータを変更できるようにします。
この機能/攻撃の既知のソフトウェアパッケージには、ettercapとcain/abelがあります。
iTayb、
あなたがscapyを使用して、サービスのいくつかの並べ替えをプロキシに興味があるようですか?もしそうなら、どちらですか?
最初の注文は、パケットがscapyを実行しているボックスをどのように通過するかです。これを行うには、リモートマシンのゲートウェイをscapyボックスと一致するように設定します。これがある種のペンステストのためのものなら、いくつかのMACアドレスを偽装する必要があります。 arpcachepoisonメソッドを使用するか、ettercapのような第三者プログラムを使用してscapyでこれを行うことができます。
これが完了したら、sniff()とsend()を使用する方法は、送信側に到達する前にパケットを変更するだけです。)次に、それは...ここで私はちょうどIPヘッダー宛先アドレスを変更しますが、あなたはあなたが望むものを変更することができます。
from scapy import *
def chgSend(x):
x[IP].dst = '192.168.1.1'
send(x)
while 1:
sniff(prn=chgSend)
DC
私は、
を同じ問題を抱えていた私はこの問題は、変更されたパケットがscapyによって送信される前に、元のパケットは元の宛先に転送されるように、あなたがip_forwardを有効にしているということだと思います。
Theorically、解決策は、あなたが別のポートに変更したいパケットを転送するiptablesの中でルールを作成することです(これはettercapのは、内部的行い、多かれ少なかれものです)、
i.e = iptables -t nat -A PREROUTING -p tcp --destination-port "YourInterestingPort" -j REDIRECT --to-port 1234
そしてscapyに聞きますそのポートにパケットを変更し、パケットを元のポートに送信します。
このソリューションでは、フィルタリングの、あなたはリダイレクトし、必要なパケットのみを変更し、SYN ACK ARPなど除外する必要があるため、サーバーの応答を変更したい場合は...
を実現することは困難です、それを行うもっと簡単な方法は、その場でパケットを変更する代わりに、仲介者のように行動することです。
オープンソケット、パケットを受信し、接続を開き、あなたがクライアントだったとの回答を受けた場合のように、元の宛先に送信し、答えを変更し、それを返します元のクエリアに。
真: c、addr = s_mb.accept()#クライアントとの接続を確立します。 クエリ= c.recv(BUFFER_SIZE)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, PORT))
s.send(PACKET)
response = s.recv(1024)
if response = "THIS IS THE RESPONSE THAT I WANT TO MODIFY":
if(real_simulation):
fakeresponse = "MODIFIED RESPONSE"
#print "The packet has beeb modified"
else:
fakeresponse = response
s.close()
c.send(fakeresponse)
(汚いコードについて申し訳ありませんが)
私は、これは少し古いスレッドが、同様のものである知っている - 1は、より多くので発信パケットを変更することはできます複雑な方法? IPヘッダーやTCPヘッダーを変更せずに、httpペイロードに別の種類のhttpヘッダーを挿入するなど。関連APIへの参照など – fayyazkl
しかし、あなたが変更したいことに応じて、それは他のモジュールを含むかもしれません。たとえば、すべてのHTTP GET要求パケットのペイロードを変更したい場合は、reを使用してヘッダを解析し、それに応じて変更されたパケットを送信します。 – dc5553
実際には新しいhttpヘッダーを挿入します。これは最後の\ r \ nを上書きし、さらにいくつかのフィールドを追加することを意味します。 – fayyazkl