Hicimos un programa cliente / servidor que se ejecuta en localhost. ¿Es posible ejecutar a un hombre en el ataque central en el bucle de retorno entre el cliente y el servidor?
Dependiendo de cómo los programas se conozcan entre sí, podría ser posible.
Suponiendo que está ejecutando un servidor que solo escucha en 127.0.0.1 y un cliente que intenta conectarse a él. ¿En qué puerto escucha el servidor? ¿Qué pasa cuando el puerto está ocupado? ¿Cómo sabe un cliente que es un puerto correcto?
Suponiendo que el puerto no está codificado tanto en el servidor como en el cliente, pero está configurado de alguna manera, se podría configurar un MITM en un puerto diferente y engañar a un cliente para que se conecte a ese puerto modificado.
Ejemplo de los pobres: suponiendo que tenga un servidor SSH en su casilla local
socat TCP-LISTEN:1234 TCP:127.0.0.1:22
En la otra consola hazlo
ssh 127.0.0.1 -p 1234
Verás que te conectas a tu propio SSH. Elimine el socat
en la primera consola y verá cortes de conexión. El socat
es tu MITM.
Editar: Después de que hayas especificado tu objetivo (modificar un paquete en ruta y ver cómo HMAC lo rompe), supongo que necesitarás un segundo servidor, que normalmente solo reenvía paquetes de un socket a otro, pero después de notificarlo de alguna manera (el 10% del tiempo, existe un archivo específico, se recibe una señal, 10 segundos después del inicio ...) modifica el paquete recibido antes de reenviarlo.
Lea otras preguntas en las etiquetas attacks man-in-the-middle server client