假设我正在尝试对 Android 应用程序和使用 HTTPS 的 Web 服务器之间的通信进行逆向工程。
一开始,我尝试使用 webmitm 和假证书来做 MITM。但是应用程序无法启动,因为 webmitm 使用的假证书不受应用程序的信任。(假设应用程序有自己的方式来决定它信任的证书,我无法将假证书作为受信任的证书导入 Android)
所以我来了另一种方法。我注意到应用程序和 Web 服务器都支持弱密码(例如 TLS_RSA_EXPORT_WITH_RC4_40_MD5 )。所以我在想,不是使用假证书作为桥接器,而是有任何 mitm 工具只更改客户端 Hello 数据包以强制执行弱密码,并转发服务器的原始证书而不解密或加密中间的任何内容。
换句话说,当app发送“Hello Webserver, I support the following cipher suites: XXX YYY ZZZ. Please choose one your support”时,mitm工具截取这个数据包,并将其更改为“Hello Webserver, I only support TLS_RSA_EXPORT_WITH_RC4_40_MD5”并将其转发到 Web 服务器。由于他们俩都支持此密码套件,因此他们将在其余的通信中使用它。而 mitm 工具只是转发它们之间的所有内容,并记录所有数据包。然后我尝试离线解密记录的数据包。
任何的想法?