Bypaseando la verificación SSL en una app de flutter en Android. Parte 2)
En la primera parte vimos como encontrar el offset a parchear con frida, a partir de ahi solo deberíamos ejecutar el script de frida para que parchee la aplicacion que deseemos en memoria. Debido a que no deseaba rootear mi celular esto trajo aparejado otro desafiado.
Para resumir lo que haremos es lo siguiente.
- Desempaquetar nuestro APK objetivo
- Descargar el gadget de frida según la arquitectura de la aplicación objetivo arm64 o arm32.
- Inyectar el gadget en la aplicacion.
- Reempaquetar el APK.
- Subirlo e instalarlo a nuestro dispositivo.
- Configurar nuestro Linux como puerta de enlace.
Antes de arrancar cabe aclarar que necesitamos activar en nuestro dispositivo las “opciones de desarrollador”.
- Descargamos y descomprimimos “frida-gadget”.
|
|
- Desempaquetar el APK objetivo
|
|
Se recomienda utilizar apktool para el desempaquetado ya que unzip/zip no siempre funciona correctamente.
- Copiamos “frida-gadget” a la carpeta donde se encuentran los archivos desempaquetados.
|
|
- Escribimos un script en python para injectar “frida-gadget” usando la libreria lief(ver las instrucciones de instalacion en la pagina del proyecto)
|
|
Este script una vez ejecutado va a parchear “libflutter.so” y agrearle el gadget de frida como libreria.
- Correr el script.
|
|
- Reempaquetar el APK.
|
|
- Firmar el APK, podemos usar “Uber APK signer”.
|
|
- Instalar el APK. Con nuestro dispositivo con las opciones de desarrollador habilitadas podemos usar adb para hacerlo.
|
|
-
En nuestro dispositivo abrimos la aplicación instalada si la aplicación queda congelada es un buen indicio, si se cierra hay que revisar el proceso nuevamente ya que probablemente fallamos en algún paso.
-
Lo siguiente es correr el script de frida para que se “tracear” la aplicación y cada vez que se llame a la función encargaría de validar el certificado esta siempre devuelva que el resultado es correcto.
El script es el siguiente:
|
|
Recordar cambiar la variable “pattern” que corresponde a los primeros bytes del inicio de la función según corresponda lo que hayamos encontrado en ghidra.
Con el script una vez guardado ejecutamos lo siguiente.(Recordar que debemos instalar frida segun corresponda en Windows, MAC, Linux)
|
|
- Por ultimo como las aplicaciones en flutter ignoran la configuración del proxy que que hayamos seteado en Android vamos a configurar nuestra maquina con Linux como puerta de enlace
|
|
Con esto vamos a permitir el “fowarding” de paquetes y vamos a redirigir todo el trafico que llegue al puerto 443 y 80 al puerto 8080(cambiar la interfaz eth0 segun corresponda, por ejemplo si tienen su kali conectado por wifi en la notebook cambiar por wlan0, chequear cual es la interfaz correcta con el comando “ip a”)
- Cambiar la configuración de nuestro dispositivo con Android para usar nuestra maquina con Linux como puerta de enlace
A partir de aca ya vamos poder utilizar la herramienta que deseemos para analizar el trafico generado por nuestra aplicación.
Happy hacking!