MASTG-TECH-0119 アプリケーション層でネットワーク API をフックして HTTP トラフィックを傍受する (Intercepting HTTP Traffic by Hooking Network APIs at the Application Layer)

アプリをテストする目的によっては、トラフィックがネットワーク層に到達する前に、またはレスポンスがアプリで受信された際に、トラフィックを監視するだけで十分なことがよくあります。

つまり、特定の機密データがネットワークに送信されているかどうかを確認したいだけであれば、本格的な MITM 攻撃 (ARP スプーフィング攻撃など) をデプロイする必要はないことを意味します。このアプローチでは、TLS 検証やピン留めに干渉することはありません。

Frida を代替手段としてarrow-up-right 使用できます。

この技法は以下のような場合にも役立ちます。

たとえば、OpenSSL の SSL_writeSSL_read などの適切な関数をフックする必要があるだけです。

これは標準 API ライブラリ関数とクラスを使用するアプリでは非常にうまく機能しますが、以下のようないくつかの欠点があるかもしれません。

  • アプリはカスタムネットワークスタックを実装しているかもしれず、使用できる API を見つけるにはアプリの解析に時間をかける必要があるでしょう。このブログ記事arrow-up-right の "Searching for OpenSSL traces with signature analysis" セクションを参照してください。

  • (多数のメソッドコールと実行スレッドにまたがる) HTTP レスポンスペアを再構成するための適切なフックスクリプトを作成するのは非常に時間がかかるかもしれません。規制のスクリプトarrow-up-right代替ネットワークスタックarrow-up-right 用のスクリプトが見つかるかもしれませんが、アプリやプラットフォームによっては、これらのスクリプトには多くのメンテナンスが必要になるかもしれませんし、必ず動作する とは限りません。

いくつかの例をご覧ください。

Last updated