SSL Pinning Bypass

Lo necesario para realizar el laboratorio:

Frida mantiene un conjunto de instrumentos que permite evaluar aplicaciones nativas, ya sea para inyectar código, interceptar datos, etc.
  •  APK =>
Una aplicación móvil que mantenga anillos de seguridad.
  • Dispositivo móvil o emulador =>
Para realizar el proceso completo de instalación de la APK, Frida y todo lo que conlleva el bypass de los anillo de seguridad.
  • Maquina local =>
Para realizar todo el proceso de instalaciones, uso de emulador, adb, etc.
Script para la omisión de SSL.
  • adb ⇒
Es una herramienta que permite interactuar con el dispositivo Android para ejecutar comandos.

Conceptos importantes:

SSL Pinning 

Las aplicaciones móviles comúnmente usan SSL para proteger los datos transmitidos de espionaje y manipulación mientras se comunican con un servidor. Las implementaciones de SSL en aplicaciones confían en un servidor que tiene un certificado, que a su vez cuenta con la confianza del almacén de confianza del sistema operativo (de forma predeterminada). El sistema operativo incluye una lista de autoridades de certificación en este almacenamiento.

El desarrollador configura la fijación de SSL para rechazar todos, excepto uno o algunos certificados predeterminados. El programa valida el certificado del servidor con el certificado anclado cada vez que se conecta a un servidor o servidores. La conexión SSL se realiza si y solo si el certificado del servidor y el certificado anclado coinciden.

Contenido

  • Configuraciones previas
  • Proceso del lado móvil.
  • Proceso del lado de la maquina local.
  • Configuración de BurpSuite para capturar el tráfico.

Configuraciones previas

👉NOTA: En este caso yo utilizo un celular físico Android ruteado (permisos root) conectado por USB a la maquina local (existe la posibilidad de instalar emuladores)

Instalación de adb en nuestra maquina local.

sudo apt install adb
Descargaremos el servidor de Frida según versión de arquitectura. Con el siguiente comando se puede obtener dicha información
adb shell getprop ro.producto.cpu.abi

👉NOTA: Debe tener el móvil o emulador funcionando. Una vez que tenga claro la arquitectura se descarga Frida. 

Se recomienda cambiar el nombre de origen por algo mas especifico, en mi caso “frida”.
Instalación repositorios de Frida desde nuestra maquina local.
pip install frida-tools
Finalmente descargamos el script de omisión SSL.

Proceso del lado móvil 

Posteriormente debemos traspasar Frida a nuestro móvil, en este caso lo enviamos a la carpeta tmp del sistema del dispositivo.
adb push frida /data/local/tmp/
Ingresamos al dispositivo con adb desde nuestra terminal y concurrimos a la ruta donde almacenamos el servidor de Frida (recuerda estar como root en el móvil para llegar a la ruta y para todos los pasos a continuación) 

👉NOTA: Debes tener el móvil rooteado, además de USB depurador y transferencia de archivo para que adb no tenga problemas con los pasos realizados.
   
adb shell
su root 
cd /data/local/tmp
ls
Una vez en la ruta, entregamos permisos de ejecución (chmod) y activamos el servidor Frida.
/data/local/tmp/frida &
Para verificar el proceso se puede realizar con el siguiente comando
ps -A | grep "frida"
👉NOTA: En el caso que necesite eliminar el proceso, puede ejecutar kill -9 id. De igual manera es necesario saber el id del proceso de la apk (para eso es necesario ingresar a la aplicación móvil desde el teléfono con la finalidad de hacerla funcionar)
ps -A
Ok! del lado del móvil ya tenemos todo configurado correctamente. 

Proceso del lado de la maquina local. 

Ahora volvemos a nuestra maquina local y procedemos a ejecutar el servidor Frida con los siguiente parámetros:
frida -U -l sslbypass.js -f nombre_app --no-pause
👉NOTA: Recuerde colocar el mismo nombre que aparece en el proceso del funcionamiento de la aplicación móvil en el parámetro -f. 

💥👌Listo, ya se realizo el bypass del SSL Pinning.

👉NOTA: Recuerde tener BurpSuite activado para que puedas ver el flujo, este proceso solo permitió poder bypass el sello de seguridad que bloquea poder captar el flujo de la aplicación, en el caso que no este configurado, lo explico brevemente a continuación.

Configuraciones de BurpSuite para capturar el trafico. 

Debes ingresar a BurpSuite e ir a las opciones del proxy para agregar la dirección IP correspondiente a la misma red que se encuentra el dispositivo Android y el puerto a utilizar.
Desde el dispositivo móvil debes descargar el certificado y cambiar la extensión por .crt
Una vez que realices lo anterior ya podrás capturar el trafico de la aplicación desde el momento que ingrese a ella.
💀Buen hacking!!
atte. LXBX.