证书什么是根证书
什么是根证书 时间:2021-03-01 阅读:(
)
67前沿技术对抗AndroidSSLPinning武汉分公司徐华峰在移动客户端安全测试中,需要代理客户端与服务器之间的HTTP(S)流量,才能测试其业务功能的安全漏洞.
若客户端安全性较高,在验证服务器身份时使用了HTTPS+SSLPinning(SSL证书绑定)特性,就会造成代理软件无法正常使用,从而不能继续进行业务功能的测试.
本文则试图解决该问题.
引言移动客户端的安全测试大概可以分为三个部分:客户端安全、通信安全、服务器端安全.
客户端安全包括组件暴露、敏感数据存储等;通信安全包括通信加密、校验等;服务器端安全包括数据安全(注入等)、业务安全等.
根据以往的客户端测试经验发现,有较大数量的移动客户端应用,把重点放在了通信安全上,通过加密通信(HTTPS协议+SSLPinning特性),以期能够掩盖客户端应用在其他方面的安全问题,尤其是在数据安全、业务安全等方面.
然而,HTTPS协议+SSLPinning特性模式并不是无敌的.
本文通过绕过SSLPinning,来证明该模式的脆弱性,以及通过该模式掩盖其他安全问题的不可行性(本文仅测试Android平台,对于IOS、WP其他平台类似,后文统称为"Android应用程序").
一、什么是SSLPinningHTTPS协议验证服务器身份的方式通常有三种,一是根据浏览器或者说操作系统(Android)自带的证书链;二是使用自签名证书;三是自签名证书加上SSLPinning特性.
第一种需要到知名证书机构购买证书,需要一定预算.
第二种多见于内网使用.
第三种是安全性最高的,但是需要浏览器插件68前沿技术或客户端使用了SSLPinning特性.
Android应用程序在使用HTTPS协议时也使用类似的三种方式验证服务器身份,分别是系统证书库、自带证书库、自带证书库+SSLPinning特性.
所以SSLPinning,即SSL证书绑定,是验证服务器身份的一种方式,是在HTTPS协议建立通信时增加的代码逻辑,它通过自己的方式验证服务器身份,然后决定通信是否继续下去.
它唯一指定了服务器的身份,所以安全性较高.
二、绕过SSLPinning(一)对策分析客户端绑定了SSL证书,不能简单地通过导入代理的证书来绕过,但可以通过修改客户端源码,改变其验证证书的逻辑.
分析可知,验证证书的逻辑会分为3个点(A,B,C),形式为A.
B(C),即在A中调用B函数,而B函数会加载C参数.
当然也可能是2个点,B(C)形式.
从软件架构角度看,多为形式A.
B(C).
通俗的讲,在客户端启动时,会执行初始化A函数,A函数中会调用一个验证证书的B函数,在A调用B函数的同时,会传个密钥库C参数到B函数,根据B函数的返回结果,A函数决定程序是否继续下去.
根据上述过程,若想改变证书验证结果,可以从3个点着手:1、改变A函数,使得无论B函数返回什么结果,程序都能继续运行下去;2、改变B函数,使得其总返回TRUE;3、将代理的证书导入C密钥库.
下面将从这3个点依次绕过SSL证书绑定.
(二)实战1.
准备样例APK:测试环境:Android手机安装该APK,使用无代理网络访问https://github.
com时,返回服务器的响应包,如图1;而使用代理网络访问时,SSL验证出错,服务器没有响应包.
如图2.
图1图269前沿技术代理工具:Fiddler2,导出ddler证书,如图3.
APK反编译:使用apktool–dSSLPinningExample.
apk得到APK文件的smali代码,如图4、图5;使用好压等压缩软件打开APK文件,解压出classes.
dex,然后dex2jar.
batclasses.
dex得到APK文件的Java代码,如图6.
找到位置:A函数位置,如图7、图8;B函数位置,如图9、图10;C密钥库位置,如图11.
图3图4图7图8图9图5图670前沿技术2.
方法一删除A函数中调用B函数的操作.
根据准备工作,从图7发现确实调用了pinCerticates,而图8是调用pinCerticates的smali代码,所以可以删除该段smali代码,使A函数不调用pinCerticates函数.
然后重打包apktoolbSSLPinningExample,接着自签名生成的APK,重新安装到手机.
然后访问https://github.
com,可以得到服务器的响应包,即绕过SSLPinning成功.
图12、图13分别是修改APK前后,ddler代理到的数据包.
3.
方法二修改B函数,使其总返回TRUE.
根据准备工作,从图9中看到,pinCerticates函数会加载密钥库,而图10是加载密钥库的smali代码,所以可以修改pinCerticates函数,让其不加载密钥库,直接返回.
然后重打包、自签名生成的APK、重新安装到手机.
然后访问https://github.
com,可以得到服务器的响应包,即绕过SSLPinning成功.
4.
方法三修改密钥库C,导入ddler代理的根证书.
根据准备工作,从图11中看到,APK确实带有自己的密钥库,所以可以导入ddler的根证书到该密钥库.
然后重打包、自签名生成的APK、重新安装到手机.
然后访问https://github.
com,可以得到服务器的响应包,即绕过SSLPinning成功.
图10图11图12图1371前沿技术导入证书步骤可以按照图14,证书导入密钥库时,会要求输入密钥库的密钥,可以从调用pinCerticates处找到.
图14图15logcat,我们或多或少会从logcat中找到些机会,如图15,APK进行http连接时会调用GET方法,可以从logcat中看到GET所在的类及所在行.
三、总结SSLPinning特性可以绕过,通过加密通信方式掩盖其他安全问题的存在不可行性.
方法一可能会出现在程序其他地方再次验证证书的问题,所以方法二较好.
APK大多会进行代码混淆,导致很难找到方法一、方法二所需要的目标位置,所以方法三应该是首选.
虽然方法三简单易行,但难说APK没有其他保护措施(比如说校验密钥库的完整性),又加上代码混淆过,此时则可以借用还有其他现成的解决方法(使用xposed框架,HOOK系统函数等).
四、参考文献AndroidSSLBKS证书的生成过程:http://blog.
csdn.
net/hehe9737/article/details/10001545bcprov-ext-jdk15on-146.
jar下载:http://download.
csdn.
net/download/acnt3w/5648487xposed框架模块:http://repo.
xposed.
info/module-overviewxposed框架SSL模块:https://github.
com/iSECPartners/Android-SSL-TrustKillergithub关于SSLPinning项目:https://github.
com/searchutf8=%E2%9C%93&q=ssl+pinning
触摸云国内IDC/ISP资质齐全商家,与香港公司联合运营, 已超8年运营 。本次为大家带来的是双12特惠活动,美国高防|美国大宽带买就可申请配置升档一级[CPU内存宽带流量选一]升档方式:CPU内存宽带流量任选其一,工单申请免费升级一档珠海触摸云科技有限公司官方网站:https://cmzi.com/可新购免费升档配置套餐:地区CPU内存带宽数据盘价格购买地址美国高防 1核 1G10M20G 26...
wordpress公司网站模板,wordpresss简洁风格的高级通用自适应网站效果,完美自适应支持多终端移动屏幕设备功能,高级可视化后台自定义管理模块+规范高效的搜索优化。wordpress公司网站模板采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时...
RAKsmart发布了新年钜惠活动,即日起到2月28日,商家每天推出限量服务器秒杀,美国服务器每月30美元起,新上了韩国服务器、GPU服务器、香港/日本/美国常规+站群服务器、1-10Gbps不限流量大带宽服务器等大量库存;VPS主机全场提供7折优惠码,同时针对部分特惠套餐无码直购每月仅1.99美元,支持使用PayPal或者支付宝等方式付款,有中英文网页及客服支持。爆款秒杀10台/天可选精品网/大...
什么是根证书为你推荐
eset用户名求最新的ESET用户名及密码百度k站百度k站为什么weipin唯品单号为16060958116346的快递在哪了呢?暴风影音怎么截图如何在暴风影音中截图?支付宝查询余额支付宝里如何查询银行卡里面的余额?缓冲区溢出教程如何防止高手使用缓冲区溢出?1433端口怎么去看1433端口mate8价格华为mate8 128g售价多少钱什么是云平台什么是云平台管理软件,一个云平台软件应该具有哪些基本功能服务器连接异常主服务器连接异常
虚拟主机软件 云南服务器租用 国外vps flashfxp怎么用 buyvm 英语简历模板word 一元域名 cpanel空间 刀片服务器的优势 135邮箱 秒杀汇 卡巴斯基试用版 tna官网 如何注册阿里云邮箱 爱奇艺会员免费试用 申请网页 流媒体加速 空间登录首页 服务器维护 vul 更多