HTTPS拦截的基本方法
在Android平台上拦截HTTPS流量其实并不复杂,它只需要几步便可以实现:
1.将Burp设置为我们的代理;
2.访问http://burp;
3.将Burp证书以用户证书的形式安装;
4.开始拦截流量
完成上述步骤之后,你就可以查看到所有从目标用户浏览器发送的HTTPS流量了。关于这部分内容,感兴趣的同学可以参考Portswigger的官方文档【参考文档】。
在此之前,上述的这种方法甚至还适用于桌面端应用程序的流量拦截,因为应用程序默认会信任所有安装的用户证书。如果你想防止应用程序的流量被拦截的话,你可以尝试使用证书绑定。证书绑定意味着每一个SSL通信连接的证书(服务器端)都需要跟本地存储的证书版本进行比对。如果服务器能够提供正确的身份凭证,连接才能够成功建立。这是一种非常好的安全功能,但是在开发人员的实现过程中却会存在各种各样的安全问题。
进入Android Nougat(Android 7)
另一种方法就是将用户证书添加到系统商店之中。系统商店位于/system/etc/security/cacerts路径下,其中包含了与已安装root证书相关的文件。
最简单的解决方案就是将用户证书文件(位于目录/data/misc/user/0/cacerts-added内)直接拷贝到这个文件夹内。如果系统是以r/w加载的话,我们就需要重新加载/system分区,然后使用一些root检测算法来检测修改是否成功。
使用Magisk
该模块的实现逻辑如下:
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主页上留言。
* 参考来源:nviso,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM
领取专属 10元无门槛券
私享最新 技术干货