前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Burp和Magisk在Android 7.0监测HTTPS流量

如何使用Burp和Magisk在Android 7.0监测HTTPS流量

作者头像
FB客服
发布2018-02-24 17:31:42
1.3K0
发布2018-02-24 17:31:42
举报
文章被收录于专栏:FreeBuf

在任何环境下的移动端安全审计中,肯定都会涉及到拦截HTTPS流量。通过向Android应用添加自定义的CA,我们就可以轻松完成HTTPS流量拦截了。但是对于Android Nougat(Android 7),应用程序并不会轻易信任客户端证书,除非应用程序指定要使用这个证书。那么在这篇文章中,我们将跟大家介绍一个新的Magisk模块【MagiskTrustUserCerts】,这个模块可以自动将客户端证书添加到系统层信任的storage,而所有的应用程序默认会信任这种类型的证书,所以该模块正好满足我们的需要。

HTTPS拦截的基本方法

在Android平台上拦截HTTPS流量其实并不复杂,它只需要几步便可以实现:

1.将Burp设置为我们的代理; 2.访问http://burp; 3.将Burp证书以用户证书的形式安装; 4.开始拦截流量

完成上述步骤之后,你就可以查看到所有从目标用户浏览器发送的HTTPS流量了。关于这部分内容,感兴趣的同学可以参考Portswigger的官方文档【参考文档】。

在此之前,上述的这种方法甚至还适用于桌面端应用程序的流量拦截,因为应用程序默认会信任所有安装的用户证书。如果你想防止应用程序的流量被拦截的话,你可以尝试使用证书绑定。证书绑定意味着每一个SSL通信连接的证书(服务器端)都需要跟本地存储的证书版本进行比对。如果服务器能够提供正确的身份凭证,连接才能够成功建立。这是一种非常好的安全功能,但是在开发人员的实现过程中却会存在各种各样的安全问题。

进入Android Nougat(Android 7)

从Android Nougat开始,应用程序默认不会信任用户证书。虽然开发人员可以通过配置应用程序AndroidManifest.xml文件的networkSecurityConfig属性来选择接受用户证书,不过默认情况下这些证书仍是不受信任的。 首先我们要做的就是对目标应用程序进行反编译、修改和重新编译,这部分可能需要你多花点时间了。如果应用程序采用了某些反编译保护机制的话,这就非常麻烦了,关于该技术的细节信息可以参考securestate.com给出的参考文档。

另一种方法就是将用户证书添加到系统商店之中。系统商店位于/system/etc/security/cacerts路径下,其中包含了与已安装root证书相关的文件。

最简单的解决方案就是将用户证书文件(位于目录/data/misc/user/0/cacerts-added内)直接拷贝到这个文件夹内。如果系统是以r/w加载的话,我们就需要重新加载/system分区,然后使用一些root检测算法来检测修改是否成功。

使用Magisk

Magisk是一种“通用型的系统接口”,它可以在不对系统本身进行任何修改的情况下实现一些系统层功能。实际上,Magisk并不会对/system分区进行修改,而这对于安全审计活动来说是一种非常大的优势,因为我们不用再需要对设备进行root了。通过激活目标设备上的“Magisk Hide”功能,Magisk将完全对用户不可见。 Magisk还支持很多自定义的模块,而这类模块的制作也非常简单。为了让任意的用户证书被识别为系统证书,我们制作了一个简单的Magisk模块,并将其上传到了GitHub代码库中。

该模块的实现逻辑如下:

1.寻找已安装的用户证书; 2.将它们添加到/system/etc/security/cacerts目录中; 安装完成之后,Magisk模块的内容将会被加载到/magisk/trustusercerts/。这个文件夹中包含有多种文件,但最重要的就是system目录。这个目录会自动跟真实的/system目录合并,但不会对/system分区进行修改和操作。这样一来,所有位于/magisk/trusteusercerts/etc/security/目录下的证书最终都会出现在/system/etc/security目录中。

模块的使用方法也非常简单,使用步骤如下所示:

1.安装模块; 2.通过常规方法安装证书; 3.重启设备; 安装完成之后,证书将会出现在设备的系统信任商店之中,并且所有的应用程序默认都会信任该证书。

总结

当然了,如果应用程序实现了SSL绑定的话,那你还是没办法拦截到HTTPS流量,但是这个Magisk模块可以让Android Nougat应用按照之前Android平台的应用程序一样去运行。在提升该模块功能方面(在Magisk层禁用SSL绑定),如果你有任何意见或者建议的话,可以直接在本项目的GitHub主页上留言。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTPS拦截的基本方法
  • 进入Android Nougat(Android 7)
  • 使用Magisk
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档