一种移动平台钓鱼攻击的解决方法

2016-05-14 22:34段青
网络空间安全 2016年4期
关键词:Android系统系统安全

【 摘 要 】 随着移动互联网以及Android手机的普及,针对Android平台上社交与支付类应用的钓鱼攻击也逐年增加,引发窃取用户隐私数据尤其是金融相关数据的行为从而导致信息泄露或财产损失的后果非常严重。论文分析了针对Android系统钓鱼攻击的原理,同时指出了Android平台下安全软件无法识别以及在应用层无法拦截这种攻击的原因,并选择在系统框架层上实现针对钓鱼攻击的识别与拦截,基于Android4.4系统,在框架层AMS(包管理服务)中添加钓鱼应用识别与拦截模块,同时编写钓鱼应用并在不同机型系统中做攻击测试,结果表明现有安全软件无法对钓鱼攻击做出识别,所设计的方案则可以做到识别与拦截,同时为用户提供了两种级别的保护方案,可根据不同需求自己定制,有效地保证了用户在使用手机时的安全。

【 关键词 】 钓鱼攻击;Android系统;系统安全 【 文献标识码 】 A

【 Abstract 】 With the popularity of Mobile Internet and Android mobile phone, the number of phishing attacks aimed at social and payment applications on Android platform is increasing year by year. And the target is to steal user privacy data ,especially associated with finance which will leading to lots of serious consequences, such as user information disclosure, property loss, etc. This paper analyses the principle of phishing attacks,at the same time, we points out the reasons why Android platform security software cannot identify and in application layer cannot intercept the attacks. We decide to choose the realization and interception in the recognition of phishing attacks in system framework layer.Based on the Android 4.4 platform, we add phishing identification and interception module in AMS (Activity Management Service) of framework layer. Meanwhile we test the attack in different models of system, the results indicate that the present security software cannot detect the phishing attack, and the designed scheme can detect and block the attacks. Meanwhile, two protection schemes with different security levels are provided for users who can choose a suitable one according to their requirements. In such a way, the security can be guaranteed when a user uses his cell phone.

【 Keywords 】 phishing attack; android system; system security

1 引言

根据IDC(International Data Corporation)市场研究公司近期公布的数据显示,Android系统在全球智能手机市场中的份额高达78.1%。在国内,Android系统的占有率高达80%。随着手机应用的不断推广,其伴随而来的数据安全问题也日渐突出,手机中大量存储了人们日常生活中的数据,例如通信录、短信、应用的使用情况等。恶意应用早已瞄准移动市场。在这些恶意应用所产生的攻击中,隐私窃取、恶意扣费以及资费消耗三种后果所占比例高达96%,钓鱼攻击的严重性在于可以利用其窃取的隐私数据进而产生一系列后续的攻击从而导致更严重的后果。

Android平台上钓鱼攻击危害程度之高的关键因素在于目前市面上的安全软件,如金山手机卫士、手机毒霸、乐安全等根本无法识别出,其原因在于目前Android平台上的安全软件所使用的杀毒引擎大多基于两点来判定一个应用是否含有恶意行为:第一,基于行为的判断,应用在运行过程时是否存在越权行为或读取隐私数据;第二,基于应用签名(或摘要)的判断,根据应用文件来判定是否为恶意应用。钓鱼攻击对这两种方式有先天的免疫功能,对于第一点,判断应用运行时是否存在读取隐私数据,或通过云杀毒方式利用后台服务器来对特殊文件进行检测(常用方式为静态、动态分析,转化为数据流分析)。钓鱼应用一般实现并无破坏系统等恶意行为,也无读取例如用户通信录,联系人等隐私数据额行为,因而可以完全跳过安全软件的行为监控;对于第二点,检测仅仅通过对比应用签名或文件摘要来判断,这种方式完全基于安全软件所依赖的病毒数据库,对已知的恶意应用可以识别,但对新出现或者未知的恶意应用则完全无效,而且几乎所有恶意应用在这一点上都轻松做到免杀。

通过对钓鱼应用原理的分析,本文基于Android 4.4原生系统,在框架层AMS(包管理服务)中添加钓鱼识别与拦截模块,在框架层上识别并拦截钓鱼攻击,并通过编写钓鱼应用在不同机型系统中做对比测试,测试数据表明在框架层可以实现钓鱼攻击的识别与拦截。

本文第一部分介绍了钓鱼攻击的一般原理与流程;第二部分介绍框架层服务AMS(包管理服务)启动应用的流程,并在启动步骤中添加钓鱼识别与拦截模块;第三部分介绍了依据钓鱼攻击的原理编写钓鱼应用,并在不同机型与系统上做钓鱼攻击测试,结果表明在添加钓鱼识别与拦截模块的系统上可以有效的拦截钓鱼攻击。

