Esta guía describe cómo utilizar la herramienta Android Unpinner para hacer bypass del certificate pinning en aplicaciones Android, lo que permite interceptar y analizar tráfico HTTPS.
- Python 3.x instalado
- Un dispositivo Android o emulador conectado
- USB Debugging activado en el dispositivo
- La APK que deseas analizar
- Clona el repositorio:
$ git clone https://github.com/mitmproxy/android-unpinner.git
$ cd android-unpinner- Instala el paquete en modo desarrollo:
$ pip install -e .$ android-unpinner device-infoEste comando mostrará información sobre el dispositivo conectado, incluyendo:
- Modelo
- Versión de Android y API level
- Arquitectura
- Estado del USB Debugging
$ android-unpinner analyze-apk "ruta/a/tu/aplicacion.apk"Este comando analizará la APK e identificará los métodos de certificate pinning utilizados, como:
- OkHttp
- TrustManager
- WebView
- Retrofit
- Conscrypt
- JSSE
También recomendará el script de unpinning más adecuado para la aplicación.
Hay dos opciones:
a) Usando el comando completo que hace todo en un paso:
$ android-unpinner all --script universal-unpinner.js "ruta/a/tu/aplicacion.apk"b) O instalando manualmente la APK modificada si el comando anterior falla:
$ adb install "ruta/a/tu/aplicacion.unpinned.apk"$ android-unpinner start-app --script universal-unpinner.js com.nombre.paqueteReemplaza com.nombre.paquete con el nombre del paquete de tu aplicación.
$ adb shell settings put global http_proxy [TU_IP]:8080Reemplaza [TU_IP] con la dirección IP de la máquina donde está ejecutándose tu proxy (Burp Suite, OWASP ZAP, mitmproxy, etc.).
$ adb shell ps | grep [nombre_paquete]Ahora puedes usar tu herramienta de proxy (Burp Suite, OWASP ZAP, etc.) para capturar y analizar todo el tráfico HTTPS de la aplicación, ya que el certificate pinning ha sido desactivado.
Si encuentras el error "frida-server: inaccessible or not found", sigue estos pasos:
- Sube el archivo frida-server al dispositivo:
$ adb push frida-server-[version]-android-[arch] /data/local/tmp/frida-server- Asigna permisos de ejecución:
$ adb shell chmod 755 /data/local/tmp/frida-server- Ejecuta frida-server:
$ adb shell "/data/local/tmp/frida-server &"Prueba estos comandos alternativos:
$ adb install "aplicacion.unpinned.apk"O si necesitas reemplazar una instalación existente:
$ adb install -r "aplicacion.unpinned.apk"android-unpinner list-packages: Listar todos los paquetes instaladosandroid-unpinner get-apks [package_name] [output_dir]: Descargar APKs del dispositivoandroid-unpinner list-scripts: Listar scripts de unpinning disponibles
Esta guía fue creada por el equipo de hacking como referencia para trabajar con Android Unpinner.