Context
Estoy tratando de aprender más acerca de la seguridad web a través de investigar cómo funcionan las diversas aplicaciones nativas de iOS. He estado utilizando Burp Suite como la herramienta MITM para detectar el tráfico de red enviado y recibido de las aplicaciones, y en el iPhone tengo SSL Kill Switch 2 instalado para omitir cualquier anclaje de certificado. Es muy interesante y sorprendente ver cómo funciona todo bajo el capó, para un principiante como yo.
No tuve ningún problema con la mayoría de las aplicaciones, esto incluye algunas aplicaciones que se supone que tienen alta seguridad, como varias aplicaciones de banca móvil, tan pronto como se levanta el SSL, todo es visible en texto plano. Curiosamente, algunos juegos móviles me están haciendo pasar un mal rato.
Desafío
El tráfico interceptado parece ser archivos JSON cifrados. Por ejemplo,
{
"F4q6i9xe":{"aV6cLn3v":"542668","Hhgi79M1":"ynB7X5P9"},
"a3vSYuq2: {"Kn51uR4Y":
"f3SQ5sySeaoDupGhGmCD9MKt0V4naBjXXR+jDEjqU1gmL32FgS8v1/6vy61RFO/rwmXwFYZHfTRgV2XujI6U7fESlcSZjMjdeiULExVg0uFmnSgiYA5040hBtuxfFqn+lP1ZCsvnua2IQHoYZDBagkr8I9VZVxQbzivc7rv5d17qscgnD2Jd4BBImn+ohuTpxPEC2H2sLBpAldLe/5EAbXUIkF8griS73lvjyWhmHubZguNUa9EzOCH8o0UPwo5BLB8Fz7xok1GE85/wwSzrlyapQw76/U/RJBF+/0YQ75BACuE4/SfIknim9XZk2EspKrCOu/Gi2K+7pHS+jytfXHR6zTjmeMyV2o967MUVXag="}
}
Lo que he hecho
Si entiendo correctamente, ahora estoy en los reinos de descifrado. Usando algunos enfoques analíticos que he encontrado en Google, aquí están algunos de mis hallazgos (algunos pueden parecer muy obvios y triviales para los experimentados):
-
Todas las solicitudes enviadas desde la aplicación están en este formato / estructura exacta. Los nombres de clave cifrados son siempre los mismos, solo los valores difieren.
-
El valor de la clave
aV6cLn3v
parece corresponder a algún tipo de marca de tiempo, ya que está en constante aumento. -
Anteriormente sospeché que el valor correspondiente a la clave
Hhgi79M1
serían algunos bits de verificación según la marca de tiempo, pero no lo es. Realizar la misma acción en el juego llevará al mismo valor, a pesar de las diferentes marcas de tiempo. Sin embargo, diferentes acciones producirán valores diferentes. -
El valor para la clave
Kn51uR4Y
es donde está la carga útil real. Creo que es un JSON debajo del cifrado, pero no estoy seguro. -
Los signos
/
en la carga útil parecen ser separadores para segmentos de datos. El segundo segmento/6vy61RFO/
parece ser los bits de verificación según la marca de tiempo. Porque realizar dos acciones idénticas en los resultados del juego en dos JSON casi idénticos, excepto por la marca de tiempo y esta sección en particular en la carga útil. -
El cifrado de la carga útil tiene algo que ver con Base64 o AES, debido a la firma trailing = ('s), y las longitudes de las diferentes cargas útiles son siempre múltiplos de 4. No estoy seguro de que esto último signifique algo .
-
La clave de cifrado utilizada parece ser constante. No cambia de diferentes sesiones y en diferentes dispositivos.
Pregunta
¿Estoy en mi análisis hasta ahora? ¿A dónde debo ir desde aquí? Con mi conocimiento casi nulo en estos campos, no estoy seguro de cuál es el próximo paso a seguir. Creo que debo descompilar la aplicación y mirar los binarios para tratar de ver si puedo encontrar la función / clave de descifrado por ahí. Pero no estoy seguro.
Soy consciente de que habrá mucho aprendizaje por delante, pero no me importa ya que lo estoy disfrutando mucho y apreciaría enormemente la ayuda, incluso si es solo una lista rápida de los temas y las URL. Debería mirar en.
Actualización 2015/11/23
Descarté los archivos binarios descifrados de la aplicación y ejecuté un comando cadenas en ellos, luego hice un script en Python para seleccionar con éxito la clave de cifrado. Gracias a todos los que han ayudado!