2 钓鱼攻击原理

钓鱼攻击方式由来已久,早在PC时代针对电子商务以及银行的各种钓鱼网站就层出不穷,不法分子或伪造URL地址及页面内容或在真实网站服务器程序上利用漏洞植入危险HTML代码以此欺骗客户账号以及密码等信息。

在Android系统上,由于多任务单界面的移动系统设计原则,非常容易遭受钓鱼攻击(组件劫持)。另外,依据移动应用的设计理念,打开应用首先直接进入应用主界面,之后根据网络环境变化或者其他条件再触发登录,注册操作,这也是钓鱼攻击利用的一个重要原因,其最根本因素是,用户无法判断当前手机画面上显示的界面是否为钓鱼应用。

钓鱼攻击的一般过程(以微博为例)。

第一步,启动后台服务,其功能是实时获取用户手机中当前正在运行的APP是否为微博;第二步,当用户打开微博应用时,启动事先制作好的微博登录界面,诱导用户重新登录;第三步,将用户输入的信息通过网络或者短信形式发送至攻击者。

钓鱼应用一般由两部分组成:第一部分是制作Service系统服务,利用Android系统提供的API ActivityManager.getRunningTasks实时获取当前正在运行的应用;第二部分是制作钓鱼界面,由于Android应用通过Java编写,其界面布局以XML文件形式存储,因而比较容易通过反编译等方式制作出高仿界面,在系统切换Activity的间隙中,运行此钓鱼界面,然后可以将所窃取的微博登录账号与密码通过网络或者短信等方式发送给攻击者。

钓鱼攻击的核心在于与正常应用抢占开启时机,由于Android手机多任务单界面设计理念,在任务切换时会有时间间隙,利用这个间隙启动钓鱼应用,使得用户难以通过屏幕区分当前运行的应用是否为钓鱼应用。

3 设计方案

一般来说实现钓鱼攻击检测有两种方式,分别在应用层与系统层(框架层)识别拦截。

第一种,在应用层上识别。应用层实现方式与钓鱼攻击实现步骤第一步类似,通过系统后台服务实时监控当前正在运行的应用名称,并通过悬浮窗口或通知方式显示给用户。在应用层上实现有三个不足:(1)后台服务实时监测需要定时获取当前正在运行的应用信息,监测间隔时间设置若过长,则可能失去监测效果,若过短,则会严重影响系统系能;(2)在应用层上无法做到钓鱼应用的拦截,因为所有应用的启动是由AMS(包管理服务)负责,应用层无权限干涉AMS的流程;(3)通过悬浮窗口实时显示,会严重应用用户体验度,而通过Toast方式提示则很容易被用户所忽略。

第二种,在框架层上识别。通过对比应用层实现的不足,本文选择在框架层实现,原因有四点:(1)根据第二小节对钓鱼原理的分析,其实现第一步所利用的API属于系统开放API,因此只能在第二步启动钓鱼界面这一步骤中实施拦截;(2)应用的启动是通过框架层中的AMS管理,而在应用层无法实现AMS流程的修改;(3)在框架层实现可以实现高效的识别与拦截钓鱼攻击;(4)由于已经可以在框架层做出拦截,因此不再需要通过各种提示方式提醒用户,用户体验非常好。

根据上述分析,实现的主要部分在AMS中,即在Activity启动流程中添加钓鱼攻击识别与拦截模块。

3.1 AMS中的基本数据结构

在Android中,所有Activity的启动,退出都由AMS来统一负责管理。AMS中对Activity的管理是通过“Stack”这种数据结构来管理的。其使用的主要数据结构变量由大到小分别为:mStacks——管理Stack的单位,存储所有的Stack;Stack——管理Task的单位,在Android4.4中使用了mHomeStack与mFocusStack两个变量,分别用来存储与Launcher(Home)相关的Task与非Launcher相关的Task;Task——管理Activity的最小单位,存储的内容是同一组任务中相关的所有Activity。

钓鱼应用实现中,通常都会利用系统API实时获取mFocusStack中正在运行的Task,从而获得顶端Activity的相关数据,而其自身也会存储于mFocusStack中,因此判断钓鱼应用Activity需要从mFocusStack中遍历查询,判断其是否退出也需要从mFocusStack中做轮询判断。

3.2 Activity启动流程分析与模块添加

Android系统中AMS启动Activity流程如图1所示。

