最新设备管理器漏洞分析
2014-10-12 22:32
176 查看
2013年6月,俄罗斯安全厂商卡巴斯基发现了史上最强手机木马-Obad.A,该木马利用了一个未知的Android设备管理器漏洞(ANDROID-9067882),已激活设备管理器权限的手机木马利用该漏洞,可以在设置程序的设备管理器列表中隐藏,这样用户就无法通过正常途径取消该手机木马的设备管理器权限,从而达到无法卸载的目的。Android4.2版本以上系统已经修复该漏洞。
日前,百度安全实验室发现手机木马开始利用另一新的Android设备管理器漏洞,新的设备管理器漏洞是由于Android系统在取消激活设备管理器流程的设计缺陷引起的,恶意软件利用该设计缺陷,可以阻止用户取消激活设备管理器,进而达到反卸载的目的。该漏洞存在于Android系统所有版本。
一、取消激活设备管理器源代码分析
Android取消激活设备管理器流程源代码:
Android取消激活设备管理器基本流程图:
1、ActivityManagerNative.getDefault().stopAppSwitch()方法功能
为什么第一步就调用该函数呢?通过源代码注释可以看出调用该函数目的是:禁止其它程序在用户取消设备管理器操作过程弹出Dialog,影响用户操作。
stopAppSwitch()源代码如下图所示:
通过代码我们发现该方法的具体实现是:
规定在APP_SWITCH_DELAY_TIME时间内禁止进行Activity切换。该方法调用后,所有应用的Activity调用请求会被系统放到挂起的请求队列中。被挂起的Activity调用请求会在APP_SWITCH_DELAY_TIME时间后才会被系统执行。
通过调用stopAppSwitch()方法,系统保证在进入取消设备管理器界面后,5秒内不会进行Activity的切换。
二、漏洞原理分析
通过以上流程我们发现,在第8步设备管理器调用
DevicePolicyManagerService.removeActiveAdmin()取消激活设备管理器之前,DevicePolicyManagerService会调用应用的onDisableRequested方法获取取消激活的警示信息。如果onDisableRequested函数返回内容为空的,第8步就会自动执行;如果onDisableRequested函数返回内容不能为空,会弹出Dialog显示返回的警示信息,提示用户是否取消激活。用户点击确认后才会执行第8步。
如何阻止流程执行到第8步呢?
onDisableRequested是唯一在流程第8步之前被调用的函数。为了阻止流程走到第8步,onDisableRequested函数满足以下条件即可:
1、返回内容不能为空,这样才可以使设备管理器弹出取消激活设备管理器警示信息 Dialog。
2、通过Activity切换的方式使设备管理器弹出的警示信息Dialog消失。使用户无法操作Dialog。
如果做到以上两点,程序即可成功阻止用户取消激活设备管理器操作。
三、漏洞利用方法
以下提出三种可以利用该流程设计缺陷,成功阻止用户取消设备管理器的方法。
1、 通过锁屏方式
2、通过阻塞函数返回方式
3、通过透明窗口劫持方式
以上方法都会在onDisableRequested中,采用不同方式使用户在5秒时间内无法操作界面。因为5秒后Activity切换请求才会被系统执行。
日前,百度安全实验室发现手机木马开始利用另一新的Android设备管理器漏洞,新的设备管理器漏洞是由于Android系统在取消激活设备管理器流程的设计缺陷引起的,恶意软件利用该设计缺陷,可以阻止用户取消激活设备管理器,进而达到反卸载的目的。该漏洞存在于Android系统所有版本。
一、取消激活设备管理器源代码分析
Android取消激活设备管理器流程源代码:
Android取消激活设备管理器基本流程图:
1、ActivityManagerNative.getDefault().stopAppSwitch()方法功能
为什么第一步就调用该函数呢?通过源代码注释可以看出调用该函数目的是:禁止其它程序在用户取消设备管理器操作过程弹出Dialog,影响用户操作。
stopAppSwitch()源代码如下图所示:
通过代码我们发现该方法的具体实现是:
规定在APP_SWITCH_DELAY_TIME时间内禁止进行Activity切换。该方法调用后,所有应用的Activity调用请求会被系统放到挂起的请求队列中。被挂起的Activity调用请求会在APP_SWITCH_DELAY_TIME时间后才会被系统执行。
通过调用stopAppSwitch()方法,系统保证在进入取消设备管理器界面后,5秒内不会进行Activity的切换。
二、漏洞原理分析
通过以上流程我们发现,在第8步设备管理器调用
DevicePolicyManagerService.removeActiveAdmin()取消激活设备管理器之前,DevicePolicyManagerService会调用应用的onDisableRequested方法获取取消激活的警示信息。如果onDisableRequested函数返回内容为空的,第8步就会自动执行;如果onDisableRequested函数返回内容不能为空,会弹出Dialog显示返回的警示信息,提示用户是否取消激活。用户点击确认后才会执行第8步。
如何阻止流程执行到第8步呢?
onDisableRequested是唯一在流程第8步之前被调用的函数。为了阻止流程走到第8步,onDisableRequested函数满足以下条件即可:
1、返回内容不能为空,这样才可以使设备管理器弹出取消激活设备管理器警示信息 Dialog。
2、通过Activity切换的方式使设备管理器弹出的警示信息Dialog消失。使用户无法操作Dialog。
如果做到以上两点,程序即可成功阻止用户取消激活设备管理器操作。
三、漏洞利用方法
以下提出三种可以利用该流程设计缺陷,成功阻止用户取消设备管理器的方法。
1、 通过锁屏方式
2、通过阻塞函数返回方式
3、通过透明窗口劫持方式
以上方法都会在onDisableRequested中,采用不同方式使用户在5秒时间内无法操作界面。因为5秒后Activity切换请求才会被系统执行。
相关文章推荐
- [转帖]最新FLASH 0DAY 漏洞总结分析篇
- 最新易想团购系统通杀SQL注入漏洞分析附利用exp
- 12月最新Windows Live邮箱注册漏洞及分析
- ESPCMS最新cookie注入漏洞分析
- [技术交流] [经验交流] (最新)移动App应用安全漏洞分析报告 !
- discuz7.2 faq.php 最新注入漏洞分析
- 首发:最新CPU漏洞Meltdown详细分析
- Oblog最新注入漏洞分析
- [经验交流] (最新)移动App应用安全漏洞分析报告 !
- 最新phpcms v9.6.0 sql注入漏洞分析
- (最新)移动App应用安全漏洞分析报告 !
- 摩诃草组织最新漏洞攻击样本分析及预警
- MiniWeb0.8.19的最新漏洞分析及利用方法!
- Struts2最新安全漏洞分析
- DeDecms(织梦CMS)最新版任意用户密码重置漏洞分析
- 微软最新账户身份验证漏洞分析-20160407-邮箱跳转后的XSS
- MS06001 图形呈现引擎(WMF)漏洞分析学习手记
- 再次让动网下地狱(DVBBS最新漏洞 6月17日)已带简单补丁
- *printf()格式化串安全漏洞分析(上)
- (转载)从漏洞及攻击分析到NIDS规则设计