¿Cómo insertar paquetes personalizados en un protocolo de enlace SSL?

1

Estoy intentando comunicarme con un servidor SSL cuyo protocolo no es estándar. Quiero insertar paquetes personalizados en el apretón de manos. Estoy usando varias herramientas SSL, por lo que cambiar el código fuente en cada herramienta es mucho trabajo. Prefiere tener un filtro de red que modifique (inserte un paquete personalizado) en cada protocolo de enlace SSL.

Intentado netsed. No vayas. Puede modificar los paquetes existentes, pero no insertar un paquete nuevo.

Intenté ncat. No vayas. Puede insertar un paquete, pero cuando iniciamos la herramienta SSL, se configura una sesión TCP segunda . Probé muchas variaciones. Esta es la raíz del problema: ¿cómo puedo insertar paquetes en medio de una sesión de intercambio de SSL (sin iniciar una sesión TCP separada)?

    
pregunta dossa22 27.03.2013 - 19:49
fuente

1 respuesta

2

En un protocolo de enlace SSL, el cliente y el servidor intercambian mensajes de protocolo de enlace que están codificados en registros . Si su variante de protocolo consiste en mensajes de intercambio de manos adicionales, entonces tiene un problema: al final de la negociación, se intercambian dos mensajes de Finished , y su contenido se calcula como una función hash sobre todos los mensajes anteriores del protocolo de enlace , por lo tanto, incluyen sus mensajes adicionales Corolario: si tiene que insertar mensajes de enlace adicionales, DEBE modificar la herramienta de cliente SSL, porque esa herramienta calcula el hash y calculará un valor incorrecto si no está al tanto de sus mensajes adicionales.

Si su variante de protocolo consiste en registros adicionales de un tipo distinto de "registro para mensajes de intercambio" (escriba 22 en el estándar ), y de tal manera que los registros adicionales no afecten los cálculos del apretón de manos, entonces su estrategia de filtro podría funcionar. Tendrías que:

  1. Interceptar conexiones ; hay varias formas de hacerlo, pero la más simple es cambiar la configuración y / o el DNS para que la máquina de origen se conecte no al servidor de destino, sino a un servidor propio, que a su vez se conecta al servidor adecuado y transmite los datos. en ambas direcciones.

  2. Analice los datos para detectar los registros de intercambio, para saber dónde y cuándo deben agregarse sus mensajes adicionales en el flujo (y, de manera similar, los mensajes adicionales del servidor deben ser analizadas y eliminadas, para que la herramienta del cliente SSL no se atragante con ellas).

Así que estás en algo de programación. El protocolo de registro de SSL no es complejo, siempre que juegues con los registros de sin cifrar (aquellos antes de la finalización del protocolo de enlace); consulte la sección 6 del estándar . Además, consulte esta respuesta para obtener una introducción detallada sobre el protocolo (que creo que es más fácil de leer que el estándar ). Para la retransmisión, la estrategia de implementación más simple probablemente sería lanzar dos subprocesos, cada uno de los cuales se ejecutará en un bucle sin fin de lectura de una máquina a otra.

    
respondido por el Tom Leek 27.03.2013 - 21:08
fuente

Lea otras preguntas en las etiquetas