Hace tiempo explicamos cómo se podía hacer análisis de seguridad de las peticiones web que hace una aplicación de iOS instalando una CA en el propio móvil. Aunque en la gran mayoría de casos el método funcionará, en otros el tráfico no será transmitido tal y como se espera, ya que la aplicación verificará que el certificado que recibe está firmado por una CA concreta, desconfiando de cualquier otro tipo de certificado recibido, sea o no válido.
Para llevar a cabo ese control (que roza la seguridad por oscuridad), se hace de dos formas distintas: definir exactamente el certificado que se espera recibir, sacando de la ecuación a la CA o limitando las firmas válidas a una CA determinada.
Las funciones que se usan para trabajar con SSL son tres: NSStream, CFStream, NSURLConnection, siendo esta última la más usada.
NSURLConnection usa varios métodos delegados para obtener los valores y poder hacer la comprobación de los parámetros, como didReceiveAuthenticationChallenge, canAuthenticateAgainstProtectionSpace o willSendRequestForAuthenticationChallenge.
Por ejemplo, twitter hace uso de este método para evitar ataques man in the middle, y se puede intuir el "pinado" del certificado en el volcado de su aplicación.
Por ejemplo, twitter hace uso de este método para evitar ataques man in the middle, y se puede intuir el "pinado" del certificado en el volcado de su aplicación.
En esos casos, la estrategia debe ser distinta. Usar un debugger y cambiar el comportamiento, recompilar la aplicación o hookear esas funciones.
Con este objetivo iSEC Partners ha creado IOS SSL Kill Switch, un pequeño tweak de MobileSubstrate que realiza esta tarea. Para usarlo, como es obvio, se requiere que el teléfono tenga jailbreak.
La instalación es sencilla, se instala el paquete deb correspondiente y se reinicia el proceso de MobileSubstrate.
Instalación de IOS SSL Kill Switch |
Una vez instalado, se aparecerá una nueva configuración dentro de los ajustes para habilitarlo o deshabilitarlo.
Ajustes de SSL Kill Switch |
Actualización 10/2/2013:
Otra herramienta que parchea a un nivel más bajo: https://github.com/intrepidusgroup/trustme
Referencias:
2 comments :
Perdonen mi ignorancia. Y esto para que puede servir ?
Para interceptar el tráfico (y manipularlo) de una aplicación móvil que verifica que el certificado del SSL es el que debe ser y no uno que se ha creado.
Publicar un comentario