web-dev-qa-db-ja.com

パケットキャプチャアプリを起動すると、他のアプリとのインターネット接続ができなくなります

Android電話-Samsung Galaxy S7 Edgeを実行しているAndroidバージョン8.0にパケットキャプチャをインストールしました。ルート化されていません。

すべての手順に従い、SSL証明書もインストールしました。

これがアプリです link

スタートボタンをクリックしてトラフィックをキャプチャすると、アプリのインターネット接続が機能しません。 Chromeは電話でも機能します。

インターネットにアクセスできなくなったときに試したアプリは、Amazon、Owl Cam、Arloでした。

どのような設定や変更が欠けているのでしょうか?

Stackoverflowで同様の質問を回答なしで検索しました

1) Question1

短い答え:

問題に対する完全な解決策はありません。そしてそれを解決することは不可能です。この問題が発生する理由は、「証明書のピン留め」の存在です。単純な発根でも問題を解決することはできません。

それでも部分的な解決策があります。 Turn off 'SSL Capture'。その後、すべてのアプリが機能し始めます。ただし、SSL接続を介して送信されたパケットの内容を復号化することはできません。ただし、パケットの送信元アドレスと宛先アドレスは引き続き確認できます。パケットスニッファーアプリケーションにSSLパケットスニッフィングをオフにするオプションがない場合は、アプリをアンインストールし、インストールされているカスタムCA証明書をすべて削除してから、アプリを再インストールします。

長い答え:

通常のパケットスニファ(ルートを必要としない)がAndroidでどのように機能するか

Androidでは、アプリを「VPNゲートウェイアプリ」として機能させることができます。アプリがAndroid= VPN接続を提供することを望んでいることを伝えると、Androidは他のすべてのアプリからVPNアプリにインターネット宛てのすべてのIPパケットを転送します。次に、VPNアプリは通常、これらのパケットを暗号化してVPNサーバーに送信し、そこからパケットは元の宛先に送信されます。

Packet Snifferパケットは、上記の機能を利用しています。 Androidには、VPNアプリのように見えます。したがって、一度オンにすると、AndroidはすべてのIPトラフィックをこのアプリに送信します。ただし、VPNサーバーに転送するために、Packet Snifferアプリはそれらを元の宛先に送信するだけです。これはパケットスニッファーアプリは単に透過的なプロキシのように動作します。アプリはすべての送受信トラフィックに対応します。これらのアプリは基本的に「中間者」のように動作します。

TSL/SLLおよび認証局

SSL(およびHTTPS)は、ほぼすべての種類の「中間者」攻撃を防止する目的で構築されています。 SSLは通常のTCP接続で実行されます。クライアントとサーバーの間で送信されるすべてのトラフィックを、クライアントとサーバーだけが知っている秘密鍵で暗号化することです。 SSLの仕組みに関する詳細かつ正確な情報を読む ここ

TLS/SSL接続のセットアップ中に、クライアントデバイスはサーバーにデジタル署名証明書(別名SSL証明書)を表示するように要求し、サーバーが本物であると主張していることを証明します。つまり、AmazonアプリがAmazon.comに接続しようとすると、サーバーが実際にAmazon.comであることを証明するデジタル署名証明書を生成するようサーバーに要求します。サーバーが証明書を送り返すと、アプリはAndroidオペレーティングシステムに証明書がAndroidの誰かによってデジタル署名されているかどうかを尋ねます
信頼。 Androidオペレーティングシステムが信頼するCA(認証局)によって実際に証明書が署名されている場合、接続は続行されます。それ以外の場合、アプリは接続できないというエラーを表示します。

通常、パケットスニッフィングアプリはTLS/SSLパケットをスニッフィングできますか?

Packet Snifferアプリは、AndroidのシステムにカスタムCA証明書をインストールするようユーザーに要求します。そのCA(認証局)証明書により、Packet Snifferアプリは、そのデバイス上で正当かつ信頼できるTSL/SSL証明書発行局として扱われます。

これで、すべてのアプリがデフォルトで、Packet Snifferアプリによって署名されたTSL/SSL証明書を受け入れます。そのため、Amazon Appなどのアプリがパケットスニファアプリの実行中にSSL/TLS/HTTPS接続を確立しようとすると、PacketSnifferアプリはTLS/SSL/HTTPS接続を確立します。 Packet SnifferアプリとAmazon.comサーバー。 Packet Snifferは、実際にはAmazon.comサーバーであると主張する偽のSSL証明書を表示します。 Androidは、Packet Snifferアプリによって署名されたすべてのSSL証明書を信頼するようになったため、接続はAmazonアプリをだまして続行されます。

このようにして、Packet Snifferアプリは通常、SSL接続を介して送信されたパケットでさえ、キャプチャして復号化できます。

証明書のピン留め

上記のようなパケットスニファアプリがSSL接続を介して送信された情報を復号化できる場合、悪意のあるユーザーも同じことを行う可能性があります。彼がする必要があるのは、どういうわけかユーザーにAndroidにCA証明書をインストールするように説得することだけです。その後、彼はすべてのWhatsAppメッセージ、銀行アプリからのバンキングパスワード、AmazonアプリがAmazon.comに送信するクレジットカード情報を読み取ることができるようになります。

そのため、一部のアプリ、特にクレジットカードの詳細などの機密性の高いデータを扱うアプリのメーカーは、Android OS(またはiOS、Ubuntu、Windows)にアプリを信頼することはできないと判断しました。実際に正当なサーバーに接続されているかどうか。

したがって、彼らはcertificate pinning

これらのアプリのメーカーは、サーバーのSSL証明書自体のコピーをアプリ内に埋め込むか、使用する認証局のSSL証明書のコピーを埋め込むことができます。

これらのアプリは、サーバーによって生成された証明書と、アプリに組み込まれている証明書を比較します。一致しない場合、アプリは接続を拒否します。これらのアプリはオペレーティングシステムに信頼を置きません。したがって、Packet SnifferアプリがインストールしたカスタムCA証明書は、それらのアプリには影響しません。

証明書のピン留めを簡単にバイパスする既知の方法はありません(各アプリを逆コンパイルして埋め込み証明書を置き換える以外に、ルート化されたデバイスでも同様です)。証明書のピン留めは、達成しようとしていることを正確に防止する目的でのみ存在します。 Packet SnifferアプリでSSLスニッフィングを有効にすると、証明書のピン留めを使用するすべてのアプリが機能しなくなります。

ソリューション

消す SSL Capture。パケットスニッファーアプリケーションにSSLパケットスニッフィングをオフにするオプションがない場合は、アプリをアンインストールし、インストールされているカスタムCA証明書をすべて削除してから、アプリを再インストールします。

8
Vishnuprasad R