Rompiendo el certificate pinning de Messenger de Meta (macOS)
- La aplicación Messenger de Meta para macOS es similar al modelo de Texts.com, una aplicación de escritorio independiente.
- Batuhan İçöz, quien lidera el proyecto de la plataforma Meta en Texts.com, consideró que interceptar las solicitudes de red era un primer paso importante.
- Meta refuerza la seguridad aplicando certificate pinning y evita analizar solicitudes al servidor mediante ataques MITM (man-in-the-middle).
¿Qué es el certificate pinning?
- Al configurar un cliente proxy, se debe establecer que confíe en una "autoridad certificadora".
- Usando certificados emitidos por la autoridad certificadora, es posible interceptar y descifrar la información de las solicitudes.
- Si un servicio implementa certificate pinning, solo acepta certificados emitidos por una autoridad certificadora específica, impidiendo usar certificados emitidos por la autoridad certificadora del usuario.
Comportamiento predeterminado
- Si no se desactiva el certificate pinning, todas las solicitudes devuelven un "error interno" y el software proxy muestra "SSL handshake failed".
- Como las solicitudes no completan su ciclo de vida, no es posible inferir información sobre ellas.
Comportamiento deseado
- Usando un ataque MITM, se pueden leer correctamente las solicitudes, respuestas y encabezados en herramientas de depuración de red.
Posibles enfoques
- Uno de los métodos que funcionó antes fue cambiar en el binario la cadena de URL por un endpoint propio no seguro que no implementa TLS.
- Se pueden usar bibliotecas de instrumentación dinámica como Frida, pero Messenger tiende a cerrarse con facilidad, especialmente al hacer hooking.
- Usar Frida implica un proceso de despliegue complejo.
Enfoque
- Se descarga Messenger, se mueve a la carpeta de aplicaciones y luego se importa el binario ARM en Hopper.
- Con Hopper se puede desensamblar, decompilar, recompilar, depurar y visualizar el binario.
- Se busca una cadena como "SSL pinning verification failed" para intentar minimizar las modificaciones.
- Se descubre la cadena "Using custom sandbox -> turn off SSL verification" y se modifica la función relacionada.
- La función IsUsingSandbox se configura para que siempre devuelva true y así desactivar el certificate pinning.
Resultado
- Después de exportar el nuevo ejecutable y quitar la firma, se reemplaza el binario original de Messenger por el nuevo.
- Al reiniciar Messenger, la herramienta proxy muestra los encabezados, el cuerpo de la respuesta y toda la información de las solicitudes.
- Se logró interceptar las solicitudes modificando solo 4 bytes de los 97,477,728 bytes del binario.
Despliegue
- Tras compilar el binario, se le envía a Batuhan.
- Batuhan recibe el certificado de firma, lo instala y firma la aplicación.
- Una vez completada la firma, puede usar el binario en su sistema para ver sus propias solicitudes.
Opinión de GN⁺
- Este artículo ofrece un caso interesante de cómo investigadores de seguridad eluden el certificate pinning en la app Messenger de Meta.
- El certificate pinning es una función de seguridad importante para prevenir ataques man-in-the-middle, pero que los investigadores encuentren formas de eludirlo aporta ideas valiosas para la comunidad de seguridad.
- Esta técnica puede ayudar a desarrolladores a reforzar la seguridad de sus propias apps o servicios, y contribuir a encontrar y corregir vulnerabilidades.
- Sin embargo, también existe la posibilidad de que esta investigación se use con fines maliciosos, por lo que se debe tener cuidado al compartir los resultados.
- Otras herramientas que ofrecen funciones similares incluyen herramientas de análisis de red como Wireshark o Burp Suite, ampliamente usadas para monitorear y analizar tráfico de red.
1 comentarios
Opiniones de Hacker News
Curiosidad sobre el aspecto legal
Intentos de descompilar y recompilar, y dedicación
La pérdida de técnicas del pasado
Observaciones sobre las defensas de RE de Meta
IsUsingSandbox()en un build de producción.Certificate pinning en modo sandbox
Utilidad de los checksums binarios en tiempo de ejecución
Pregunta sobre el uso de herramientas proxy
Seguridad en aplicaciones de grandes empresas
Posibilidad de interceptar el tráfico de apps de Meta
Importancia del monitoreo del tráfico