¿Qué tan difícil es interceptar el cuerpo de respuesta POST cuando se usa SSL?

17

Para una aplicación de Android que realiza solicitudes POST (JSON) sobre SSL y recibe un objeto JSON como respuesta, ¿qué tan difícil es obtener la respuesta JSON?

¿Es la forma más fácil de descompilar la aplicación para obtener la solicitud y enviarla y ver cuál es la respuesta?

¿Cuál es la forma más fácil y cuáles son algunas de las técnicas que se pueden utilizar para hacerlo más difícil?

    
pregunta user181807 09.07.2018 - 14:28
fuente

1 respuesta

22

Todo depende de la aplicación en sí y del tipo de medidas de seguridad implementadas. Suponiendo que las solicitudes se envíen a través de HTTP (s), la forma más sencilla es usar un proxy como Burp. Deberá instalar un certificado de CA en su dispositivo móvil. Podrás ver las solicitudes & Respuestas en el software proxy (Burp).

APP <----> proxy <----> server

Si la aplicación está usando la fijación SSL / TLS, entonces la solución anterior no funcionará de la caja. Algunas funciones realizarán verificaciones adicionales en el certificado, tendrá que manipular dichas funciones para evitarlo. En general, hay dos formas:

  1. Parchea la aplicación para eliminar el pineo SSL / TLS. Esto generalmente requiere desempaquetar, editar, volver a empaquetar y renunciar a la aplicación. Bastante fastidioso si me preguntas.
  2. Enganche la lógica de anclaje SSL / TLS y deshabilite dicha lógica. Frida es una herramienta muy buena para esto (multiplataforma), Substrate en iOS y xposed en Android.

¡Una segunda solución es no usar un proxy en absoluto! Normalmente, se utiliza una biblioteca de cliente HTTP para realizar dichas solicitudes. Puede enganchar las funciones de solicitud HTTP e imprimir el contenido directamente.

APP <----> server
^-> hooked functions which prints the requests

La segunda solución puede ser útil cuando la aplicación no está utilizando solicitudes HTTP estándar. Algunas aplicaciones utilizan protocolos binarios como un gRPC, sería más fácil enganchar la función myclient_post(jsonData) e imprimir los parámetros + respuesta, que aplicar ingeniería inversa al protocolo binario, configurar un proxy, etc. ...

Algunos enlaces que podrían ser útiles:

  • Instale burp CA en Android: enlace
  • Instale burp CA en iOS: enlace
  • módulo xposed de Android que omite alguna lógica de anclaje TLS / SSL estándar: enlace
  • Igual que el anterior pero para iOS usando el sustrato Cydia: enlace
  • Frida: enlace , fragmentos de código: enlace , bypass ssl de android: enlace , ios ssl bypass: enlace
  • Explicación del certificado del certificado: enlace
  • Cuando te metes en escenarios avanzados: enlace (un puente entre Frida y Burp)
respondido por el HamZa 09.07.2018 - 15:37
fuente

Lea otras preguntas en las etiquetas