¿Interceptar y modificar una sesión TCP simple?

2

Supongamos que hay una sencilla aplicación de chat servidor / cliente basada en socket como estas. ¿Cómo es posible para mí interceptar lo que están chateando y modificarlo? He estado buscando MitM que requiere envenenamiento ARP, que no es aplicable para mi ejercicio.

Otra cosa es el secuestro de sesión TCP pero no entiendo cómo funciona. ¿Alguien puede darme una pequeña idea, o tal vez buenos enlaces donde pueda aprender algo, o tal vez algún código python (preferiblemente en GitHub)?

No tengo problemas para aprender, O tal vez alguna herramienta de código abierto que pueda hacer esto, simplemente no quiero ser un niño de script.

    
pregunta user172473 09.03.2018 - 05:32
fuente

2 respuestas

5

Secuestro de sesión TCP

Imaginemos que un cliente se comunica con un servidor a través de una conexión de red. El cliente se ha autenticado con el servidor y se le ha otorgado acceso. Hasta ahora, todo bien.

Un atacante está en la red entre el cliente y el servidor, y ha estado vigilando su sesión. Esto le ha dado tiempo para aprender el puerto y los números de secuencia necesarios para que tenga lugar la conversación. Como conoce los números de secuencia, puede anticipar los números en paquetes subsiguientes (ver: ataque de predicción de secuencia TCP ). Esto es cuando el atacante decide intervenir.

Paraliza al cliente al lanzar una inundación de ICMP, asegurándose de que el cliente no pueda responder al tráfico enviado por el servidor. Esto le permite al atacante la libertad de comunicarse con el servidor como si fuera el cliente. Debido a que el cliente está paralizado y el servidor ha enviado una respuesta, el atacante llega primero, forja un paquete que < em> aparece nativo al flujo establecido, y el servidor no es lo más inteligente.

Aquí hay una figura para ayudarlo a comprender la función que desempeñan los números de secuencia en el protocolo y cómo un atacante puede aprovecharlo:

Fuente: enlace

Esto es lo mejor que puedo hacer, por ahora. No he podido localizar ningún código Python o herramientas de código abierto que puedan hacer este tipo de cosas.

    
respondido por el user171922 09.03.2018 - 06:36
fuente
0

Creo que el mejor ejemplo para el secuestro de sesión TCP es el ataque de Kevin Mitnick, que se explica muy bien en esta página . La idea es que adivines el número de secuencia de un paquete. Sin embargo, hoy en día este ataque no es práctico porque la mayoría de los sistemas operativos asignan al azar este número, lo que dificulta la predicción.

Por otro lado, para los ataques Man-in-the-Middle, tienes una amplia gama de opciones. Primero necesitas meterte entre los dos nodos. Esto puede ser realmente simple cuando posee uno de los nodos que enrutan su tráfico, como un punto de acceso inalámbrico. Pero también puedes usar ataques como la falsificación ARP que mencionaste. Otros protocolos de enrutamiento también permiten este tipo de comportamiento, como BGP. Luego hay más ataques indirectos como envenenamiento de caché de DNS.

Una vez que tenga el control del tráfico de datos, puede oler pasivamente el tráfico. Creo que encontrará a scapy un buen módulo de Python para cosas como esta. Es bastante potente y puede usarse para todo tipo de ataques de red.

Otro sniffing pasivo se puede hacer con libpcap . pcapy es un módulo de Python que interactúa con esta biblioteca. También puedes usar Wireshark si quieres echar un vistazo rápido al tráfico.

Modificar el tráfico entre nodos es más difícil. Una forma de hacer esto es enrutar todo el tráfico a un determinado puerto. Para el ejemplo de la aplicación de chat, supongamos que enruta el tráfico entrante desde el puerto 12221 al localhost: 1337 usando iptables. Ahora ejecuta un servidor en el puerto 1337 que captura todo este tráfico, busca los paquetes, los modifica y los envía al puerto 12221 al host correcto.

Si desea practicar cómo examinar el tráfico de otro dispositivo, puede instalar una herramienta como Burp y configurar un proxy en un dispositivo como su teléfono. Verás tu tráfico HTTP y podrás modificarlo. Pero con los sitios web TLS (HTTPS) obtendrá una advertencia de certificado, ya que estas herramientas generan un certificado TLS falso sobre la marcha. Si quieres profundizar en esto, te recomiendo mitmproxy , porque es de código abierto y tiene una buena API de Python. Además, puede consultar bettercap .

    
respondido por el Graa 10.03.2018 - 00:04
fuente

Lea otras preguntas en las etiquetas