如何拦截和分析移动 SSL 应用流量?

信息安全 加密 移动的 代理人 即时通讯
2021-08-30 14:25:25

分析移动应用程序通过 SSL 发送的请求的最佳方法是什么?通信协议不一定是 HTTP/S,因此使用 BURP/ZAP/Fiddler 或任何其他 HTTP 代理拦截它们不一定有效,但是 - 我如何让流量甚至到达代理?

我在这里阅读了一些与类似主题相关的材料,但我找不到我可以遵循以实际执行此任务的完整流程的描述。

安装应用程序的设备是否需要 root 才能执行此任务?

如果应用程序使用证书固定,还有办法做到这一点吗?

我特别有兴趣了解 Whatsapp 安全模型的工作原理——即他们有什么机制来防止恶意用户获取合法用户的聊天历史记录(因为没有实际登录——是否有 cookie/另一个从设备发送的识别服务器前用户的机制?)

我的组织正在考虑实施一个以类似方式工作的消息传递应用程序,我们正在努力确保恶意用户无法窃取合法用户的身份。(我们不打算实现登录机制)

3个回答

如果您使用或可以访问 Mac 或 Linux机器,那么MITMProxy是一个很好的拦截 https 流量和 http 的应用程序。它不仅非常适合查看通过的流量,而且您可以非常轻松地对其进行修改。查看 https 流量所需要做的就是在要拦截的设备上安装提供的证书,然后将目标设备上的代理设置更改为您的计算机 IP,并将端口设置为 8080。更多信息可在他们的文档中找到.

分析移动应用程序通过 SSL 发送的请求的最佳方法是什么?通信协议不一定是 HTTP/S,因此使用 BURP/ZAP/Fiddler 或任何其他 HTTP 代理拦截它们不一定有效,但是 - 我如何让流量甚至到达代理?

对于经典 HTTPS,您应该使用 Burp/Zap/mitmproxy,因为我知道没有更好的替代方案。我还没有真正看到在应用程序中使用 SSL/TLS 套件的任何其他协议,但我要么尝试对应用程序进行逆向工程以获取协议,要么尝试获取加密密钥并解密流量。但这需要很多时间。

您确定它真的是非标准端口上的 HTTPS 以外的其他协议吗?

安装应用程序的设备是否需要 root 才能执行此任务?

您不需要根设备进行 HTTPS 嗅探,您所要做的就是设置代理和受信任的证书。对于其他协议 - 嗯,这取决于......您可以将所有流量重定向到您选择的网关,但只要协议是加密的,我相信这对您没有多大用处。

如果应用程序使用证书固定,还有办法做到这一点吗?

是的,可以在两个主要平台上绕过证书固定。两者都需要 root ,想。

  • 对于 Android,有一个名为 SSL Trust Killer 的 Cydia Substrate 扩展,它通过拦截某些调用并修改它们以在验证期间返回 true 来工作。除非有自己的证书检查实现,否则这将起作用。否则,证书检查中很可能存在实现错误;)

  • iOS 有几种机制,我使用的一种是通过 Snoop-it 框架。如果这不起作用,您可以随时恢复到方法调配。

我特别有兴趣了解 Whatsapp 安全模型的工作原理——即他们有什么机制来防止恶意用户获取合法用户的聊天历史记录(因为没有实际登录——是否有 cookie/另一个从设备发送的识别服务器前用户的机制?)

我的组织正在考虑实施一个以类似方式工作的消息传递应用程序,我们正在努力确保恶意用户无法窃取合法用户的身份。(我们不打算实现登录机制)

好吧,您最好的选择是聘请有能力的渗透测试人员进行应用程序安全评估。我认为 WhatsApp 的安全性应该非常高,因为他们很少发生严重的安全事件,而且他们是一个拥有庞大用户群的知名组织,而且他们非常重视安全......但你永远不能太确定。

希望这篇文章能有所帮助。

您可以使用几种方法来实现:

如果您使用的是移动 android 设备,您可以连接到家庭无线设备并使用计算机作为主机来执行 MITM(中间人)并引导所有移动数据包通过您的主机并使用wireshark(? )

如果您使用的是 BlueStacks 等模拟器,您可以安装 ProxyCap 并编辑设置以通过本地 ProxyCap 重定向所有 bluestacks 数据包。

有一些应用程序要安装在 android 设备上以将应用程序重定向到代理,但它们不能 100% 工作而且大多数应用程序也不适用于代理规则,此外,在搞乱这种情况时,root 手机提供了更多选项东西,

如果您找到更多方法来做到这一点,请分享:)