Descifrando tráfico TLS

3

Contexto:

Quiero realizar ingeniería inversa de un protocolo implementado para la Nintendo 3DS. Sin embargo, la implementación utiliza TLS, lo que dificulta la ingeniería inversa. Actualmente puedo rastrear paquetes hacia / desde mi 3DS porque tengo un enrutador de repuesto que se está utilizando para una "prueba wifi" que funciona a través de Ethernet de mi escritorio y luego a través de la tarjeta inalámbrica de mi computadora de escritorio a Internet real.

Lo que he investigado:

  • MITM
  • proxies

Obstáculos:

  • No puedo forzar a la 3DS a aceptar un certificado cuestionable.
  • No puedo falsificar el certificado.
  • No intentaré robar la clave privada real (tengo poco interés para ella una vez que conozca el protocolo).
  • No puedo leer la clave de sesión de la memoria RAM de mi consola, debido a la falta de hardware.

Solución potencial:

  • Estoy casi 100% seguro de que el protocolo es algún tipo de HTTP (Probablemente a través de encabezados, en su mayoría). Entonces, si el cifrado está basado en XOR, ¿puedo obtener parte de la clave, al menos? No sé mucho acerca de la criptografía.
  • He pensado en configurar un proxy, una instancia de servidor de CA [y apuntar el archivo host de mi escritorio a esta instancia de servidor], instalar el certificado de Nintendo y luego sobrescribir su clave pública con mi propia clave privada y luego usar mis 3DS Certificado en el proxy para comunicarse con Nintendo. No estoy seguro de que esto funcione, ya que, honestamente, no tengo una idea completa de cómo funciona la TSL más allá de eso, no es algo que se pueda romper fácilmente.
  • ¿Es la opción de fuerza bruta una opción viable si puedo generar más datos cifrados?

tl; dr- ¿Hay alguna forma de descifrar estos datos sin la clave privada del servidor o ingresar a la memoria RAM para encontrar la clave de sesión? Tengo el certificado del servidor así como el certificado del cliente de mi 3DS.

    
pregunta Full Metal 29.10.2014 - 07:27
fuente

2 respuestas

3

Si Nintendo no fracasó, entonces no tendrás éxito. El protocolo TLS significa precisamente para evitar la inspección y alteración desde el exterior.

Si desea saber más sobre TLS (también conocido como SSL), lea esta respuesta como un recorrido. En su mayoría, hay cuatro formas a través de las cuales podría esperar realizar una ingeniería inversa del protocolo:

  1. Intenta que la Nintendo 3DS acepte un certificado de servidor falso. Esta es la esencia de la respuesta de @ MrSec: por lo general, los clientes TLS validan el certificado del servidor con respecto a un conjunto de "CA de confianza" instalado en el cliente. Si puede agregar su propia CA en ese conjunto, puede crear certificados falsos que el cliente aceptará.

  2. Ver si la implementación de Nintendo sería susceptible a uno de los ataques conocidos en TLS . Después de todo, las actualizaciones de firmware de la consola tienden a ser más raras que las correcciones en las computadoras de propósito general, por lo que algunas vulnerabilidades aún pueden estar al acecho. En el lado positivo, aprendería mucho sobre criptografía si elige ese camino y tiene éxito.

  3. Tal vez se pueda convencer a la consola para que ejecute el mismo protocolo sin TLS, en algunas situaciones "anormales". Muchos programas implementados tienen un modo de depuración oculto que persiste porque los equipos de desarrollo se olvidaron de eliminarlo al realizar la "compilación de producción".

  4. Haz otra cosa. Por ejemplo, la consola se conecta a un servidor externo; es posible que desee conectarse a ese servidor desde su PC y elaborar los detalles del protocolo según las respuestas del servidor , sin que ello implique la consola.

Por supuesto, acceder a la RAM, o al menos al código ejecutado por la consola (la implementación del protocolo), sería mucho más simple. Tenga en cuenta que no hay necesariamente ninguna "clave privada" para robar de la consola. En TLS, el certificado y la clave privada están normalmente en el lado del servidor.

    
respondido por el Tom Leek 29.10.2014 - 13:51
fuente
3

¿Se puede instalar un certificado de CA en la 3DS? En ese caso, esto podría funcionar:

Si el dispositivo implementa Fijación , esto aún no funcionará. En ese caso, su proyecto podría estar un poco condenado.

Si resulta que no es HTTP, puedes probar un ataque MiTM completo, que implica configurar una CA falsa, usando mitmproxy y enrutando todo el tráfico de los 3ds a través de él.

    
respondido por el NSSec 29.10.2014 - 08:14
fuente

Lea otras preguntas en las etiquetas