web-dev-qa-db-ja.com

SSLが使用されている場合、POST応答本文をインターセプトすることはどのくらい難しいですか?

AndroidアプリケーションがSSL経由でPOST要求(JSON)を実行し、応答としてJSONオブジェクトを受信する)の場合、JSON応答を取得するのはどれほど難しいか?

アプリケーションを逆コンパイルしてリクエストを取得して送信し、レスポンスを確認する最も簡単な方法は何ですか?

最も簡単な方法は何ですか?それをより困難にするために使用できるいくつかのテクニックは何ですか?

17
user181807

それはすべて、アプリケーション自体と、どのようなセキュリティ対策が実装されているかによって異なります。リクエストがHTTP(s)経由で送信されると仮定すると、最も簡単な方法はBurpなどのプロキシを使用することです。モバイルデバイスにCA証明書をインストールする必要があります。プロキシソフトウェア(Burp)で要求と応答を確認できます。

_APP <----> proxy <----> server
_

アプリケーションがSSL/TLSピニングを使用している場合、上記のソリューションはそのままでは機能しません。一部の機能は証明書に対して追加のチェックを実行します。バイパスするには、そのような機能を改ざんする必要があります。通常、2つの方法があります。

  1. SSL/TLSピン接続を削除するためにアプリケーションにパッチを適用します。これには通常、アプリの解凍、編集、再パック、および再署名が必要です。あなたが私に尋ねるなら、かなり面倒です。
  2. SSL/TLSピン留めロジックをフックし、そのようなロジックを無効にします。フリーダは、これ(マルチプラットフォーム)のかなりクールなツールであり、iOSではSubstrate、Androidではxposedです。

2番目の解決策は、プロキシをまったく使用しないことです。通常、このようなリクエストを実行するためにHTTPクライアントライブラリが使用されています。 HTTPリクエスト関数をフックして、コンテンツを直接印刷できます。

_APP <----> server
^-> hooked functions which prints the requests
_

2番目のソリューションは、アプリが標準のHTTPリクエストを使用していない場合に役立ちます。一部のアプリはgRPCなどのバイナリプロトコルを使用します。バイナリプロトコルをリバースエンジニアリングしてプロキシを設定するよりも、myclient_post(jsonData)関数をフックしてパラメータ+応答を出力する方が簡単です。

役に立つかもしれないいくつかのリンク:

23
HamZa