Desenroscar el anclaje SSL en aplicaciones de Android

Problemas de interceptación de tráfico

En el proceso de prueba de penetración de aplicaciones móviles en Android, a menudo es necesario averiguar cómo se comunica la aplicación con el servidor, con qué direcciones interactúa, qué aspecto tienen las solicitudes y qué datos se transmiten. Pero no siempre es posible hacer esto.





Hoy en día, el protocolo HTTPS se utiliza para la comunicación entre los componentes de las aplicaciones web, que se basa en los protocolos HTTP y TLS. No funcionará así para interceptar el tráfico de aplicaciones. está encriptado. Por supuesto, puede utilizar un servidor proxy que, utilizando su certificado, podrá descifrar el tráfico de la aplicación y ver todas las solicitudes. Sin embargo, las herramientas de protección de aplicaciones no se detienen. Muchas aplicaciones móviles utilizan SSL Pinning.





SSL Pinning es la incrustación de un certificado SSL que se utiliza en el servidor en el código de la aplicación móvil. Por lo tanto, la aplicación no usa el almacén de certificados del dispositivo y no funcionará con el certificado que le insertamos.





El error que ocurre al usar la suite Burp para interceptar el tráfico con su propio certificado
El error que ocurre al usar la suite Burp para interceptar el tráfico con su propio certificado

Métodos de protección de aplicaciones

Para comprender cómo anular la protección, primero debe averiguar por qué medios se lleva a cabo esta protección. Hay varias formas de hacer esto.





  • Gerente de confianza





Para este método, debe agregar un archivo de certificado a los archivos de la aplicación, luego crear un KeyStore y agregarle nuestro certificado.





Después de eso, creamos el propio TrustManager, que funcionará con nuestro KeyStore, que contiene el certificado requerido.





A continuación, creamos un SSLContext que utiliza nuestro TrustManager. Luego especificamos SocketFactory para URLConnetction desde el SSLContext creado.





La esencia principal de este método es que usamos directamente el archivo de certificado en el proyecto y luego creamos un TrustManager que funcionará solo con este certificado.





API , .





  • OkHttp CertificatePinner





OkHttp. CertificatePinner, fingerprint .





fingerprint , , .





.





  • Network Security Configuration





Android 7.0 . res/xml/ network_security_config.xml, fingerprints, OkHttp.





AndroidManifest.xml android:networkSecurityConfig.





, .





  • Frida





Frida – . , , .





SSL Pinning Frida , TrustManager, . .





CertificateFactory X509Certificate .





 FileInputStream BufferedInputStream .





KeyStore – KeyStore, .





TrustManagerFactory TrustManager, KeyStore.





SSLcontext – SSL, factory sslSocketFactory.





cert-der.crt, , .





keyStore, .





trustManager, keyStore .





Frida. SSLContext. , , . . , , TrustManager . , .





, TrustManager, , ( a , b TrustManager).





Frida , . Frida , OkHttp CertificatePinner.





apk . , .





, Frida, frida-server , .





  • apk





, , SSL Pinning, .





apk . smali . Smali – android-. .smali , .





apktool. apk, Visual Studio Code ApkLab.





smali, Java-, . , .





ApkLab . .





: checkClientTrusted, checkServerTrusted, getAcceptedIssuers.





, , , , , . Java- .





, . mo9499a ( - ), , . , , , , . . , , .





getAcceptedIssuers . , , . : , keyStore ( m7931a), .





, .. . , - , , , smali. . - -.





OkHttp CertificatePinner. , OkHttpClient CertificatePinner. smali , , CertificatePinner OkHttpClient.





  • NSC (Network Security Configuration)





SSL Pinning.





, NSC, . NSC base-config domain-config.





base-config , .





domain-config .





<domain-config>.





ApkLab NSC .





, AndroidManifest.xml.









, TrustManager, KeyStore, . KeyStore . .apk KeyStore /res/raw, /assets.





, .





, SSL Pinning , , , . , , , , , .





Frida , , . , Frida.





apk , SSL Pinning. . , , .





Network Security Configuration , . SSL Pinning , .





KeyStore . , , - (, -).









,





Frida





TrustManager, OkHttp CertificatePinner





APK





TrustManager, OkHttp Certificate Pinner, NSC





NSC





NSC









TrustManager

















Frida





,









, ,





Frida





APK









,





NSC









Android 7.0





,





También pueden surgir dificultades si la aplicación está protegida contra modificaciones.





Suplantación de archivos de certificado





Fácil de implementar





Y este método también es inconveniente en el caso de proteger la aplicación de cambios.








All Articles