Dévisser l'épinglage SSL dans les applications Android

Problèmes d'interception du trafic

Dans le processus de test de pénétration des applications mobiles sur Android, il est souvent nécessaire de savoir comment l'application communique avec le serveur, avec quelles adresses elle interagit, à quoi ressemblent les demandes, quelles données sont transmises. Mais ce n'est pas toujours possible de le faire.





De nos jours, le protocole HTTPS est utilisé pour communiquer entre les composants des applications Web, basé sur les protocoles HTTP et TLS. Cela ne fonctionnera pas comme ça pour intercepter le trafic des applications. il est crypté. Vous pouvez bien sûr utiliser un serveur proxy, qui, à l'aide de son certificat, pourra décrypter le trafic applicatif et voir toutes les requêtes. Cependant, les outils de protection des applications ne restent pas immobiles. De nombreuses applications mobiles utilisent l'épinglage SSL.





L'épinglage SSL est l'incorporation d'un certificat SSL utilisé sur le serveur dans le code de l'application mobile. Ainsi, l'application n'utilise pas le magasin de certificats de l'appareil et ne fonctionnera pas avec le certificat que nous y avons glissé.





L'erreur qui se produit lors de l'utilisation de la suite Burp pour intercepter le trafic avec son propre certificat
L'erreur qui se produit lors de l'utilisation de la suite Burp pour intercepter le trafic avec son propre certificat

Méthodes de protection des applications

Afin de comprendre comment contourner la protection, vous devez d'abord déterminer par quels moyens cette protection est effectuée. Il y a plusieurs moyens de le faire.





  • Gestionnaire de confiance





Pour cette méthode, vous devez ajouter un fichier de certificat aux fichiers d'application, puis créer un KeyStore et y ajouter notre certificat.





Après cela, nous créons le TrustManager lui-même, qui fonctionnera avec notre KeyStore, qui contient le certificat requis.





Ensuite, nous créons un SSLContext que notre TrustManager utilise. Ensuite, nous spécifions le SocketFactory pour la URLConnetction à partir du SSLContext créé.





L'essence principale de cette méthode est que nous utilisons directement le fichier de certificat lui-même dans le projet, puis créons un TrustManager qui fonctionnera uniquement avec ce certificat.





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





,





Des difficultés peuvent également survenir si l'application est protégée contre toute modification.





Usurpation de fichier de certificat





Facile à mettre en œuvre





Et cette méthode est également peu pratique dans le cas de la protection de l'application contre les modifications.








All Articles