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