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

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

楼主:玖仙久 [1级] · 2020-6-11 ·  浏览909 · 编程源码 · ID:

我们需要做的第一件事是在BoringSSL库中找到这个错误。该错误实际上已向我们显示了触发错误的位置:handshake.cc:352。Handshake.cc确实是BoringSSL库的一部分,并且包含了执行证书验证的逻辑。第352行的代码如下所示,这很可能就是我们看到的错误。行数并不完全匹配,但这很可能是版本差异的结果。

 此处内容已被隐藏,请评论后查看!

这是ssl_verify_peer_cert函数的一部分,该函数返回ssl_verify_result_t枚举,它在第2290行的ssl.h中被定义:

 此处内容已被隐藏,请评论后查看!

如果我们可以将ssl_verify_peer_cert的返回值更改为ssl_verify_ok (=0),那么我们就可以继续了。然而,在这个方法中有很多事情正在发生,Frida只能更改函数的返回值。如果我们更改这个值,它仍会因为上面的ssl_send_alert()函数调用而失败(相信我,我试过)。

让我们找一个更好的hook的方法。handshake.cc的代码段正上方是以下代码,这是验证链的方法的实际部分:

 此处内容已被隐藏,请评论后查看!

session_verify_cert_chain函数在第362行的ssl_x509.cc中被定义。此函数还返回原始数据类型(布尔值),并且是一个更好的hook选项。如果此函数中的检查失败,则它仅通过OPENSSL_PUT_ERROR报告问题,但它没有像ssl_verify_peer_cert函数那样的问题。OPENSSL_PUT_ERROR是err.h中第418行被定义的宏,其中包含源文件名。这与用于Flutter应用程序的错误的宏相同。

 此处内容已被隐藏,请评论后查看!

既然我们知道要hook哪个函数了,现在我们要做的就是在libflutter.so中找到它。在session_verify_cert_chain函数中多次调用OPENSSL_PUT_ERROR宏,这样可以使用Ghidra轻松的找到正确的方法。因此,将库导入Ghidra,使用Search -> Find Strings并搜索x509.cc。

这里只有4个XREF,因此很容易找到一个看起来像session_verify_cert_chain的函数:

其中一个函数取2个整数,1个“undefined未定义”,并且包含一个对OPENSSL_PUT_ERROR(FUN_00316500)的单独调用。在我的libflutter.so版本中为FUN_0034b330。现在你要做的是从一个导出函数计算该函数的偏移量并将其hook。我通常会采用一种懒惰的方法,复制函数的前10个字节,并检查该模式出现的频率。如果它只出现一次,我就知道我找到了这个函数,并且我可以hook它。这很有用,因为我经常可以为库的不同版本使用相同的脚本。使用基于偏移的方法,这更加困难。这很有用,因为我可以经常对不同版本的库使用相同的脚本。对于基于偏移量的方法,更加困难。

所以,现在我们让Frida在libflutter.so库中搜索这个模式:

 此处内容已被隐藏,请评论后查看!

在我的Flutter应用程序上运行此脚本的结果如下:

 此处内容已被隐藏,请评论后查看!

现在,我们只需使用Interceptor将返回值更改为1 (true):

 此处内容已被隐藏,请评论后查看!


- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者玖仙久流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/30620.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
2条回复 |  最后回复于2020-11-27

liyu666 [3级]

发布于2020-11-27

回复列表

  • 内容加载中...

说点什么...

liyu666 [3级]

发布于2020-11-27

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
11人签到
已签0天
  • 46568帖子
  • 1936067热点量
  • 184685火热值