首页 > 编程源码 > 使用Burp拦截Flutter App与其后端的通信(下)

使用Burp拦截Flutter App与其后端的通信(下)

楼主:资源分享 [官方] · 2020-6-11 ·  浏览641 · 编程源码 · ID:
设置proxydroid并使用此脚本启动应用程序后,现在我们可以看到HTTP流量了:

我已经在一些Flutter应用程序上对此进行了测试,这种方法适用于所有应用程序。由于BoringSSL库较为稳定,因此这种方法可能会在未来很长一段时间内都有效。

禁用 SSL Pinning(SecurityContext)
最后,让我们看看如何绕过SSL Pinning。一种方法是定义一个包含特定证书的新SecurityContext。

对于我的应用程序,我添加了以下代码让它只接受我的Burp证书。SecurityContext构造函数接受一个参数withTrustedRoots,默认为false。http://www.iyuji.cn/iyuji/s/UDY2Y2lWOW9VV2dkcmh0a25XbjRldz09/1591890159967360
应用程序现在将自动接受我们的Burp代理作为任意网站的证书。如果我们现在将其切换到nviso.eu证书,我们将无法拦截连接(请求和响应)。

幸运的是,上面列出的Frida脚本已经绕过了这种root-ca-pinning实现,因为底层逻辑仍然依赖于BoringSSL库的相同方法。

禁用 SSL Pinning(ssl_pinning_plugin)
Flutter开发人员执行ssl pinning的方法之一是通过 ssl_pinning_plugin flutter插件。此插件实际上是发送一个HTTPS连接并验证证书,之后开发人员将信任该通信并执行non-pinned HTTPS请求:
http://www.iyuji.cn/iyuji/s/UDY2Y2lWOW9VV2dkcmh0a25XbjRldz09/1591890207335658
该插件是Java实现的,我们可以使用Frida轻松的hook:http://www.iyuji.cn/iyuji/s/UDY2Y2lWOW9VV2dkcmh0a25XbjRldz09/1591890236640183
结论
这是一个非常有趣的过程,因为Dart和BoringSSL都是开源的,所以进行的非常顺利。由于字符串的数量并不多,因此即使没有任何符号,也能很容易的找到禁用ssl验证逻辑的正确位置。我扫描函数序言(function prologue)的方法可能并不总是有效,但由于BoringSSL非常稳定,因此在未来的一段时间内它应该都会有效。
- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者资源分享流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/30695.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
0条回复 |  最后回复于2020-6-12
登录注册 后才可进行评论
签到
53人签到
已签0天
  • 46766帖子
  • 1938805热点量
  • 185858火热值