Android 7.0 + https captura nueva pose (no se requiere root)
En el próximo artículo, presentaremos un nuevo módulo Magisk a través del cual los certificados de cliente se agregan automáticamente al almacén de confianza de todo el sistema, lo que permite la captura de paquetes HTTPS para aplicaciones.
Algunos pasos para bloquear HTTPS en Android:
Una vez que completes los siguientes pasos, podrás ver el tráfico HTTPS enviado entre el navegador y el servidor.
Este método también funciona para el tráfico HTTPS de la aplicación, ya que la aplicación confía en todos los certificados de usuario instalados de forma predeterminada.
Notas adicionales
Formas en que los proveedores bloquean la captura de paquetes HTTPS:
Una forma de evitar que el tráfico de la aplicación sea interceptado es instalar un certificado Have dedicado. Esto significa que en cada conexión SSL, el certificado presentado por el servidor se compara con el certificado almacenado localmente. Una conexión SSL sólo tendrá éxito si el servidor puede proporcionar la identidad correcta.
Esta es una gran característica de seguridad, pero es un poco complicada de implementar y sabemos que a partir de Android 7.0, las aplicaciones ya no confían en los certificados de usuario de forma predeterminada.
Durante la fase de desarrollo, los desarrolladores pueden cambiar el archivo AndroidManifest.xml en su aplicación para configurar la propiedad networkSecurityConfig para aceptar certificados de usuario y luego completar las pruebas de captura y análisis de paquetes HTTPS de la aplicación.
Otro método es descompilar la aplicación, modificarla y recompilarla. Si la aplicación tiene empaquetado, cifrado y otras configuraciones, el proceso de descompilación será muy difícil. Se pueden encontrar tutoriales para descompilar aplicaciones en warroom.securestate.com.
También existe una manera de agregar credenciales de usuario al almacén del sistema. El directorio de almacenamiento se encuentra en /system/etc/security/cacerts y contiene archivos para cada certificado raíz instalado. Sin embargo, esto requiere permisos de lectura y escritura en el directorio /system/etc/security/cacerts, que es inaccesible para teléfonos normales sin root. Esta es una operación muy peligrosa si rooteas tu teléfono.
Magisk es una "interfaz universal sin sistema" que crea máscaras de modificación del sistema sin cambiar el sistema en sí. Magisk no modifica el directorio de partición /system, por lo que esta es una excelente solución para capturar paquetes para aplicaciones que tienen detección de raíz mejorada. Activar "Magisk Hide" desde la aplicación de destino hace que Magisk sea completamente invisible.
Magisk también admite módulos personalizados, que son muy fáciles de crear. Para reconocer cualquier certificado de usuario como certificado del sistema, hemos creado un módulo Magisk simple, que se puede encontrar en nuestro github: /NVISO-BE/MagiskTrustUserCerts
La funcionalidad de este módulo es la siguiente: muy básico:
Después de la instalación, el contenido del módulo Magisk se instalará en la carpeta /magisk/trustusercerts. Esta carpeta contiene varios archivos, pero el más importante es el directorio del sistema. Este directorio se fusiona automáticamente con el directorio real/system y en realidad no toca el directorio de partición /system. Por lo tanto, todos los certificados en /magisk/trusteusercerts/etc/security/ terminarán con /system/etc/security.
A continuación se explica cómo utilizar este módulo:
Una vez instalado, el certificado aparece en el almacén de confianza de todo el sistema y la aplicación confía en él:
Por supuesto , la aplicación aún no podrá interceptar el tráfico HTTPS si la propia aplicación ha establecido una conexión SSL privada, pero este pequeño módulo permite que las aplicaciones de Android 7. se ejecuten de la misma manera que las aplicaciones de Android anteriores a 7.0.
Enlace de la versión original en inglés: https://blog.nviso.be/2017/12/22/intercepting-https-traffic-from-apps-on-android-7-using-magisk-burp/