falsificación de solicitud ARP

2

Estoy trabajando en una red de acceso / backhaul basada en SDN. Para algunos experimentos, necesito generar una solicitud ARP desde uno de los nodos de mi red, pretendiendo ser otro. Esencialmente, esta solicitud ARP será inyectada en la red por el controlador, pero por el momento tengo que probar si esta solución funciona generando el paquete ARP localmente.

Supongamos que un cliente (sobre el que no tengo control) conectado a mi red tiene MAC AA:AA:AA:AA:AA:AA . Desde una interfaz de un nodo con un MAC diferente, quiero generar una solicitud ARP (mensaje de difusión) que tiene como fuente MAC AA:AA:AA:AA:AA:AA (la del cliente).

Necesitaría una herramienta de CLI que pueda enviar la solicitud ARP creada (una especie de respuesta en la que puedo especificar el src MAC). Intenté con pachETH pero necesita el archivo pcap para trabajar a través de CLI, mientras que ETTERCAP parece generar una respuesta ARP pero no la solicitud. ¿Alguna pista?

    
pregunta Math 31.01.2018 - 10:29
fuente

3 respuestas

1

Puedes usar scapy para esto. Un enfoque es registrar primero uno o más paquetes ARP:

pk = sniff(count=1, filter="arp")
pk.summary()

Y luego usa esto para crear tu propia solicitud de ARP:

arppk = eval(pk[0].command())

Ahora puede establecer valores propios en arppk :

arppk[ARP].hwsrc = 'AA:AA:AA:AA:AA:AA'

La función ls(ARP) le muestra más opciones disponibles.

    
respondido por el qbi 31.01.2018 - 14:01
fuente
0

Creo que la mejor opción para ti es usar scapy

También tiene muchos ejemplos en Internet para generar paquetes. Estoy seguro de que hay otras herramientas, pero scapy es la que utilizo para ese tipo de trabajo.

    
respondido por el camp0 31.01.2018 - 10:40
fuente
0

Recomiendo crear un script Python simple utilizando el módulo scapy para crear paquetes.

Aquí hay una idea del tipo de sintaxis que necesita:

from scapy.all import *

mode = "who-has"
destinationMac = "FF:FF:FF:FF:FF:FF"
sourceMac = "AA:AA:AA:AA:AA:AA"
destinationIP = "192.168.x.x"
sourceIP = "192.168.x.x"

sendp(Ether(dst=destinationMac, src=sourceMac)/ARP(hwsrc=sourceMac, pdst=destinationIP, psrc=sourceIP, op=mode), verbose=0)
    
respondido por el Joe 31.01.2018 - 14:06
fuente

Lea otras preguntas en las etiquetas