> For the complete documentation index, see [llms.txt](https://dise0.gitbook.io/h4cker_b00k/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dise0.gitbook.io/h4cker_b00k/conceptos-de-ciberseguridad-en-hacking-etico/contenido.../explotacion-y-hacking-de-vulnerabilidades-en-red/man-in-the-middle-mitm.md).

# Man in the middle (MITM)

Antes de entrar en esta tecnica que podria ser la mas relevante en tema de redes, explicar un poco como se comunica un dispositivo.

Antiguamente la comunicacion entre `nodos` o equipos se comunicaban de manera muy rudimentaria, mediante un cable enviando una cadena de `bytes` que el otro equipo interpretaba, pero habia ciertas limitaciones, ya que tenian que estar fisicamente cerca, con el paso del tiempo esto fue mejorando y existieron unos aparatos llamados `Routers`, `Switches`, etc.. Los cuales permitian enviar una cierta señal al punto de donde se encuentre cierto `nodo` de la red una cadena de `bytes` este aparato los recibia y se lo enviaba al `nodo` correspondiente, creando una red bastante mejor y mas grande.

Y como sabe el aparato dar esa dicha informacion al `nodo` correspondiente, lo sabe atraves de un identificador que se denomina direccion fisica o direccion `MAC`, todos los `nodos` que se encuentran en esa red van a tener una direccion fisica asociada y esta direccion fisica los va a identificar unívocamente dentro de esa red.

De esta manera cuando nosotros mandamos algo a otro `nodo` esta peticion ya lleva la direccion fisica asociada al `nodo` al que se lo queremos mandar, de manera que cuando le llegue al aparato (`Router, Switch, etc...`) sabe a quien mandarselo por la direccion `MAC`. (Todo esto es para poder intercambiar informacion dentro de nuestra red local)

Y con las direcciones IP lo que hacemos es que cuando visitamos internet para conectarnos a un `nodo` nos identificamos mediante nuestra IP publica a dicho `nodo` pudiendo intercambiar informacion mediante el `Router` y esto nos sirve para poder intercambiar informacion con otras redes fuera de nuestra red local.

Todo esto de los `nodos` y su comunicacion funcionan mediante `ARP` que su funcion es que cuando quiero enviar una peticion a un `nodo` de la red, este va al `Router` y el mismo pregunta quien tiene dicha direccion IP, el que la tenga le responde con su direccion `MAC` y el `Router` nos da esa direccion `MAC` por lo que en el paquete de red que qeremos enviar se lo volvemos a enviar al `Router` con esa direccion IP y `MAC` y el mismo lo envia a su destinatario real, pues para que no se este haciendo esto constanatemente tenemos una `cache ARP` en la cual se va almacenando ese tipo de direcciones para que no este preguntando continuamente, pero tambien tiene sus limitaciones ya que se iran borrando las anteriores por nuevas que vayan entrando.

Con la tecnica de `man in the middle` lo que estamos haciendo es nosotros como atacantes suplantamos al `Router` de manera que el `nodo` que esta enviando la informacion al `Router` nos la envia a nosotros ya que hemos suplantado al `Router` con una serie de tecnicas que veremos mas adelante, nosotros con esa informacion podemos hacer lo que queramos, podremos modificarla, verla, manipularla, etc... Despues de todo esto la enviaremos al `Router` como si fuesemos el equipo legitimo el `Router` la enviara donde tenga que enviarla le dara una respuesta, el `Router` nos la enviara a nosotros y nosotros se la reenviaremos al equipo original, de manera que el equipo original se piensa que esta manteniendo una conexion legitima con el `Router` y con el otro `nodo`, pero realmente esta pasando por nosotros.
