Se trata de omitir Android SSL Pinning e interceptar aplicaciones de Proxy Unware.

Nov 27 2022
Hola H3ckers, todos sabemos que hay muchos artículos disponibles sobre "Cómo interceptar el tráfico HTTPS de las aplicaciones de Android", así que aquí no los vamos a cubrir. Si no ha encontrado ninguno, consulte lo siguiente: Configuración de un dispositivo Android para que funcione con Burp: requisitos previos de PortSwigger: familiarizarse con el proxy BurpSuite, Petesting básico de Android y herramientas como adb, frida, Objection, la aplicación Magisk, descompilar/recompilar APK y Firma de APK.

Hola H3ckers,

Todos sabemos que hay muchos artículos disponibles sobre "Cómo interceptar el tráfico HTTPS de las aplicaciones de Android", así que aquí no los vamos a cubrir. Si no ha encontrado ninguno, consulte lo siguiente:

Configuración de un dispositivo Android para trabajar con Burp: PortSwigger

requisitos previos:

Familiarizado con el proxy BurpSuite, Pentesting básico de Android y herramientas como adb, frida, Objection, aplicación Magisk, descompilación/recompilación de APK y firma de APK.

Tabla de contenido

  1. ¿Mi aplicación de destino tiene fijación SSL?
  2. Espera, ¿cómo podemos confirmar el Pinning?
  3. Tiempo para pasar por alto
  4. Por qué no puedo interceptar el tráfico de la aplicación incluso si la aplicación funciona con HTTP

Lo entiendo, suena como una broma, porque ustedes saben que si la fijación está en su lugar, entonces no podremos capturar el tráfico HTTPS de nuestra aplicación de Android de destino.

2. Espera, ¿cómo podemos confirmar la fijación?

Después de configurar el proxy tanto en el dispositivo como en el servidor proxy (Burp), inicie la aplicación de destino, luego realice algunas actividades que establezcan una comunicación entre la aplicación de destino y su servidor.

Es hora de monitorear el tablero de control de Burp, en específico, la sección de Registro. Si la fijación está en su lugar, podremos ver un error de certificado de la siguiente manera:

2. Tiempo para eludir

2.1 Mover certificado - Módulo Magisk:

Si su dispositivo está rooteado con la aplicación Magisk, entonces el módulo Move Certificate es una buena opción.

Este módulo moverá los certificados de confianza del usuario al almacén del sistema, haciendo que el sistema (raíz) confíe en el Certificado que instaló el usuario (Nuestro certificado CA proxy)

2.2 Herramienta de objeción

Repo: sensepost/objeción: objeción: exploración móvil en tiempo de ejecución (github.com)

Paso 1 : asegúrese de que el servidor Frida se esté ejecutando en el dispositivo Android

Paso 2: adjunte la aplicación de destino con objeción con el siguiente comando:

Objeción -g <nombre del paquete/ PID> explorar

Luego ejecute el comando " android sslpinning disabled "

Eso es todo, la secuencia de comandos encontrará las clases de fijación de SSL y las conectará durante el tiempo de ejecución para evitar la fijación.

2.3 Marco Frida

Repositorio : Frida (github.com)

Aquí viene el método más popular y ampliamente utilizado.

Paso 1 : asegúrese de que el servidor Frida se esté ejecutando en el dispositivo Android

Paso 2: Adjunte su aplicación de destino con frida y ejecute su secuencia de comandos de omisión de SSL favorita.

Los siguientes son mis guiones favoritos:

https://codeshare.frida.re/@akabe1/frida-multiple-unpinning/
https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

2.4 Usando Xposed Framework

Si su dispositivo está rooteado con el marco Xposed , entonces puede probar los siguientes módulos para evitar la fijación

  1. ac-pm/SSLUnpinning_Xposed: módulo Android Xposed para omitir la validación de certificados SSL (fijación de certificados). (github.com)
  2. ViRb3/TrustMeAlready: Deshabilite la verificación SSL y la fijación en Android, en todo el sistema (github.com)

apk-mitm es una aplicación CLI que prepara automáticamente los archivos APK de Android para la inspección HTTPS al modificar los archivos apk y volver a empaquetarlos.

Repo:

shroudedcode/apk-mitm: Una aplicación CLI que prepara automáticamente los archivos APK de Android para la inspección HTTPS (github.com)

