web-dev-qa-db-ja.com

Androidアプリが使用するURLを誰かが検出できますか?

Android特定のURLにHTTPS接続するアプリがあります。このURLを秘密に保つ方法はありますか?

その接続のIPアドレスとポート番号を検出できることは知っていますが、正確なホスト名、さらに重要なのはURIやクエリ文字列はどうなりますか?

ルーターや他のネットワーキング「ハック」を経由するだけでなく、他のAndroidアプリまたはEclipseプラグインを使用することも意味します。

アプリはネイティブであり、コード内のURLを難読化して非表示にする方法を知っているため、アプリを逆コンパイルしても表示されません。

6
ilija139

HTTPS(つまり、SSL/TLS)は、URL全体を含むすべてのHTTP通信を暗号化します。ドメイン名はプレーンテキストでDNSに送信されるため、HTTPSはドメイン名を保護しますしませんが、残りのURLは保護します。他のアプリは、URLを含むアプリのSSL/TLS暗号化トラフィックにアクセスできません。したがって、SSL/TLS接続が安全にセットアップされている限り、攻撃者はトラフィックからURIを取得できません。

しかし、あなたが書いた最後の文から(「私はコード内のURLを難読化して非表示にする方法を知っているので、アプリを逆コンパイルしても見えません」)完全な攻撃者からURLを保護する必要があることを理解していますデバイスへのアクセス(デバイスの所有者など)。この場合、攻撃者が自分のCA証明書をデバイスにインストールすることが可能であるため、SSL/TLS接続がセキュリティで保護されていることに依存することはできません。攻撃者がサーバーになりすまして中間者攻撃を実行できるため、SSL/TLSのセキュリティが完全に無効になります。これは Alexey V. BorodinのハッキングApple =アプリ内購入 。ハードコードされたSSL証明書を使用している場合でも、攻撃者はデバイスをルート化し、O/Sを変更してすべてのSSL/TLS通信をクリアテキストで出力できます。したがって、HTTPSはしない自分のデバイスでアプリを実行している攻撃者からURIを保護します。

16
  1. コンピュータに アドホックネットワーク をセットアップします。
  2. 新しく作成したネットワークに電話を接続します
  3. Wireshark を使用して、どのような接続が行われているかを確認します
5
Henning Klevjer

HTTPS接続では、URLデータは暗号化されます。接続されているサーバーのIPアドレスとポートは、パケットスニファーを使用して簡単に列挙できるため、URLをスニッフィングできるかどうかはサーバーが秘密ではない可能性があります。 https(つまりSSL/TLS)接続内で送信されるデータは、中間者がいない限り秘密です。その件に関する以前の説明を参照してください。

オブジェクトがアプリがどのシステムに接続しているのかを誰かに見られないようにすることを目的とする場合、考えられる唯一の方法は、ある種のVPNを介してトラフィックをトンネルし、すべてのリスナーがトラフィックを傍受できないようにすることです反対側から。ある種のアノニマイザーを介してトラフィックを送信すると、これを実現できます。

4
GdD