如图1描述了Android系统中启动一个Activity时AMS所需要做的工作,无论是通过点击Launcher中的图标,还是通过startActivity函数启动(钓鱼应用启动是通过此方式),最后都会调用Activity类中的startActivity函数来启动,并最终都会由AMS执行AMS中的startActivity函数来完成。

在原生系统中,启动一个Activity只需要做权限判断,调用者身份判断等基本验证,之后就会启动任何符合要求的Activity,这是钓鱼应用可顺利启动的重要原因,因此,要预防钓鱼攻击,就需要在此处添加验证钓鱼的模块。图1中的红色部分即为需要添加身份判断与拦截的模块,所添加的识别与拦截模块流程如图2所示,以支付宝为例(要保护的应用为支付宝)。

当用户启动支付宝应用时,在AMS内部会触发并启动保护识别模块,称为保护代码,这部分代码的功能是阻止任何非系统应用以及非保护应用的启动。这样,当用户在使用支付宝的时候,不会有恶意应用弹出,不必担心会突然弹出一个类支付宝界面的应用而造成信息泄露。

在实现中,考虑到不同类应用的安全敏感级别,例如对于支付宝,银行客户端等金融相关应用重要性相比微信、微博等社交类应用要高,因此,设计中受保护的应用分为两大类:第一类支付相关应用(例如支付宝、银行客户端等,设置等级为1);第二类社交类应用(例如微信、微博等,设置等级为2)。图2中描述了四类不同级别应用启动时的流程。

当需要保护的应用启动之后,会触发保护代码块启动保护,之后所有应用的启动都根据图2中的规则启动。对于第一类应用,当保护代码打开之后,只允许系统级与第一类应用可以启动;对于第二类应用,当保护代码打开之后,只允许系统级与第一、二类应用启动,当受保护的应用退出之后,保护代码关闭,所有应用以正常方式启动。

4 实验测试

通过对钓鱼攻击原理的分析,本文编写了针对支付宝与微博的钓鱼应用,分别在不同机型系统上做钓鱼攻击测试。

4.1 钓鱼攻击测试

实验测试参数如表1所示。

从表1中可以看出,Android平台上大多数安全软件几乎无法监测到钓鱼攻击的存在。

图3是在小米1s手机上进行钓鱼攻击测试,系统为MI V4,用户开启支付宝应用时,出现钓鱼登录界面,当用户输入账户信息时,可以看到成功的通过短信方式获取到了测试的数据,如图3(右侧)所示,指定攻击者为本机,因而会在本机收到短信息。

在改进AMS的系统中,由于添加了相应的识别与拦截模块,因而不会出现钓鱼界面。

4.2 准确性测试

在改进AMS的系统上做进一步准确性测试,测试环境为:小米1S,系统为带有改进AMS的Android4.4系统。设置第一类保护应用:支付宝、交通银行客户端、中国银行手机客户端;第二类保护应用为:微博,微信、QQ、飞信。测试状态如表2所示。

当启动第一类应用时,除系统与第一类应用外,其他应用不允许启动,所启动的应用退出,保护结束;对于第二类应用,保护程度相对降低,当第二类中的应用启动或者前台运行时,不允许非系统,第一、二类应用启动,当其退出或者后台运行时保护结束。

钓鱼识别的准确性在于对第一、二类应用名单的设定,由于支付类相关应用设计财产,并且每次使用时时间不会太长,因此适合设定为第一类应用;其他社交类应用例如QQ等连续使用时间一般较长,适合设定为第二类应用。当运行保护应用时,拦截规则如图3所示,第一类应用为严格模式,第二类为非严格模式。

5 相关工作

Android 系统普及的同时,各种恶意软件和木马也随之爆发。2013年上半年,中国 Android 平台新增手机木马、恶意软件样本 228649 款,超过 2012 年全年新增样本总量,其中九成恶意软件窃取用户隐私。Android 移动终端存在很大的安全隐患。

朱筱赟等提出了一个基于Android平台的移动办公安全方案。文章以 Android系统的系统架构、安全机制与其缺陷作为出发点,探讨了Apperian移动商务、Vmware虚拟桌面及SamsungKNOX 这几款典型移动办公安全方案,总结了时下几种主流移动办公安全方案,比较各类方案的优缺点。同时文章就安全隔离、安全接入与安全存储等方面阐述了相关的移动办公安全措施,总结了虚拟化技术方案、层次化隔离技术方案、双系统方案与完全双系统方案,同时分析了利用VPN技术、数据库加密技术、权限控制技术在提升系统安全方面的作用。高岳、胡爱群设计并实现了一种基于权限分析的 Android 隐私数据泄露动态检测方法。该方法将Android静态检测中的权限分析与动态污点检测结合,根据应用程序申请的权限确定动态污点检测的隐私数据类型和隐私出口类型。

