Interceptar conexiones en lugar de reenviar (usando arpspoof)

1

Estoy haciendo la experimentación de ARP Spoof con arpspoof y he configurado con éxito a un hombre en el medio entre dos máquinas.

Configuramos el reenvío de IP usando:

echo 1 > /proc/sys/net/ipv4/ip_forward

Esto nos permite analizar las comunicaciones usando, por ejemplo, Wireshark. En teoría, deberíamos poder modificar el tráfico también. Soy consciente de herramientas como Ettercap y SSLstrip, pero ¿cómo podría personificar manualmente el servidor de destino?

Para reformular la pregunta: el cliente A está hablando con el servidor B. El atacante C (ese soy yo) está en medio y actualmente reenvía paquetes de ambas formas. ¿Cómo hace C, en un nivel bajo, las solicitudes de redireccionamiento destinadas a B a mi propia máquina?

Todos los sistemas involucrados están utilizando BackTrack.

Actualización:

Mis comandos de arpspoof (en la máquina de ataque, C):

arpspoof -i eth0 -t 8.0.0.2 8.0.0.3 # Tell 8.0.0.2 (A) that I am 8.0.0.3 (B)
arpspoof -i eth0 -t 8.0.0.3 8.0.0.2 # Tell 8.0.0.3 (B) that I am 8.0.0.2 (A)

Mis comandos de netcat para pruebas:

nc -p 5555 -l # Run on target B, listen on port 5555
nc -p 5555 -l # Run same thing on attack machine
nc 8.0.0.3 5555 # Run on A; connect to B.

Mi objetivo es hacer que C se haga pasar por B cuando A ejecuta el último comando.

Si el reenvío de IP está activado, A se conecta a B. Si el reenvío de IP está desactivado, A no puede conectarse con: (UNKNOWN) [8.0.0.3] 5555 (?) : Connection timed out . El problema es que la capa IP no responde a un paquete destinado a otra dirección IP; así que aunque C recibe el paquete en un nivel inferior, no se pasa "arriba" de la pila. Mi objetivo es subir esto a la pila.

    
pregunta jtpereyda 31.01.2012 - 19:16
fuente

2 respuestas

3

Esto implica escribir un poco de código, pero el mecanismo es bastante simple.

Usted escribe un programa que escucha las conexiones salientes desde su destino. Utilice técnicas típicas de programación de socket. Como antes, use ARP spoofing para obtener el tráfico a su computadora y, posiblemente, la reescritura de DNAT si es necesario para que su aplicación reconozca el tráfico si la configuración de su red no concuerda con los paquetes entrantes. Luego, realiza una conexión de salida por separado hacia donde se dirigía originalmente el tráfico. Y simplemente repita el tráfico de un host a otro, supervise y / o modifique a medida que avanza, usando SNAT si es necesario para lo que está tratando de lograr.

Alternativamente, puedes hacer algunos vooodoo realmente geniales con libnetfilter_queue . Esencialmente, lo que haces es configurar una regla de iptables que envíe el tráfico al objetivo QUEUE . A continuación, escribe una herramienta de espacio de usuario que recibe esos paquetes, realiza las modificaciones que desee y, a continuación, los empuja de nuevo a la pila de la red. Este mecanismo es mucho más elegante en cierto sentido, pero también es bastante bajo. Funciona a nivel de paquetes, por lo que, por ejemplo, todo lo que hace el TCP mágico por ti puede que tengas que incluirlo en tu código, dependiendo de lo que estés tratando de lograr.

    
respondido por el tylerl 31.01.2012 - 19:38
fuente
3

Una vez que haya interceptado la comunicación, puede realizar una edición en el texto sin formato de los paquetes que se envían, por lo que puede cambiar lo que dice un sitio web, por ejemplo. Una búsqueda / reemplazo usando expresiones regulares funciona para este propósito.

Para hacer esto de manera eficiente, ettercap tiene muchas herramientas para ayudarlo.

Dependiendo de lo que quieras lograr, BeEF es otro gran ejemplo, que se incluye en Backtrack. Te permite falsificar sitios web completos y hacer modificaciones. También tiene algunas herramientas de ataque de clientes impresionantes, pero creo que no está en el ámbito de lo que quieres hacer.

    
respondido por el schroeder 31.01.2012 - 19:38
fuente

Lea otras preguntas en las etiquetas