引言
近期谷歌发布了最新手机操作系统Android O的开发者预览版,一如往常,Android O又带来了多项新功能与优化升级,其中一项有关系统窗口管理的优化给Android手机勒索软件带来了严重冲击。
简述Android系统与勒索软件对抗史
手机勒索软件是一种特殊的恶意软件,其通常将自身伪装为看似无害的软件或是利用社会工程学诱导受害者下载安装,随后通过恶意利用操作系统正常功能或者缺陷强制锁住用户桌面使得用户无法正常使用设备,并几乎都会要求受害者缴纳赎金以解锁设备。手机勒索的解锁费用通常为20、30或50元不等,通常情况下当用户设备感染勒索软件后,出于设备被锁定的焦急心理与不高的赎金金额,用户一般都会通过勒索软件锁屏界面提供的联系方式联系制马人以尝试解锁设备,因此这种“薄利多销”且制作成本低廉的点对点式直接性敲诈软件颇受制马人的青睐。此外,这类软件通常具有很高的可变性,制马人只需简单调整软件代码或锁屏样式便可生成新的勒索软件。360烽火实验室一直密切关注国内外手机勒索软件动向,先后发布了多篇对手机勒索软件的研究成果。
纵观Android系统尤其是高版本系统史,每一版都在遏制勒索软件方面做出了积极的应对:
Android L(Android 5.0-5.1)
在早期Android版本中,通过getRunningTasks 方法可获取当前运行栈顶程序,但自Android 5.0起该方法被弃用,同时getRunningAppProcesses与getAppTasks方法的使用也受到了限制,由此抑制了劫持Activity类勒索软件的出现。
Android M(Android 6.0)
大部分手机勒索软件的惯用伎俩是通过SYSTEM_ALERT_WINDOW权限来打开特定系统类型窗口并将其显示在所有其他应用程序和窗口之上,以此达到锁定用户设备的目的。Android M的出现使得勒索软件制马人在实施手机勒索时遇到了一大瓶颈——动态权限申请,由于自Android M起,SYSTEM_ALERT_WINDOW开始被列为一种危险程度较高的权限而被特殊处理——即需要用户动态授权。这一改变意味着只要勒索软件的目标系统为Android M,其就不能如往常一样在用户毫无防备的情况下锁定用户设备,而是必然有一个用户授权阶段,这对勒索软件的发展起到了一定程度的阻碍作用。
Android N(Android 7.0-7.1)
与之前版本可任意设置或重置锁屏密码不同的是,Android N中明确规定,第三方应用开发者只能使用DevicePolicyManager.resetPassword为无密码设备设置初始密码,而不能重置或清除已有的设备密码。Android N中对于resetPassword API所添加的限制能阻止木马对已有锁屏密码的重置,从而使得部分勒索软件失效。
以上改进从Android系统角度有效遏制了勒索软件发展,然而勒索技术也在不断升级,这些变化并彻底根除勒索软件,在利益诱惑之下,制马人仍会不遗余力地在勒索软件上继续寻求新的可趁之机。
Android O进一步遏制勒索软件
现状与原理
根据360烽火实验室的统计,截止到2017年5月初共捕获到勒索软件超过55万个,其中系统窗口置顶类勒索软件占比高达81.5%,远高于锁屏密码修改、系统文件篡改等其他类型勒索软件。这种悬殊的差距很大程度上源于,篡改锁屏幕密码或系统文件分别需要用户动态授权设备管理器或root权限,一旦用户拒绝授权,进一步的勒索行为将无法实施;而窗口置顶类勒索软件无需用户任何授权即可锁定设备,相比前者锁屏成功的几率要大得多。
(数据说明:81.5%包含了既有系统窗口置顶又存在锁屏密码修改等其他勒索技术的多重手机勒索软件)
Android O预览版一经发布就给了勒索软件致命打击,新系统禁用了5种窗口。如下图所示,其中包括3种勒索软件常用的系统窗口类型,窗口置顶类勒索木马“赖以生存”的系统窗口类型被限制使用了。
在Android O之前版本中,勒索软件通过调用特定系统窗口类型将自身窗口完全覆盖在第三方应用程序与其他系统窗口之上,用户无法响应其他窗口,由此设备被锁定;但在Android O中,这几种具有置顶权限的系统窗口类型被弃用,勒索软件制作者找不到其他能完全覆盖第三方应用程序与其他系统窗口的窗口类型,窗口置顶类锁屏将无法实施。
不同版本窗口置顶类勒索软件运行效果
在Android 6.0之前,使用系统类窗口进行手机勒索十分简单,只需要在AndroidManifest清单文件中申请SYSTEM_ALERT_WINDOW权限即可使用TYPE_SYSTEM_ALERT、TYPE_SYSTEM_ERROR等高级别窗口,用户开启手机勒索软件后无需额外操作甚至来不及做出反应,系统窗口就已置顶,手机即刻被锁定。
自Android 6.0起至Android 7.1,Android系统开启动态权限模型,SYSTEM_ALERT_WINDOW权限开始被列为一项特殊权,尽管其权限级别(Signature)不是Dangerous,但开发者在使用之前也必须动态获得用户授权,只有在用户进行授权后,应用才可以随意使用TYPE_SYSTEM_ALERT、TYPE_SYSTEM_OVERLAY、TYPE_SYSTEM_ERROR等高级别窗口。在这一阶段,用户通过一项Action——MANAGE_OVERLAY_PERMISSION打开设置“在其他应用的上层显示”页面,如下图所示,用户手动允许后,系统高级别窗口权限开放,此时即可成功使用这些窗口进行手机勒索。
SYSTEM_ALERT_WINDOW动态授权完成后,将窗口类型设置为TYPE_SYSTEM_ERROR得到的锁屏效果如下——上拉菜单、屏幕下方菜单键无效,无任何方式退出窗口,手机被强制锁定:
在最新的Android 8.0中,SYSTEM_ALERT_WINDOW权限的使用进一步受限,对于第三方应用程序而言,该权限保护下的TYPE_SYSTEM_ALERT、TYPE_SYSTEM_OVERLAY、TYPE_SYSTEM_ERROR等几类勒索软件常用窗口完全被禁用。即使获得了用户动态授权,使用这几种窗口也会触发窗口类型错误:
取而代之,为了解决窗口置顶需求,Google引进了一种新窗口类型 TYPE_APPLICATION_OVERLAY,这类型窗口将覆盖其他第三方应用的窗口,但却始终位于系统状态栏与输入法窗口之下,如下图,用户可以下拉状态栏并关闭该置顶窗口:
图8 TYPE_APPLICATION_OVERLAY窗口置顶后仍可操作状态栏
为了保障Android 8.0的向前兼容性,安装了Android 8.0的设备也能正常运行使用了TYPE_SYSTEM_ALERT等被禁窗口的应用程序,但同TYPE_APPLICATION_OVERLAY窗口一样,被禁窗口也可通过下拉状态栏的TURN OFF选项关闭,故使用旧版本SDK开发的窗口手机勒索软件在Android 8.0中同样会失效。
需要注意的是,虽说自Android M到Android O一直加强系统类窗口的使用限制,但当病毒作者将目标勒索软件仍旧锁定在Android M之前版本,这种限制作用将大大降低。而从目前各版本Android操作系统的分布情况来看,高达61.7%的设备仍旧使用Android M以下系统版本,这也就说明绝大多数用户设备仍面临着勒索软件带来的高危风险,由此看来,Android高版本操作系统的普及力度亟待加强。
(图片来源:https://developer.android.com/about/dashboards/index.html)
随着Android O的逐步推广普及,利用系统类型窗口作恶的勒索软件将难以存活,但是其它形式的勒索软件却未受其影响,所以对于勒索软件的监控以及防范仍不能松懈。
Android的开放为其快速发展提供了更多可能性,同时势必会带来更多的安全问题,不过,随着Google对手机操作系统的持续改善,现存的诸多安全问题不断得到解决,再加上安全厂商对Android设备及软件的大力护航,开发者的开发环境与用户的用机环境必将更加安全同时更加丰富多彩。
安全建议
1. 可信软件源
建议用户在选择应用下载途径时,应该尽量选择大型可信站点,如360手机助手、各软件官网等。
2. 安装安全软件
建议用户手机中安装安全软件,实时监控手机安装的软件,如360手机卫士。
3. 数据备份
建议用户日常定期备份手机中的重要数据,比如通讯录、照片、视频等,避免手机一旦中毒,给用户带来的巨大损失。
4. 系统更新
新版系统通常包含了对老版系统漏洞的修补与功能的优化,保持设备更新到最新系统有利于及时享用最新安全策略,提高设备安全性。
5. 拒绝诱惑
建议用户不要心存侥幸,被那些所谓的能够“外挂”、“刷钻”、“破解”软件诱惑,这类软件绝大部分都是假的,没有任何功能,只是为了吸引用户中招。
6. 正确的解决途径
一旦用户不幸中招,建议用户不要支付给敲诈者任何费用,避免助涨敲诈者的嚣张气焰。用户可以求助于专业的安全人员或者厂商。
360烽火实验室
360烽火实验室,致力于Android病毒分析、移动黑产研究、移动威胁预警以及Android漏洞挖掘等移动安全领域及Android安全生态的深度研究。作为全球顶级移动安全生态研究实验室,360烽火实验室在全球范围内首发了多篇具备国际影响力的Android木马分析报告和Android木马黑色产业链研究报告。实验室在为360手机卫士、360手机急救箱、360手机助手等提供核心安全数据和顽固木马清除解决方案的同时,也为上百家国内外厂商、应用商店等合作伙伴提供了移动应用安全检测服务,全方位守护移动安全。