在实习过程中,我接触到了一些SDL安全提测的工作。原来我是学web端渗透比较多的,移动端这块基本没怎么试过手,结果刚开始一直踩坑,连抓包都抓不到(T▽T)。
下面记录下我遇到的部分问题和解决方法,由于问题都太基础了,没好意思请教大佬同事,基本都是自己学习解决的,大家看得不爽轻喷,有误请指教~
材料:root手机、Magisk框架、EdXposed框架、riru-edxposed模块
这里建议大家可以直接买好root的手机,某宝某鱼都可以,直接让老板帮你把面具和EdXposed框架安装好会节省很多时间,我自己也是直接买了一个小米的root机。
拿到手机,首先和web端抓包一样,需要导入自己的burp证书。从这里导出证书,修改为cer格式,上传安装到手机里。手机通常在设置->系统安全->加密与凭证,可以从存储设备安装。
证书安装以后,配置代理,这里跟web端抓包也是一样的。让手机和电脑处于同一网络下,在burp->Proxy->Options这里添加监听器,ip是电脑ip,端口随意设置即可,其余的都不用修改
移动端这边可以直接在wifi设置里添加手动代理,如果觉得麻烦也可以使用Drony一类的代理软件
完成这些就可以抓到简单的APP数据包了,如果只需要测试一些无壳或没有什么安全验证机制的APP到这里就差不多了。简单的测试需求直接用模拟器就够了,可以百度下教程很多。
很多情况下,由于Android 10的一些机制,我们自己导入的证书会不能使用,导致抓不到包。这里我们需要用到Move Certificates模块将用户证书转为系统证书,下面是教程。
Move Certificates模块可以直接在Magisk框架里安装,也可以去github上面下载再本地安装。安装后启动模块
重启手机,可以看到用户证书转为了系统证书
如果APP的流量采取HTTPS协议传输,会对ssl进行校验。我测试过程中遇到很多APP前面的配置都没问题还是抓不到包,查看终端报错信息如下
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
或
javax.net.ssl.SSLPeerUnverifiedException: Certificate pinning failure!
Peer certificate chain:
看起来应该是ssl的检测机制产生的问题,可以使用SSLUnpinning模块绕过。
SSLUnpinning模块可以直接在EdXposed Manager里下载,如果下载不了,可能需要挂一下VPN,也可以去github下载自行安装。github链接
添加完记得把模块启动,不然不会生效
在SSLUnpinning中选择你要测试的app即可,这里貌似随便选一个就会让所有app都实现绕过。
测试可以正常抓包
【持续补充中…】
生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!
生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!
只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!