apk-mitm se puede extraer usando npm.

Paso 1: Ejecute apk-mitm como se muestra a continuación.

Eso es todo, apk-mitm ha hecho su parte. Ahora podemos instalar el apk parcheado e interceptar el tráfico de la aplicación.

2.6 Modificación del archivo network_security_config.xml

La configuración de seguridad de la red permite que las aplicaciones personalicen la configuración de seguridad de su red a través de un archivo de configuración declarativo . La configuración completa está contenida dentro de este archivo XML y no se requieren cambios de código.

Fuente : configuración de seguridad de la red | Desarrolladores de Android

La configuración de seguridad de la red funciona en Android 7.0 o superior.

Paso 1 : Descompile la aplicación de Android con apktool o alternativas. Y busque el archivo network_security_config.xml en /res/xml.

Paso 2 : el archivo puede tener este aspecto si la aplicación ha anclado sus propios certificados de CA.

Fuente de la imagen: desarrollador.android.com

Paso 3 : elimine la sección de etiquetas <pin-set>… </pin-set> y agregue lo siguiente:

Paso 4: ahora guarde el archivo y vuelva a empaquetar la aplicación usando apktool y uber-apk-signer (para firmar el apk modificado).

Eso es todo, instale nuestra nueva aplicación y estará listo para comenzar.

3. ¿Qué pasa si la aplicación no es interceptada y tampoco muestra ningún error?

Aquí, lo primero que aparece en mi mente es " Flutter ". Las aplicaciones basadas en flutter son básicamente " Proxy inconsciente ".

Así que aquí viene nuestro héroe " Reflutter ":

Este marco ayuda con la ingeniería inversa de las aplicaciones Flutter utilizando la versión parcheada de la biblioteca Flutter que ya está compilada y lista para el reempaquetado de la aplicación. “

Repo:https://github.com/Impact-I/reFlutter

Paso 1: instale el reflutter usando pip

Paso 2: siga los comandos ilustrados en la siguiente captura de pantalla.

Paso 3: Firme la aplicación usando uber-apk-signer o cualquier alternativa e instálela.

Paso 4: ahora en el proxy Burp, comience a escuchar el puerto 8083 y también habilite " Soporte de proxy invisible ".

¡Eso es todo, todos están listos para irse...!

4. ¡Mi aplicación solo usa HTTP, pero aún así no puedo Interceptar!

Hmm... Eso es un poco raro, pero sucede a veces.

Las aplicaciones con este comportamiento se denominan básicamente aplicaciones " Proxy Unware ". Estas aplicaciones enrutan el tráfico directamente a Internet sin cooperar con la configuración de proxy de todo el sistema.

Tiempo para pasar por alto:

Por este método, me gustaría agradecer al hermano Faris ❤.

(60) Faris Mohamed | LinkedIn

Paso 1: Averigüe la dirección de dominio a la que se comunica la aplicación mediante Wireshark. Mostrado a continuación.

Paso 2: Descompilar la aplicación usando apktool

Paso 3: ingrese a la carpeta descompilada y use la herramienta ack/grep para encontrar el archivo en el que se menciona el nombre de dominio.

Paso 4: Reemplace el nombre de dominio con la dirección IP y el puerto de BurpSuite.

Paso 5: Vuelva a empaquetar la aplicación, fírmela e instálela en el dispositivo Android.

Paso 7: en el proxy de BurpSuite, desde la pestaña Manejo de solicitudes, proporcione el host y el puerto de redirección como la dirección de dominio original que utilizó la aplicación en primer lugar.

Paso 8: configure la coincidencia y el reemplazo en las opciones de proxy para reemplazar el valor del encabezado del host de la dirección IP del oyente de eructos a la dirección de dominio original de la aplicación

Eso es. Ahora el tráfico HTTP de la aplicación se capturará en nuestro proxy Burp.

Nota: — Aquí, dado que reemplazamos el dominio de la aplicación codificada, no necesitamos configurar el proxy del dispositivo ya que la aplicación se comunica directamente con el dominio codificado (lo hemos reemplazado con nuestra IP de proxy).

Así que creo que lo he hecho por ahora. De hecho, hay otros métodos más que podemos usar para eludir la fijación de SSL de Android. Intentaré hacer una Parte 2 con eso en base a sus respuestas.

Gracias amigos, Feliz hackeo :)