Configurando Burp Suite para versiones superiores a Android Nougat

En las últimas semanas, estoy auditando varias aplicaciones de Android con Burp Suite, después de unos días de trabajo con mi vieja versión de Android 5.0 pensé que ya era hora de actualizar a una superior, y quizás, utilizar nuevas herramientas, aquí me tope con Genymotion gracias a un compañero de trabajo.

Una vez instalado y configurado Burp Suite con Android tal y como nos recomiendan en la web de Portswigger, me encontré con el siguiente problema:

The client failed to negotiate an SSL connection to [DOMAIN:443] Received a fatal alert: certificate_unknown
Errores mostrados por Burp Suite

Android, parecía no aceptar el certificado de Portswigger e impedía la navegación SSL, después de un rato buscando por Internet una solución al problema, me dí cuenta que las últimas versiones de Android, en concreto a partir de la API >= 24 (Nougat), sólo aceptan un certificado si este se encuentra en las CA a nivel de sistema o si se ha declarado expresamente en el fichero AndroidManifest.xml de configuración de la APK.

Para solucionar este problema, puedes seguir los siguientes pasos:

Visualizar los certificados

Para visualizar los certificados a nivel de sistema, necesitaremos descargarnos las
Platform Tools y conectarnos por ADB.

adb devices
adb connect [IP:PORT]
adb shell

Las CA de confianza para Android, se almacenan en un formato «especial» en la ruta:

/system/etc/security/cacerts
Visualización de los certificados del sistema en Android

Exportar y convertir la CA de Burp Suite

Como hemos visto al listar los certificados, Android requiere que el certificado esté en formato PEM y que tenga el nombre igual al subject_hash_old añadiendo al final .0

El primer paso, sería exportar el certificado de Burp Suite en formato DER

Exportación de CA Burp Suite

Seguidamente, necesitamos convertir la CA de Burp (en formato DER) a un formato PEM, esto podemos hacerlo con OpenSSL

openssl x509 -inform DER -in cacert.der -out cacert.pem

Obtenemos el subject_hash_old y renombramos el archivo

openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1
mv cacert.pem [SUBJECT-HASH-OLD].0
Conversión de formato DER a PEM son subject_hash_old

Añadir el certificado al dispositvo

Volvemos a hacer uso de ADB, al tener que copiar el archivo dentro del sistema de archivos (/system) previamente debemos de montarlo.

adb root
adb remount
adb push [SUBJECT-HASH-OLD].0 /sdcard/
Copia del certificado desde PC a dispositivo Android

Por último, abrimos una shell en el dispositivo, movemos el certificado a la carpeta /system/etc/security/cacerts y cambiamos los permisos a 644

adb shell
mv /sdcard/[SUBJECT-HASH-OLD].0 /system/etc/security/cacerts/ 
chmod 644 /system/etc/security/cacerts/[SUBJECT-HASH-OLD].0  
Copia del certificado a system y establecimiento de permisos

Finalmente, reiniciamos el dispositivo

reboot

Y podemos ver la CA de Burp Suite a nivel de sistema en el disposivito

Certificado de Burp Suite a nivel de sistema

Espero que os haya sido de ayuda!!

2 comentarios en “Configurando Burp Suite para versiones superiores a Android Nougat”

  1. Avatar

    Hola, tienes otra solución o recomendación si no tengo el dispositivo rooteado, la aplicación que estoy auditando no corre en dispositivos rooteados y tampoco he podido hacer un bypass de esta característica y poder empaquetar de nuevo el apk.

    Gracias

Deja tu comentario

Ir arriba