移动安全-APP证书校验与抓包
移动安全-APP证书校验与抓包
⽂章⽬录
APP单向认证
如果你是⼲web安全的,当你在测试⽬前⼤多数的⼿机APP应⽤程序时,你⼀定遇到过burpsuite⽆法抓到数据包的情况,开始你以为只是https的问题,但是当你使⽤了burpsuite伪证书也⽆法抓取到时,你⼼⾥除了有句“MMP……”外,你⼀定也在思考这其中的蹊跷。
为什么HTTPS的⽹站使⽤伪证书可以抓到,⽽在APP⾥⾯同样的⽅法就抓不到?答案是:APP启⽤了SSL Pinning(⼜叫“SSL证书绑定”)。
HTTPS的原理你必然懂,在建⽴SSL通道的过程中,当客户端向服务端发送了连接请求后,服务器会发送⾃⼰的证书(包括公钥、证书有效期、服务器信息等)给客户端,如果客户端是普通的浏览器,⽐如IE浏览器,则:
1. 使⽤内置的CA证书去校验服务器证书是否被信任,如果不被信任,则会弹出https的告警提⽰信息,由⽤户⾃⼰决定是否要继续;
2. 同样,⽤户也可以主动地将服务器证书导⼊到浏览器的受信任区,下次打开时该服务器证书将会⾃动被信任。
为啥中间⼈可以劫持https流量,以及在浏览器上我们为什么可以使⽤burp伪造证书,正是因为上⾯的2点,即:
1. 浏览器允许⽤户⾃⾏忽略证书告警,⽤户在⽆⾜够的信息安全意识时,可能会直接忽略刘浏览器的安全提⽰;
梦见掉牙齿>如何生成目录2. 浏览器允许“导⼊证书到浏览器信任区“这个操作让浏览器信任burp伪造的证书。这种伪造证书的中间⼈攻击给HTTPS带来了很⼤的
威胁。
SSLPinning
如果能够这样做,是不是就可以解决这种“中间⼈劫持+伪造证书”攻击的问题:
客户端在收到服务器的证书后,对该证书进⾏强校验,验证该证书是不是客户端承认的证书,如果不是,则直接断开连接。
浏览器其实已经这样做了,但是如“前⾯”所说,选择权交给了⽤户,且浏览器由于其开放性允许让⽤户⾃导⼊⾃⼰的证书到受信任区域。
但是在APP⾥⾯就不⼀样,APP是HTTPS的服务提供⽅⾃⼰开发的客户端,开发者可以先将⾃⼰服务器的证书打包内置到⾃⼰的APP中,或者将证书签名内置到APP中,当客户端在请求服务器建⽴连接期间收到服务器证书后,先使⽤内置的证书信息校验⼀下服务器证书是否合法,如果不合法,直接断开。
高考科目时间安排
当然攻击者也可以通过把这个APP源码给逆出来,然后到证书校验这段逻辑,给他⼲掉,或者⼲脆把证书信息换成⾃⼰的服务器证书信息,然后重新打包签名,但是⼀旦APP做了代码加密和混淆,这个操作也会变得⽐较难搞。
因此这样看来,通过预先把服务器的证书信息“绑定“在APP的native端,然后建⽴连接时使⽤预先内置的绑定信息进⾏服务器证书校验,同时使⽤⾜够的代码加密或混淆,是⽐较合适的解决办法,这个搞法就是“SSL Pinning”.
【注意】 不要将SSL Pinning和 HTTPS 双向认证搞混了,HTTPS协议本⾝是⽀持双向认证的,既除了客户端对服务器证书进⾏验证外,服务器也可以要求客户端提供⾃⼰的证书信息并对其进⾏验证,在APP上,HTTPS双向认真的⽅案也可以防⽌中间⼈劫持,但这种双向认证开销较⼤,且安全性与S
SL Pinning⼀致,因此⽬前⼤多数APP都采⽤SSL Pinning这种⽅案。
突破单向认证
如何突破APP客户端的证书校验?
如果你逆向⽐较在⾏,你就⾃⼰逆源码,然后过加密混淆,然后⼲掉SSL pinning。不过使⽤Xposed + JustTruestMe应该也不丢⼈。
1. Xposed是⼀个框架,它可以改变系统和应⽤程序的⾏为,⽽不接触任何APK。它⽀持很多模块,每个模块可以⽤来帮助实现不同的诛仙手游隐藏任务大全
功能。
2. JustTrustMe 是⼀个⽤来禁⽤、绕过 SSL 证书检查的基于 Xposed 模块。JustTrustMe 是将 APK中所有⽤于校验 SSL 证书的
API 都进⾏了 Hook,从⽽绕过证书检查。
3. 关于JustTrustMe绕过证书校验的源码分析,可阅读⽂章 。
【环境准备】
1. 准备⼀个有root权限的andorid⼿机;
2. 下载Xposed的APK安装包,;
3. 下载JustTrustMe模块,,注意下载 JustTrustMe.apk版本。
【安装过程】
1、选择下载好的Xposed installer的apk包,即可开始安装,安装完成后,打开xposed应⽤,他会提⽰“xposed框架未安装”,就如他提⽰所⾔,这⾥安装需要重启:
2、点击“确定”,开始安装。
无锡有什么好玩的地方旅游景点3、点击“install”,他会⾃动下载安装,下载速度根据⽹速⽽定。
4、当你看到这个的时候,就是安装好了,接着就是重启⼿机了。
5、接下来就是安装可以禁⽌证书验证的模块,安好后就可以愉快的进⾏抓包了,把前⾯所述的JustTrustMe.apk 下载之后,直接安装就⾏了。这个JustTrustme是没有界⾯的,但⼿机会提⽰xposed模块没有激活;
6、打开Xposed中的模块,就可以到安装好的JustTrustme,只需勾选上,然后重启⼿机就⾏ 。
7、接下来就可以直接使⽤Burpsuite正常抓包了,JustTrustMe会将APP中所有进⾏证书验证的⽅法都Hook,绕过所有证书验证,从⽽达到可以正常抓包的效果。
【注意】实际上,还需要在Xposed框架中同时安装上 SSLkiller 模块(),才能确保成功突破SSLPinning。
【测试案例】
1、对某⾏⼿机APP进⾏测试,未进⾏证书校验且未加密的版本,可直接⽤BP抓包:
2、使⽤Xposed框架突破进⾏了客户端证书校验的加密版本的APP的证书校验,成功抓包:
VPN流量抓取油烟机十大品牌
有些APP在你设置完 BurpSuite 代理后⽆法正常抓包但是却可以正常通信……你会很诧异这是什么情况,数据流量跑哪⾥去了……设置完代理后还可以正常通信,说明不是证书单向认证也不是双向认证的问题。实际上这是因为APP采⽤了默认禁⽤系统代理的⽹络请求框架。
⽹络请求框架

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。