Bypass root detection (rootbeer) + Bypass SSL with Frida and burpsuite

Esta entrada está dirigida para los escenarios siguientes:

  • Queremos interceptar el tráfico saliente de una APP en Android 
  • No podemos interceptar tráfico SSL debido a que no somos root
  • Para poder interceptar tráfico SSL entre la APP y la API necesitamos ser root
  • La aplicación detecta si el móvil está rooteado y no deja correr la APP

Entonces necesitamos lograr dos cosas diferentes:

  • Saltar la protección antiroot de la librería rootbeer (en este caso la librería usada de protección)
  • Interceptar todo el tráfico SSL 

En este laboratorio usamos el emulador Genymotion enstalamos un máquina virtual móvil con API 25

Actualizamos PIP para python versión 3
Python3 -m pip install --upgrade pip

Instalamos frida-tools
python3 -m pip install frida-tools

Obtener arquitectura de Android
adb shell getprop ro.product.cpu.abi

Obtener versión de frida
frida –version

Descargar frida server en el móvil
Tiene que ser la misma versión del frida cliente obtenenida anteriormente
https://github.com/frida/frida/releases

Subir server de frida al móvil
adb push frida-server /data/local/tmp/

Dar permisos
adb shell “chmod 755 /data/local/tmp/frida-server”

Ejecuta frida en segundo plano
adb shell “/data/local/tmp/frida-server &”

Ver procesos de android corriendo
frida-ps -U

Instalar y abrir aplicación

No corre en teléfono rooteado

Aquí es cuando frida entra en acción

Ver que el proceso de la APP esté corriendo
frida-ps -U | findstr “nombreapp”

Entrar a la página de frida
https://codeshare.frida.re/

Descargamos los dos archivos JS
https://codeshare.frida.re/@dzonerzy/fridantiroot/
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

Fusionar los dos JS anteriores en un solo archivo.js

Copiamosel certificado de burp en formato CRT al móvil
adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt

Cagar JS con frida y se lo pasamos al proceso de la APP elegida
frida -U -f com.****.nombreapp -l root.js

Listo se ejecuta la app en un teléfono rooteado y podemos interceptar todo el tráfico SSL entre la APP y la WEB API

Este artículo ha sido redactado por zer0max y en colaboración de mi buen amigo y colega arthusu https://arthusu.blogspot.com/.

2 Comments

  • Yoel 17 agosto, 2019 Reply

    Buen articulo. ¿Cuál app usas para las pruebas?

    • Netploy TEAM 31 octubre, 2019 Reply

      Para esta prueba se utilizó una APP en android, normalmente las aplicaciones de instituciones financieras utilizan este tipo de aplicaciones y puedes hacer pruebas. Saludos!

Deja un comentario