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!!






