web-dev-qa-db-ja.com

AndroidアプリAPIに対する中間者(MITM)攻撃を防ぐにはどうすればよいですか?

アプリをチェックアウトしましたPacket Capture

このアプリは、Android VPNサービスを使用してMITM攻撃をマウントすることで、アプリのAPI(SSL有効)データを復号化できます。これにはルートも必要ありません。

どうすればそれを防ぐことができますか?安全なデータをサーバー経由でAndroidデバイスに送信します。

14
Madhur Ahuja

そのアプリ(およびSandroProxyやmitmproxyなどのすべてのMITMプロキシアプリ)は、デバイスに独自の信頼できるCA証明書をインストールすることで機能します。これにより、デバイスが受け入れる独自の証明書に署名できます。

次のようなダイアログを使用して、証明書をユーザーのキーストアに手動でインストールする必要があります。

enter image description here

その後、次のような警告が表示されます。

enter image description here

enter image description here

ユーザーが意図せずにこれを実行することは(完全に不可能ではありませんが)発生する可能性が低いため、全体としては脅威はかなり低いものです。

とは言っても、悪意のあるCA証明書が誰かにインストールされていてもアプリを保護したい場合は、 certificate pinning を実装する必要があります。

デバイスがルート化されている場合、攻撃者が悪意のある証明書をインストールし、それを隠蔽し、アプリを変更して検証を侵害し、ピン留めを防止することが考えられます。ただし、不正なものがrootアクセスを持っている場合、基本的にデバイス全体が何らかの方法で侵害されます。

22
thexacre

thexacreからの適切な回答 の範囲を広げるには:アプリケーション自体が証明書のチェックを正しく実行している場合(すべてではありませんが、 http://www.kb.cert.org/vulsを参照)/id/582497 )MITM攻撃は、攻撃者がデバイスの所有者から何らかの方法で信頼されている場合にのみ可能です。アプリケーションが何をするのか興味がある所有者の場合、攻撃者は所有者自身ですが、デバイスを侵害した外部の攻撃者である可能性もあります(つまり、不要な信頼関係)。この信頼がある場合のみ、SSL接続を傍受するために必要な追加の信頼できるCAをインストールできます。

また、証明書のピン留めまたは公開キーのピン留めを使用して、SSL傍受の問題をアプリケーションの外部で回避することもできますが、知識の豊富な攻撃者は、アプリケーションにフックして、暗号化されていないデータをアプリケーションの内部から直接抽出できる可能性があります。一般に、攻撃者が十分に制御できる環境でソフトウェアが実行されている限り、この種の攻撃を防ぐことはできません。 DRMソリューションやマルウェアでよく使用されるアンチデバッグテクニックを使用して、さらに困難にしようとする場合があります。

4
Steffen Ullrich