使用 SSL 时拦截 POST 响应体有多难?

信息安全 tls drm
2021-09-08 20:54:49

对于通过 SSL 执行 POST 请求 (JSON) 并接收 JSON 对象作为响应的 Android 应用程序,获取 JSON 响应有多难?

反编译应用程序以获取请求并发送它并查看响应的最简单方法是什么?

什么是最简单的方法,以及可以使用哪些技术使其变得更加困难?

1个回答

这完全取决于应用程序本身以及实施了什么样的安全措施。假设请求是通过 HTTP(s) 发送的,那么最简单的方法是使用 Burp 之类的代理。您需要在移动设备上安装 CA 证书。您将能够在代理软件 (Burp) 中看到请求和响应。

APP <----> proxy <----> server

如果应用程序使用 SSL/TLS 固定,那么上述解决方案将无法开箱即用。某些功能将对证书执行额外检查,您需要篡改此类功能才能绕过它。一般有两种方式:

  1. 修补应用程序以删除 SSL/TLS 固定。这通常需要对应用程序进行解包、编辑、重新打包和重新签名。如果你问我,那就太烦人了。
  2. 挂钩 SSL/TLS 固定逻辑并禁用此类逻辑。Frida 是一个非常酷的工具(多平台),iOS 上的 Substrate 和 Android 上的 xposed。

第二种解决方案是根本不使用代理!通常使用 HTTP 客户端库来执行此类请求。您可以挂钩 HTTP 请求函数并直接打印内容。

APP <----> server
^-> hooked functions which prints the requests

当应用程序不使用标准 HTTP 请求时,第二种解决方案可能很有用。一些应用程序使用二进制协议,例如 gRPC,挂钩myclient_post(jsonData)函数并打印参数 + 响应比对二进制协议进行逆向工程、设置代理等更容易......

一些可能有用的链接: