证书什么是根证书
什么是根证书 时间: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
Digital-vm是一家成立于2019年的国外主机商,商家提供VPS和独立服务器租用业务,其中VPS基于KVM架构,提供1-10Gbps带宽,数据中心可选包括美国洛杉矶、日本、新加坡、挪威、西班牙、丹麦、荷兰、英国等8个地区机房;除了VPS主机外,商家还提供日本、新加坡独立服务器,同样可选1-10Gbps带宽,最低每月仅80美元起。下面列出两款独立服务器配置信息。配置一 $80/月CPU:E3-...
horain怎么样?horain cloud是一家2019年成立的国人主机商家,隶属于北京辰帆科技有限公司,horain持有增值电信业务经营许可证(B1-20203595),与中国电信天翼云、腾讯云、华为云、UCloud、AWS等签署渠道合作协议,主要提企业和个人提供云服务器,目前商家推出了几款特价物理机,都是在内地,性价比不错,其中有目前性能比较强悍的AMD+NVMe系列。点击进入:horain...
buyvm的第四个数据中心上线了,位于美国东南沿海的迈阿密市。迈阿密的VPS依旧和buyvm其他机房的一样,KVM虚拟,Ryzen 9 3900x、DDR4、NVMe、1Gbps带宽、不限流量。目前还没有看见buyvm上架迈阿密的block storage,估计不久也会有的。 官方网站:https://my.frantech.ca/cart.php?gid=48 加密货币、信用卡、PayPal、...
什么是根证书为你推荐
google竞价排名Google的竞价排名是怎么计费的无线路由器限速设置无线路由器能设置限速吗?或者说那个牌子的能。怎么在qq空间里添加背景音乐怎样在qq空间里免费添加背景音乐?开机滚动条开机滚动条要很长时间怎么解决?怎么升级ios6苹果IOS5怎么升级IOS6版本人人逛街人人逛街网是正品吗商标注册查询官网怎么查商标有没有注册宕机宕机 这个词是什么意思啊宽带接入服务器目前常见宽带接入的方式有哪几种blogcn南京明城墙(太平门一带某些地区)的城砖上为什么会有一些小洞(每块砖两个洞洞……)?
vps试用 山东vps 网站域名备案 万网免费域名 westhost 樊云 godaddy 新天域互联 最好的qq空间 idc查询 in域名 国外视频网站有哪些 云服务是什么意思 免备案cdn加速 密钥索引 restart 发证机构 linux服务器系统 comodo 傲盾代理 更多