Android N安全特性概览
AndroidN即Android7.0,代号“牛轧糖”,是Google于2016年7月份推出的最新版智能手机操作系统。AndroidN带来了诸多新特性与功能,它们将对系统整体性能进行提升,特别对安全性进行了强化。
图1给出了AndroidN带来的主要变更,一方面,AndroidN对部分原有功能进行了优化,如应用程序编译、电池与内存管理、通知功能、无障碍功能等;另一方面,AndroidN也引入了诸多新特性,如多窗口支持与VulkanAPI等。
图1Android N主要行为变更
AndroidN的诸多新特性归根结底是为了增强系统安全性、提升用户体验。为了应对层出不穷的恶意木马和不断完善Android系统安全机制,Google还对Android系统的安全性进行了诸多优化,这些优化主要涉及系统权限、应用间文件共享以及Androidfor Work三方面的内容:
1.系统权限变更
弃用GET_ACCOUNTS权限。AndroidN之前,开发者通过AccountManager的getAccounts()方法获取设备上账户信息之前必须保证已申请GET_ACCOUNTS权限;而AndroidN弃用了该权限,开发者可以在不申请GET_ACCOUNTS的情况下访问设备上的账户信息。
新增OPEN_EXTERNAL_DIRECTORY行为。与原先申请WRITE_EXTERNAL_STORAGE权限后即可写外部存储不同的是,在AndroidN中,开发者首先需要通过该Action在外部存储中申请创建一个可写目录,方可对外部存储进行写操作,这种方式进一步加强外部存储的安全性能。
2.应用间文件共享
应用私有目录被限制访问(0700),文件所有者将无法通过设置私有文件访问模式为MODE_WORLD_READABLE与MODE_WORLD_WRITEABLE来开放私有文件的读写权限;此外,通过file:///URI也将无法访问到应用包之外的路径;同时DownloadManager将不能通过文件名来共享私有文件的信息。若要在应用间共享文件,开发者可以发送一项content://URI,并授权URI的临时访问权限。进行此授权的最简单方式是使用FileProvider类。这一改变有效确保了共享文件的安全问题。
3.Android for Work
主要涉及证书安装、重置密码、二级用户管理以及设备标识符访问权限的变更;
除了上述三个方面外,AndroidN还引入了新的开机验证机制,在设备开机时首先会验证系统文件完整性,一旦检测到系统文件被篡改(或者是引导镜像存在被修改的痕迹),则禁止系统启动或限定部分功能(实际上在AndroidM时代,系统也会进行完整性检查,但AndroidM在检测到系统被篡改时只是以弹窗形式提醒用户,而不会采取进一步措施)。AndroidN的新开机验证机制将直接影响到设备Root的困难程度,因为在Root过程中通常以修改系统文件的方式来提升用户权限。从这个角度来看,新的开机验证机制在某种程度上提高了系统的安全性。
AndroidN在用户层与系统层上的安全机制调整增强了设备的安全性。在系统层面,通过限制对私有文件的访问,强化了应用间的隔离效果,进一步保护了应用程序私有数据的安全;在用户层面,通过严控证书安装流程、限制重置密码等操作来降低由非法证书、锁屏勒索类木马带来的威胁。
我们以Androidfor Work对锁屏勒索类木马发展趋势产生的影响为例来深入分析安全新特性。
锁屏勒索类木马现状
锁屏勒索类木马是让Android用户头疼的恶性问题之一,网络上也频频爆出Android用户遭遇各类锁屏勒索的新闻及其引发的相关讨论。
图2Android锁屏勒索问题频现
Android手机锁屏勒索类木马主要是通过操作用户开机密码从而强制锁定用户手机,使得用户无法正常使用手机,并以此威胁用户进行付费解锁,用户只需按照恶意软件的提示进行指定操作。从技术角度看,锁屏勒索类木马主要利用了特殊悬浮窗、Activity劫持、屏蔽虚拟按键、设置手机PIN码和修改系统文件等方式以达到强制多屏的效果。
2016年前三个季度捕获锁屏勒索类木马11.1万余个,与2015年同季度对比发现,2016年一季度呈现出爆发式增长,同比增长767%;2016年二季度同比增长360%;2016年三季度同比增长56%,如图3所示。由图4可以看到,直接与重置密码相关的锁屏勒索类木马在这类木马中占了很大比重。这既足以反映出锁屏勒索类木马已成为Android安全的重灾区,也表现出重置密码是这类木马的最常采用的手段,同时这类木马展现的巨大利益诱惑吸引着大量的木马作者,无形中给广大用户带来了巨大的安全隐患。
图32015和2016年同季度Android锁屏勒索类木马数量对比
图4锁屏勒索木马中设置锁屏密码勒索木马占比
重置密码特性变更
图5给出了一个Android手机上的锁屏勒索类木马示例,可以看出木马运行后首先会要求获取设备管理权限,用户按要求激活设备管理器后则会发现手机立刻被强制锁屏,并且锁屏界面出现了“提示性”语句,用户根据“提示性”信息向指定账户支付一定金额后才能取得新密码解锁进入手机桌面。
图5Android锁屏勒索木马示例
1.锁屏勒索类木马实现重置密码
Android N之前,通过操作设备管理器可以很容易地实现重置密码,只需调用设备管理器DevicePolicyManager提供的resetPassword(Stringpassword, int flags)接口,其中password为新的密码。图6所示为勒索木马重置密码的代码:首先需要为设备管理器添加reset-password动作,然后只要监听到用户激活设备管理器便立即调用resetPassword接口进行重置密码进而锁定用户的手机,如图6所示。
图6勒索软件示例代码
2.Android N中的resetPassword接口
与Android N之前版本可任意设置或重置设备密码不同的是,AndroidN中明确规定,第三方应用开发者只能使用DevicePolicyManager.resetPassword为无密码设备设置初始密码,而不能重置或清除已有的设备密码。
若设备当前没有密码,如图7( 左)所示,此时可以调用resetPassword方法成功设置锁屏密码,如图7(右)。
图7成功设置密码
若设备已有密码,当尝试调用resetPassword方法重置锁屏密码时,系统会抛出SecurityException异常,并提示“Admincannot change current password”,如图8所示。
图8修改已有密码失败
从上述内容可以看到,AndroidN中对于resetPasswordAPI所添加的限制能阻止木马对已有锁屏密码的重置,从而使得部分勒索软件失效。
小结
1.在Android N中,锁屏勒索类木马只能利用系统提供的重置密码API来设置设备的初始密码,而不能用来修改已有密码,这也就意味着那些从不设锁屏密码的用户仍然会处在危险之中,由此可见用户养成主动设置锁屏密码等良好习惯对提高设备安全性而言非常重要;
2.由于在针对Android N以下版本的锁屏勒索类木马中,重置密码相关的木马占比较大,因此AndroidN对该API的使用限制将会大幅缩小锁屏勒索类木马的影响范围;
3.面对此种对重置密码功能的限定,锁屏勒索类木马可能会另辟蹊径,比如结合伪装、诱导等其他手段来扰乱用户正常使用设备,以达到敲诈勒索的目的。对此我们会继续关注,让用户更安全地使用手机。