然而,有研究者认为Android 权限的管理机制存在几个问题:

(1)用户能够在应用程序安装过程中审阅请求权限并加以评估,但用户最终要么全部接受,要么就不能安装应用程序;

(2)用户权限授权是一次性的,只在安装时有效,对于安装后的应,Android系统并不支持动态的权限管理机制;

(3)Android权限划分粒度不够细化,普通用户根据其安装时的权限提示,难以区分恶意程序与正常应用,埋下严重的安全隐患。

为此,李宇翔、林柏钢设计了利用重打包注入安全防护代码的加固系统,不仅提供应用动态权限管理机制,还提供权限划分细粒度的安全策略,从源头上遏制恶意代码行为,用户也可根据需求定制策略,满足不同安全需求的安全加固应用。

6 结束语

本文主要针对于Android系统上存在的钓鱼攻击做了原理上的分析,并针对于此给出了对应的防 御方案。钓鱼攻击主要利用了AMS(包管理服务) 灵活性与开发性,与所要钓鱼的应用抢占开启时机, 从而达到钓鱼目的。因此本文在框架层的AMS中 添加钓鱼识别与拦截模块,并依据钓鱼原理编写了 钓鱼应用,同时在不同机器上与系统上做了钓鱼攻 击对比,发现现有安全软件无法对钓鱼攻击做出识 别,在改进的系统上则可以做到识别与拦截,同时为用户提供了两种 级别的保护方案,可根据不同需求自己定制,有效的 保证了用户在使用手机时的安全。

参考文献

[1] Yang Z, Yang M, Zhang Y, et al. Appintent: Analyzing sensitive data transmission in android for privacy leakage detection[C]//Proceedings ofthe 2013 ACM SIGSAC conference on Computer & communications security.ACM,2013:1043-1054.

[2] 王浩宇,王仲禹,郭耀等. 基于代码克隆监测技术的Android应用重打包检测[J].中国科学信息科学,2014,44(1):142-157.

[3] Yan M,Mehrdad S S.Investigation of Static andDynamic Android Antivirus Strategies[J].IEEEInternational Conference on InformationTechnology.2013:398-403.

[4] 杨智,殷丽华,段洣毅等. 基于广义污点传播模型的操作系统访问控制[J].软件学报,2012,23(6):1602-1619.

[5] 邓凡平.深入理解Android(卷二)[M].北京: 机械工业出版社, 2012.

[6] S. Arzt,S. Rasthofer,C. Fritz,E. Bdden,A. Bartel,J. Klein,Y.L. Traon, D.Octeau,P. McDaniel. FlowDroid:Precise Context,FlowField,Object-sensitive and LifeCycle-aware Taint Analysis for Android Apps[C]//PLDI14 Proceedings of 35 th ACMSIGPLAN Conference on Prograamming Language Design an Implementation ACM, 2014:259-269.

[7] Yang Z, Yang M, Zhang Y, et al. Appintent: Analyzing sensitive datatransmission in android for privacy leakage detection[C]//Proceedings of the2013 ACM SIGSAC conference on Computer & communications security.ACM, 2013: 1043-1054.

[8] 朱筱赟,胡爱群,邢月秀等.基于Android平台的移动办公安全方案综述[J]. 信息网络安全,2015,(1):76-83.

[9] 李宇翔,林柏钢.基于Android重打包的应用程序安全策略加固系统设计[J].信息网络安全,2014,(1):43-47.

[10] 高岳,胡爱群.基于权限分析的Android隐私数据泄露动态检测方法[J]. 信息网络安全,2014,(2):27-31.

作者简介:

段青(1978-),男,汉族,山东青岛人,毕业于西安电子科技大学,学士学位,国家海洋局北海分局北海信息中心,工程师;主要研究方向和关注领域:信息系统及其安全。

猜你喜欢
Android系统系统安全
电子信息技术在医药卫生系统安全方面的应用研究
地铁车辆车门系统安全互锁回路异常处置思路解析
基于层次分析法的隧道机电系统安全评价
浅析计算机系统安全及其维护策略
Android系统上的移动互联网集成平台开发机制
Android系统核心管理工具设计与实现
Android下的机械式电表数字识别技术研究
网络安全技术与公安网络系统安全研究
基于GPS和iBeacon的智能校园信息发布平台设计与实现
基于增强现实技术的导航系统研究