交通傍受の問題
Androidでのモバイルアプリケーションの侵入テストのプロセスでは、アプリケーションがサーバーとどのように通信するか、どのアドレスとやり取りするか、どのようなリクエストがどのように見えるか、どのデータが送信されるかを調べる必要があります。しかし、これが常に可能であるとは限りません。
現在、HTTPSプロトコルは、HTTPおよびTLSプロトコルに基づいたWebアプリケーションのコンポーネント間の通信に使用されています。アプリケーショントラフィックを傍受することは、そのようには機能しません。暗号化されています。もちろん、プロキシサーバーを使用することもできます。プロキシサーバーは、その証明書を使用して、アプリケーショントラフィックを復号化し、すべての要求を確認できます。ただし、アプリケーション保護ツールは静止していません。多くのモバイルアプリはSSLピン留めを使用しています。
SSLピン留めは、サーバーで使用されるSSL証明書をモバイルアプリケーションコードに埋め込むことです。したがって、アプリケーションはデバイスの証明書ストアを使用せず、デバイスに挿入した証明書では機能しません。
アプリケーション保護方法
保護をバイパスする方法を理解するには、まず、この保護がどのように実行されるかを理解する必要があります。これを行うにはいくつかの方法があります。
トラストマネージャー
この方法では、アプリケーションファイルに証明書ファイルを追加してから、KeyStoreを作成し、それに証明書を追加する必要があります。
その後、TrustManager自体を作成します。これは、必要な証明書を含むKeyStoreと連携します。
次に、TrustManagerが使用するSSLContextを作成します。次に、作成したSSLContextからURLConnetctionのSocketFactoryを指定します。
この方法の主な本質は、プロジェクトで証明書ファイル自体を直接使用してから、この証明書でのみ機能するTrustManagerを作成することです。
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 |
, アプリケーションが変更から保護されている場合にも、問題が発生する可能性があります。 |
証明書ファイルのなりすまし |
実装が簡単 |
また、この方法は、アプリケーションを変更から保護する場合にも不便です。 |