从逆向角度看证书覆盖安装漏洞
前言
首先我们来了解下证书覆盖安装漏洞,此漏洞是2020年Google官方公布的漏洞之一,其编号为CVE-2020-0015,这个漏洞主要形成原因是由于本地安装证书被覆盖所造成的特权提升漏洞,在文中我会从逆向的角度去分析证书的安装流程,分析漏洞存在的位置以及形成的原因。在分析过程中会把代码进行截图,尽可能覆盖其中的所有关键代码,避免本文阅读者在阅读过程中再去反编译查看代码。
漏洞介绍
证书覆盖安装漏洞主要体现在统导入证书的时候,而导入证书这部分功能是由系统中的CertInstaller.apk进行完成。而在用中并未做安全性校验,导致导入证书界面可以被覆盖,由于证书安装是由系统应用完成的,所以当安装界面被覆盖后,就变向的达到了特权提升的目的。根据官方说明该漏洞是存在全系统版本中的,而官方只修复了Android-8.0、Android-8.1、Android-9、Android-10系统版本,下面通过代码分析此漏洞形成的原因。
分析流程
首先我们通过ADB命令从手机中将CertInstaller.apk文件提取到本地,CertInstaller.apk在系统中的/system/app/CertInstaller/目录下。拿到APK文件后我们再使用jadx、jeb等工具反编译APK文件。那么我们就通过ADB命令将/system/app/CertInstaller/CertInstaller.apk拷贝到本地,使用jadx、jeb等反编译工具将apk反编译。
首先我们先看下反编译后的AndroidManifest.xml文件。
从AndroidManifest.xml文件可以看出来主要入口在CertInstallerMain中,因为是activity,所以我们从onCreate函数开始分析:
代码位置:com/android/certinstaller/CertInstallerMain.java
从上面代码中可以看到,首先获取intent对象并对其中携带的数据进行判断,主要有三种情况:
intent未携带任何数据,或者从sdcard上选择证书文件进行安装,也就是在系统设置中选择从存储设备安装证书,如下图:
Intent携带了证书内容,就直接创建Intent 启动CertInstaller进行证书安装,例如:
通过action 列举出已安装的证书列表
从上面三部分来看,无论分析第一种情况还是第二种,都可以到达证书安装的位置,那我们主要分析的是第二种情况,创建一个intent用于启动CertInstalleractivity,并将携带又证书内容得Intent以参数得形式传递过去。
下面继续看:
代码位置:com/android/certinstaller/CertInstaller.java
从代码可以看出来证书安装过程基本都是依赖于CredentialHelper类完成的,首先掉用createCredentialHelper函数创建了一个CredentialHelper实例,
从上面代码可以看出来,在创建CredentialHelper实例的同时,还做了证书解析操作,这里主要看parseCert(byte[]bytes)函数,其中根据证书的不同会将证书缓存到mCaCerts或mUserCert列表中。然后继续分析CertInstaller的OnCreate函数,继续往下看对当前的环境进行校验,其中keyguardManager.createConfirmDeviceCredentialIntent(null,null);是检查是否设置信任凭证。然后会调用到extractPkcs12OrInstall函数。
PKCS12文件一般由密码保护,所以需要弹出一个密码输入框,用于输入密码。而正常抓包设置代理证书或者安装CA证书的时候就会走到else里面。继续分析代码。
在这里可以看到InstallOthersAction中的run方法实际就是调用的CertInstaller.installOther函数;
这可以看到是安装证书之前先做了一个校验,坚查是否有CA证书,或者私有与用户证书,然后会调用nameCredential()函数,会调用showDialog()弹窗安装证书。这也就是漏洞产生的位置。而漏洞形成的原因就是在弹窗的位置因为没有对系统的dialog弹窗进行安全防护,导致dialog可以被劫持覆盖,这也是该漏洞的主要成因。
漏洞利用
由于设备环境原因,只在低版本测试,未在修复后的高版本手机进行测试。
下面看下代码:
这里为了方便直接创建了一个线程进行监听,也可以在service中实现。
为线程创建runnabl任务,判断当前运行的应用包名,如果为com.android.certinstaller,则启动一个伪装好的activity界面进行覆盖,这个activity界面设置为dialog显示。
代码中getTopPackage()是检测当前运行的应用程序是哪一个,然后在线程中判断如果是certInstaller应用的进程,就进行弹窗覆盖掉系统的dialog,伪造个假的证书安装界面,导致本地特权提升。
漏洞修复
下面是Google官方的修复方式。
从上图可以看到在CertInstaller.java代码的onCreate方法中添加了一个系统属性”SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_windows”,添加此属性的目的就是屏蔽掉其他APP的悬浮窗,避免系统界面恶意程序进行覆盖,这样就修复了该漏洞存在的风险,目前官方只在Android8-Android10系统修复了此漏洞。
总结
这个漏洞本质上就是劫持的漏洞,只是与常规的劫持有区别,常规的劫持是针对非系统应用,而证书覆盖安装漏洞是针对系统应用的漏洞。在修复后的系统上,如果恶意程序伪装成系统应用,依然可以对证书安装进行覆盖,漏洞仍然存在。
鸿蒙官方战略合作共建——HarmonyOS技术社区
推荐系统
番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载
语言:中文版系统大小:3.91GB系统类型:Win7欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统
番茄花园 Windows 10 极速企业版 版本1903 2022年7月(32位) ISO镜像快速下载
语言:中文版系统大小:3.98GB系统类型:Win10番茄花园 Windows 10 32位极速企业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动激活
新萝卜家园电脑城专用系统 Windows10 x86 企业版 版本1507 2022年7月(32位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10新萝卜家园电脑城专用系统 Windows10 x86企业版 2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程
笔记本&台式机专用系统 Windows10 企业版 版本1903 2022年7月(32位) ISO镜像快速下载
语言:中文版系统大小:3.98GB系统类型:Win10笔记本台式机专用系统 Windows 10 32位企业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过
笔记本&台式机专用系统 Windows10 企业版 版本1903 2022年7月(64位) 提供下载
语言:中文版系统大小:3.98GB系统类型:Win10笔记本台式机专用系统 Windows10 64专业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的专业版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动
雨林木风 Windows10 x64 企业装机版 版本1903 2022年7月(64位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10新雨林木风 Windows10 x64 企业装机版 2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动激活
深度技术 Windows 10 x64 企业版 电脑城装机版 版本1903 2022年7月(64位) 高速下载
语言:中文版系统大小:3.98GB系统类型:Win10深度技术 Windows 10 x64 企业TLSB 电脑城装机版2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程
电脑公司 装机专用系统Windows10 x64 企业版2022年7月(64位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10电脑公司 装机专用系统 Windows10 x64 企业TLSB版2022年7月一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过
相关文章
- 改善医疗保健中的网络安全时需要考虑的因素
- 微盟删库事故启示录
- DoppelPaymer勒索软件的最新攻击趋势总结
- 勒索软件团伙利用 7-zip 在 5 天内赚取 26 万美元
- FireEye出资1.86亿美元收购Respond Software
- McAfee以40亿美金卖掉企业级网络安全业务
- 一旦所有个人隐私都泄漏公开将发生什么?
- 在冠状病毒疫情蔓延下 企业如何应对安全威胁
- 2020年第三季度APT攻击趋势分析(下)
- 安全观点:如何更有效地执行大规模安全扫描
- 智能网络升级在疫情来临之前需要考虑的事项
- 在全球范围内成功劫持28000台打印机,只为打印一份“安全指南”?
- ESET披露自从2011年开始活跃的新APT组织XDSpy
- 专栏
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 4雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 5深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
- 1迅雷云播“手机看片神器”使用教程(随时随地秒速离线云播放)
- 2Win10怎么设置网络按流量计费 Win10网络设置流量收费教程
- 3微信公众号怎么年审? 微信公众号年审流程及所需材料介绍
- 4二手笔记本电脑价格是多少 二手笔记本电脑价格盘点
- 5高通骁龙8cx怎么样 高通骁龙8cx处理器详细介绍
- 6win7蓝屏代码7f指什 怎么解决 很严重
- 7aoc一体机电脑win10改win7系统及bios设置
- 8Steam提示“需要在线进行更新,请确认您的网络连接正常”怎么办?
- 9安卓手机安装运行win7系统教程 安卓手机装win7系统教程
- 10华硕b460主板装win7系统及bios设置教程 10代CPU安装Win7教程 BIOS设置 U盘启动 完美支持USB驱动
常用系统
- 1番茄花园GhostWin7 SP1电脑城新春特别 极速装机版2021年2月(32位) 最新高速下载
- 2番茄花园Ghost Win8.1 x64 办公纯净版2022年5月(激活版) ISO镜像高速下载
- 3新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 4雨林木风Ghost Win7 x64 SP1 极速装机版2021年3月(64位) 高速下载
- 5雨林木风Ghost Win8.1 (X64) 极速纯净版2019年8月免激活) ISO镜像高速下载
- 6电脑公司Ghost Win7 Sp1 装机万能版2021年3月(32位) 提供下载
- 7番茄花园GhostWin7 SP1电脑城喜迎国庆 极速装机版2020年10月(32位) 最新高速下载
- 8电脑公司Ghost Win8.1 x32 精选纯净版2021年10月(免激活) ISO镜像高速下载
- 9番茄花园GhostWin7 SP1电脑城元旦特别 极速装机版2020年1月(32位) 最新高速下载
- 10笔记本系统Ghost Win8.1 (X64) 喜迎国庆 全新纯净版2021年10月(永久激活) 提供下载