1 puntos por GN⁺ 2024-03-06 | 1 comentarios | Compartir por WhatsApp

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

 
GN⁺ 2024-03-06
Opiniones de Hacker News
  • Curiosidad sobre el aspecto legal

    • Se pregunta por la legalidad de este tipo de acción.
    • Asumía que técnicamente sería una violación de la DMCA, pero sospecha que esa suposición podría ser incorrecta.
    • Plantea dudas sobre cómo esto puede ser legalmente posible.
  • Intentos de descompilar y recompilar, y dedicación

    • Intentó una ruta similar, pero se rindió en la etapa de descompilar/editar/recompilar.
    • Expresa admiración por ese nivel de dedicación y se pregunta cuánto tiempo se invirtió en ello.
    • Dice que él mismo suele fijar un límite de tiempo y respetarlo.
  • La pérdida de técnicas del pasado

    • Recuerda la época de +Orc.
    • Señala que gran parte del conocimiento de entonces, como cómo encontrar y eliminar bifurcaciones no deseadas, ya se ha olvidado.
    • Ahora hay muchas más tecnologías distintas que aprender.
  • Observaciones sobre las defensas de RE de Meta

    • Señala que las defensas contra ingeniería inversa (RE) de Meta, especialmente en Messenger, son bastante permisivas.
    • Menciona que sería sencillo eliminar IsUsingSandbox() en un build de producción.
    • Afirma que incluso antes de usar técnicas avanzadas de ofuscación, estas defensas ya serían fáciles de superar.
  • Certificate pinning en modo sandbox

    • Menciona que también habría formas de forzar el certificate pinning incluso en modo sandbox.
    • Recuerda que en la universidad intentó interceptar con MitM el tráfico de Snapchat, pero fracasó.
  • Utilidad de los checksums binarios en tiempo de ejecución

    • Pregunta si los checksums binarios en tiempo de ejecución habrían ayudado a complicar las modificaciones.
    • Se pregunta si eso no es un procedimiento común en apps móviles, o si los SDK de iOS o Android ofrecen algo así.
    • Como la solución final fue simplemente modificar unos pocos bytes del binario, piensa que eso podría haberlo evitado.
  • Pregunta sobre el uso de herramientas proxy

    • Pregunta por la herramienta proxy usada en la publicación.
    • Tiene curiosidad por saber si esa herramienta enruta el tráfico de todas las aplicaciones mientras está ejecutándose.
  • Seguridad en aplicaciones de grandes empresas

    • Se pregunta por qué las aplicaciones de grandes empresas no están completamente ofuscadas ni incluyen otras protecciones que rechacen la ejecución de binarios modificados.
  • Posibilidad de interceptar el tráfico de apps de Meta

    • Afirma que no hace falta interceptar el tráfico de las apps de Meta.
    • Comparte un enlace a la página educativa del bug bounty de Meta.
  • Importancia del monitoreo del tráfico

    • Destaca que esto es importante para desmentir la teoría conspirativa de que la app de Facebook espía a los usuarios por el micrófono para mostrarles anuncios dirigidos.
    • La forma más fácil de refutarlo sería monitorear el tráfico entre la app y los servidores de Facebook, pero el certificate pinning lo dificulta.
    • Aunque es difícil convencer a quienes creen en teorías conspirativas, considera importante saber que este tipo de monitoreo puede hacerse.