文章信息
- 陈祥云, 王持恒, 杜瑞颖, 陈晶, 曾诚
- CHEN Xiangyun, WANG Chiheng, DU Ruiying, CHEN Jing, ZENG Cheng
- Android平台下勒索软件的主动实时检测
- Initiative and Real-Time Detection Method of Ransomware on Android
- 武汉大学学报(理学版), 2017, 63(5): 403-411
- Journal of Wuhan University(Natural Science Edition), 2017, 63(5): 403-411
- http://dx.doi.org/10.14188/j.1671-8836.2017.05.004
-
文章历史
- 收稿日期:2017-01-03

2. 武汉大学 软件工程国家重点实验室, 湖北 武汉 430072;
3. 武汉大学 地球空间信息技术协同创新中心, 湖北 武汉 430072;
4. 湖北省高级人民法院, 湖北 武汉 430071
2. State Key Laboratory of Software Engineering, Wuhan University, Wuhan 430072, Hubei, China;
3. Collaborative Innovation Center of Geospatial Technology, Wuhan University, Wuhan 430072, Hubei, China;
4. Hubei Higher People's Court, Wuhan 430071, Hubei, China
随着智能手机的越来越普及,智能手机所遭受到的安全威胁也越来越多.手机勒索软件就是近年来针对智能手机的一种危害极大的安全威胁,并有愈演愈烈的趋势.据卡巴斯基实验室统计,在2015年4月到2016年年初,遭到手机勒索软件的威胁的用户只有35 413个,而到2016年3月份,遭到手机勒索软件威胁的用户达到了136 532个,不到3个月的时间中增加了101 119个[1].
手机勒索软件是一种恶意应用,这种恶意应用通过锁住用户设备或加密文件,使用户无法正常使用,并以此胁迫用户支付解锁或解密费用的恶意软件,给用户移动设备带来了巨大安全威胁.不同于其他类别的恶意软件,勒索软件无法通过被移除来使得用户恢复对设备或者文件的控制权.
为了解决勒索软件的威胁,Yang[2]等提出了一种针对Android勒索软件自动检测和分析的方案,但这个方案是基于勒索软件和恶意软件的共性特征提出的,并没有对勒索软件特性进行分析,而且这个方案并未被实现,方案的可行性需要进一步的验证.Andronio[3]提出了一种基于语言学的快速高效的针对Android勒索软件的检测方法.这个方法主要使用了自然语言处理技术[4~6]、空间向量相似度比较技术、静态代码分析技术[7]和符号执行技术[8]对勒索软件的主要特征——威胁文本、锁屏特征、加密特征——进行了分析,并对这些勒索软件特有特征进行检测.但这种检测方法主要部署在服务器而不是终端上,并且只能检测针对拉丁语系的应用,具有一定的局限性.Song[9]等提出了一种Android平台下通过进程监控来阻止勒索软件的方法.这种方法针对进程和特定文件目录进行监控,并根据处理器使用情况、内存使用情况和I/O使用情况发现异常行为.但这个方法主要是针对勒索软件加密的特征,并且没有使用勒索软件样本进行验证,其系统的可用性需要进一步验证.
根据调查,我们发现目前多数针对勒索软件的解决方案属于离线检测,而离线检测是一种被动检测,而且效率较低,无法及时、快速的应对勒索软件的威胁,所以本文提出了一种可以部署到Android设备上的针对勒索软件的主动实时检测方法,并对该方法进行了实现.
1 勒索软件及其特征分析 1.1 勒索软件Android勒索软件最早在欧洲出现,而今国内也出现了此类软件,并有愈演愈烈的趋势.分析发现勒索软件主要伪装成游戏外挂、低俗视频播放器、Adobe Flash Player、杀毒软件等,运行时要求用户激活设备管理器,并强行将勒索界面置顶,造成手机无法正常使用,更有甚者加密手机SD卡,使用前置摄像头对用户进行拍照上传、设置新锁屏密码等恶意行为[10].
勒索软件同其他恶意软件类似,同样采用多种途径进行传播,例如短信、网站、邮件等.图 1显示了典型勒索软件的攻击流程.一旦勒索软件安装在设备上并启动它时,它就会企图感染和控制设备.比如,它会搜索有特定扩展名的重要文件,如txt、doc、ppt和jpg,之后使用加密算法对设备上的文件进行加密或者锁定设备屏幕,这导致用户无法访问他们的文件或设备.此外,勒索软件还会通过威胁性文字恐吓用户,如果用户想要解锁设备或者恢复被加密的文件需要给攻击者支付相应的赎金.
|
| 图 1 勒索软件攻击流程 Figure 1 Attack process of ransomware |
通过大量分析各反病毒公司报告、技术人员的博客,以及对已知样本的手动分析,我们对10个勒索软件家族[11~13]的恶意行为进行了详细的分析,结果如表 1所示.分析发现,所有成功给用户造成危害的勒索软件至少执行了以下两个操作之一:1) 锁定设备屏幕;2) 加密用户私密文件.
| 勒索软件 | 加密特征 | 锁屏特征 | 其他特征 | 出现时间 | |||
| 加密文件 | 查找文件 | 删除文件 | 勒索文本 | Bitcoin/MoneyPak支付 | |||
| Svpeng | √ | √ | √ | 2014 | |||
| Koler | √ | √ | √ | 2014 | |||
| Simplocker | √ | √ | √ | √ | 2014 | ||
| ScarePackage | √ | √ | √ | 2014 | |||
| Pletora | √ | √ | 2014 | ||||
| Small | √ | √ | √ | 2015 | |||
| Fusob | √ | √ | √ | 2015 | |||
| Lockerpin | √ | √ | 2015 | ||||
| PronDroid | √ | √ | √ | √ | √ | 2015 | |
| Cryptolocker | √ | √ | √ | √ | √ | 2016 | |
大多数情况下,勒索软件会尝试锁定用户手机,阻止用户访问他们的设备,使他们的手机功能失效.例如,ScarePackage勒索软件家族,一旦用户不小心安装并启动这类恶意应用,用户的手机就会被锁定.如果用户尝试重新启动设备,这个恶意软件也会随之自启动.同时,ScarePackage还会假冒FBI的名头,对用户进行威胁勒索,如图 2(a)所示.另外,还有一些更高级的勒索软件会加密用户的文档、图片、媒体文件等.例如,Simplelocker勒索软件家族,它们的目标就是以jpeg、png、txt等为扩展名的文件,之后使用AES加密算法对这些文件加密[14],加密后的将文件扩展名变为enc,如图 2(b)所示.更有一些勒索软件既有锁屏功能又有加密功能,例如,PronDroid和New Simplocker[15]两种勒索软件.
|
| 图 2 两个Android勒索软件的样本 Figure 2 The two simples of Android ransomware |
勒索软件虽然有很多变体,但是锁屏和加密文件仍然是它们主要的特征.为了实现Android勒索软件检测系统,并将其部署到Android平台上,我们提出以下设计目标.
1) 主动实时检测:因为勒索软件一旦控制设备,不论锁屏还是加密用户数据,都会给用户带来巨大的困扰.所以应该在应用安装之前和安装后运行时对应用进行主动检测和监控,使得勒索软件的恶意行为在锁屏之前或加密之初被发现并被阻止.
2) 轻量级分析:由于手机是一种资源受限的平台,复杂的分析会消耗大量的资源,所以Android平台上的勒索软件的检测所消耗资源必须是有限的.
1.2 勒索软件特征分析 1.2.1 锁屏特征分析对于锁屏特征,本文根据Android开发者API文档[16, 17]和对已知Android勒索软件样本的手动分析,发现了锁定屏幕最常用的方法,例如创建无法关闭的Activity、创建无法关闭的悬浮框、创建无法关闭的Dialog和激活设备管理器强制改变设备的PIN等.下面我们对这4种锁屏策略的特征进行详细的分析, 并对其进行总结如表 2所示.
| 策略 | 方法 | 相关权限 |
| 激活设备管理器强制改变设备PIN | 调用LockNow和resetPassword函数 | android.permission.BIND_DEVICE_ADMIN |
| 创建无法关闭的Activity | 调用onKeyDown或者onKeyUp,同时调用window.setType方法 | android.permission.SYSTEM_ALERT_WINDOW |
| 创建无法关闭的悬浮框 | 设置WindowManager.LayoutParams.type的属性值 | android.permission.SYSTEM_ALERT_WINDOW |
| 创建无法关闭的Dialog | 调用setCancelable(false)函数,同时调用window.setType方法 | android.permission.SYSTEM_ALERT_WINDOW |
1) 创建无法关闭的Activity:这种策略是创建一个Activity填满屏幕,之后重写OnKeyDown或者OnKeyUp函数,使其返回true,而OnKeyDown或者OnKeyUp函数返回值是true,表示导航键的点击事件被正确处理,不需要将事件转给其他的组件.同时重写onAttachedToWindow函数并调用window.setType方法,设置其参数为2004或者2010,造成导航键抑制,以至于Activity无法关闭,达到锁屏的效果.
2) 创建无法关闭的悬浮框:这种策略是通过addView方法创建一个悬浮框并设置WindowManager.LayoutParams的type和flags属性,其将type的属性值设置为“TYPE_KEYGUARD”或者“TYPE_SYSTEM_ERROR”,将flags的属性值设置为“FLAG_FULLSCREEN”或者“FLAG_LAYOUT_IN_SCREEN”,这样就会造成整个悬浮框无法关闭,达到锁屏的效果.
3) 创建无法关闭的Dialog:这种策略是通过调用setCancelable函数并且设置其参数为false实现一个无法关闭的Dialog.此外,此策略也会调用WindowManager.setType方法,将其参数设置为2004或2010,使得导航键被屏蔽,达到锁屏的效果.
4) 激活设备管理器强制改变设备PIN:这种策略是通过诱导用户激活设备管理器,调用DevicePolicyManager.resetPassword和DevicePolicyManager. lockNow方法,在用户未知情的情况下强制给手机重新设置一个解锁PIN码,导致用户无法解锁手机,以达到锁屏的效果.
1.2.2 加密特征分析通过对收集到的具有加密特征的勒索软件的样本的分析,发现其加密文件常用的方法:
1) Android API加密:这种方法首先通过Environment.getExternalStorageDirectory API函数读取外部存储中的文件,之后调用javax.crypto库中的加密相关的API,例如Cipher.doFinal或CipherOutputStream函数,对文件进行加密.
2) 自定义加密:这种加密方法同样是先读取外部存储,找到有价值的文件,然后加密,但这种方法使用的是自定义的加密算法,比如,文件的二进制格式进行位运算等.
在分析加密方法的同时,我们还发现勒索软件加密的目标一般是私人信息文件,例如联系人信息、短信息、照片等, 而这些文件的丢失或损坏将会对个人的交际和生活带来不可估量的损失.所以根据勒索软件的目标,我们总结得出了勒索软件可能感兴趣的目录如表 3所示.
| 名称 | 目录 | 描述 |
| 应用数据信息 | Android/data | 存放应用数据的目录 |
| 账户信息 | /data/system/accounts.db | 存放用户个人账户信息的数据库 |
| 联系人信息 | /data/data/com.android.providers.contacts/databases/contacts2.db | 存放用户联系人信息的数据库 |
| 短信信息 | /data/data/com.android.providers.telephony/database/mmsms.db | 存放用户短信信息的数据库 |
| 照片 | /sdcard/Pictures | 存放用户照片文件目录 |
| 下载文件 | /sdcard/Downloads | 存放下载文件目录 |
根据第1节对勒索软件介绍和对其特征的分析,本文提出了一种检测勒索软件方法,总体架构如图 3所示.对勒索软件的检测分为两个阶段,第一个阶段是静态特征分析阶段;第二个是动态行为实时监控阶段.
|
| 图 3 系统的分析检测流程 Figure 3 The process of system analysis |
静态特征分析阶段主要是用于检测勒索软件锁屏特征,因为勒索软件的锁屏策略必须依靠特定的权限和特定的函数实现.因此需要在应用安装前对其进行快速的代码检测以判断该应用是否拥有永久锁定设备的风险.为了实现这一目标,本阶段将在应用下载到设备上时立即对应用进行分析.通过检测锁屏策略所使用的函数,并对使用的函数进行上下文分析来提取相关特征.之后,通过基于规则的分类方法[18, 19]来检测该软件是否有锁屏特征.一旦发现含有锁屏特征的恶意软件,系统就会阻止其安装并对用户发出提示.
具体的说,本阶段是根据1.2节中对勒索软件锁屏策略的分析,使用了一种静态代码分析的方法去检测勒索软件的锁屏特征.
首先,当一个应用下载到手机上时,系统对应用进行捕获,并对该应用进行逆向分析,得到中间码.之后,在逆向分析的中间码中检索相应的锁屏策略,最后,利用基于规则的分类器对勒索软件的锁屏策略进行检测.其中基于规则的分类的算法,相比于其他分类算法,可以在相对少的训练样本上获得更好的检测性能.此外,基于规则的检测方法可以设置预定义的规则,这种模式非常适合有具体特征的勒索软件锁屏策略.
2.2 动态行为实时监控由于加密所使用的方法是多样的,仅依靠静态分析是很难判断应用是否会加密文件,而Android API HOOK技术只能监控加密相关的API,对自定义的加密方法无法检测.因此,本文提出一种通过检测文件被访问前后信息熵的变化来判断文件是否被加密的方法[20].信息熵是信息论中用于度量信息量的一个概念,变量的不确定性越大,熵也就越大.因此从数据角度看,一个文件的信息熵在加密前后会发生很大的变化.正常情况下,一个加密文件的数据比较随机,而一个没有加密的文件的数据相对更有序.所以,一个加密文件的信息熵要比一个非加密文件的信息熵高.
同时,通过对正常应用和勒索软件的分析,我们发现两者对待敏感操作是有区别的,一般正常应用进行敏感操作是会给用户提示,并且是由用户亲自触发,而勒索软件会通过后台执行或者欺骗性窗口进行操作.因此,正常的应用程序在Activity中会包含相关操作控件元素,而勒索软件不会.根据这个区别,在动态行为实时监控阶段,本系统持续对表 3所列文件目录进行监控.一旦发现某个文件被加密,而当前Activity却不包含加密操作相关的UI元素时, 则本系统会终止该可疑应用并通知用户进行判断.若其用户认为其合法,可以将其加入到白名单.
据此,本文对动态行为实时监控阶段进行了设计,其总体流程如图 4所示,这个阶段主要包括三个模块:加密分析模块、应用一致性分析模块和布局分析模块.
|
| 图 4 动态行为分析阶段流程 Figure 4 The process of dynamic behavior analysis |
加密分析模块监控表 3中所提到的目录及目录中的文件并分析文件是否被加密.当这些目录中的文件被访问,计算其访问前和访问后的文件的信息熵,如果该文件在被应用访问前和访问后其熵的变化超过了一定的阈值,则被认为该文件可能被加密.
应用一致性分析模块检测加密操作是否属于当前与用户交互的进程.一般勒索软件的加密操作是在后台悄悄的进行,所以当加密操作发生时,需要判断其合法性,即确定加密操作是否由与用户交互的进程触发.这个检测很容易实现,只需要比较执行加密操作应用的包名和当前正在与用户交互的应用的包名即可.如果进行加密操作的应用和当前正在与用户交互的应用不同,那么进行加密操作的应用就是一个未知的应用,而这个未知应用可能就是勒索软件.如果加密操作是当前与用户交互的应用触发,也不能保证当前应用就是安全的,这时就需要对应用进一步分析,即布局分析.
布局分析模块是对当前应用相关Activity的界面和用户操作的坐标进行分析,判断操作是否符合用户意图.
由于勒索软件加密文件不会经过合法用户同意,也不会显示加密过程,而正常软件当加密用户文件时,必定在相应的Activity上有显著的特征.例如,提示用户该Activity或者Button的功能的文本和供用户点击的按钮等.
因此,在进行布局分析时,第一步,记录应用访问文件过程中相关Activity的布局信息和相关的用户操作,包括点击事件及其点击坐标;第二步,判断在加密过程中有没有点击操作,若没有,系统可以直接断定访问不符合用户的意图.若有,进行下一步分析;第三步,系统将判断Activity上是否存在明显的加密提示信息,即相关Activity布局信息中是否含有相关的提示文本和控件.最后,通过布局信息和用户点击坐标信息进行分析,判断应用执行的操作是否符合用户意图,如果应用执行操作不符合用户意图,该应用会被终止,之后该应用会被标记为勒索软件,并将应用从设备上删除,同时记录到黑名单中.
3 系统实现 3.1 静态特征分析模块实现为了开发一个轻量级的静态特征分析系统,并使这种系统可以直接部署在Android设备上.我们使用了两个常用的Android系统工具——AAPT(http://blog.csdn.net/g19920917/article/details/20244937)和Dexdump(http://blog.csdn.net/doon/article/details/51691627),在这两个Android工具的基础上构建静态特征分析模块.这两个工具都是集成在Android SDK中的.
首先,当一个APK下载到手机设备上时,静态特征分析模块从APK中提取classes.dex文件.为了达到这一目标,本文开发了一个解包程序,利用这个程序可以直接将classes.dex从APK中快速的提取出来,而不需要解包整个APK文件.然后,静态特征分析模块将利用AAPT工具,使用aapt dump permissions 〈file_path.apk〉命令提取该APK所声明的权限;最后,静态特征分析模块将利用Dexdump逆向分析classes.dex文件.Dexdump与其他的逆向分析工具不同,Dexdump可以直接运行在Android设备上,并且产生精确的分析结果,这个工具将classes.dex反汇编为中间码,可以在这些中间码中检索是否存在相应的锁屏策略.
检测表 2列出的锁屏策略中OnKeyDown和OnKeyUp函数的返回值是一项困难的任务.要完成这一项任务,需要找到定义OnKeyDown和OnKeyUp函数的地方,并且验证每条执行路径的返回值.对于重写的OnKeyDown和OnKeyUp函数,如果每条执行路径的返回值总是True,则该程序可能存在相应的锁屏策略.
3.2 动态行为实时监控模块实现在动态行为实时监控阶段,若当前应用被检测到对文件进行了加密操作,那么就需要对应用的布局信息和用户的操作进行分析,来判断加密操作是否符合用户的意图.
判断加密操作是否符合用户的意图的实现主要分为两部分:对象识别和坐标匹配.前者负责检测布局信息中是否存在加密操作相关的文件选择和提示文本,后者负责判断用户点击的坐标是否在相关按钮坐标范围内.
1) 对象识别:为了检测Activity是否存在加密操作相关的UI元素,本系统会从当前Activity中提取UI控件信息.在Android系统中,视图在Android系统中被组织为层次结构树.布局和控件形成了视图的层次结构.本系统利用uiautomator工具去检索视图层次结构树.这个工具也被整合到Android SDK,可以返回Activity的详细信息.具体的说可以使用uiautomator dump命令,获得当前Activity的UI层次信息,这些信息以字符串形式显示.系统可以从获取到的层次信息中提取分析中所需要的UI控件信息,包括UI控件的类型、相应的提示文本、相关的坐标、控件是否可被点击等.根据获取到的UI控件的信息,判断是否存在与文件选择相关的列表、编辑框等控件,是否存在提示文本,是否存在按钮以及按钮可否被点击等信息.若UI控件信息不包含相应的控件、提示文本等信息则应用可能是勒索软件,否则继续检测.
2) 坐标识别:通过uiautomator获取的UI的层次信息包含控件的坐标,所以只需要判断点击操作是否针对特定的按钮.本系统采取方法是比较点击位置和UI控件位置之间的关系.即需要去判断用户点击坐标是否在控件坐标范围之内.比如,如果一个按钮的坐标范围是[50, 50]、[100, 75],而用户点击的坐标[58, 67],我们可以认为用户点击了这个按钮.此外,本系统会检查按钮上的文本,并判断文本提示信息是否与按钮执行操作一致.如果按钮上的提示信息与点击按钮后执行的操作一致,说明执行的操作是合法的.如果按钮没有被点击,或者按钮上的提示信息与点击按钮后执行操作不一致,说明执行的操作是不合法的,则此按钮可能是一个用来欺骗用户的干扰按钮,需要终止执行的操作,并给用户提示信息.
4 实验测试与分析 4.1 实验设置1) 数据集:对于实验,本文使用了收集到的Android正常应用和勒索软件样本.其中勒索软件样本是在HelDroid[3]实验样本的基础上构建的,包括675个勒索软件样本.我们对数据集中的每个样本进行分析,并列出了每个样本特征,包括锁屏、加密、勒索文本.根据我们统计,总共有585个勒索软件包含锁屏特征和282个勒索软件包含加密特征,其中有既包含锁屏特征又包含加密特征的勒索软件.
除了勒索软件数据集,本文同样收集了10 000个正常应用.为了进一步清理正常应用数据集,本实验将这些软件提交到VirusTotal.对于每一个样本,记录标记其为恶意软件的杀毒引擎的数量.最后,丢弃掉被两个以上的杀毒引擎标记为恶意程序的应用.这样,本文正常应用的数据集有9238个.
2) 原型系统实现:本文提出的勒索软件检测方法适用于Android操作系统.具体上说,我们的原型系统使用java语言开发.第一阶段,即静态特征分析阶段,有1 317行java代码;第二阶段即动态行为实时监控阶段,有2 242行java代码.
本系统可以运行在装有不同版本Android系统的移动设备上.在我们的评估中,系统运行在Android5.0系统,1.5 GHz的CPUs,2GB RAM和16GB ROM的移动设备上.
4.2 勒索软件锁屏特征检测精度本实验是对静态特征分析阶段对勒索软件锁屏特征的检测进行测试.由于检测时利用了基于规则的检测方法对勒索软件的锁屏特征进行检测,所以本文设置了一组交叉实验对检测的误报、漏报情况进行评估.本实验选取550个具有锁屏特征的勒索软件和8 450个正常应用共9 000个应用组成数据集,并将其划分为10个大小相等的子集.之后随机选择一组包含正常应用和具有锁屏特征的勒索软件样本对本系统进行测试,另外9组作为训练样本.
1) 误报率:在这个实验中,本系统的误报率为1.4%.且全部是由于检测系统将正常软件分类为勒索软件而产生的误报.
根据对系统的分析,误报主要发生在锁屏特征检测过程中.这是由于勒索软件的恶意行为使用的函数在一些正常应用中也经常使用.
通过手动分析这些产生误报的应用,发现误报分为两类,第一类应用被识别为勒索软件因为他们通过调用setCancelable函数并传入false参数,创建了一个无法关闭的对话框,如果用户想关闭这个对话框,他必须点击对话框上的确定或者返回按钮.第二类应用是其包含锁屏策略的相关函数,但是这些函数并没有被调用.从静态分析的角度来看,存在较大的锁屏的风险.但是事实上,这些代码被开发人员屏蔽,不会发生锁屏行为.
从对勒索软件的分析来看,这种误报对于本系统是一个微不足道的问题.这是因为勒索软件会造成严重的后果,所以必须严格检测,通过系统检测结果,来辅助用户判断该应用是否为恶意.
2) 漏报:在测试实验中,系统标记833个样本为正常应用,这些应用都被正确的标记出来.为了进一步检测系统的健壮性,需要检测标记正常的数据集中是否存在潜在的勒索应用,即漏报.但是确定是否有漏报是一个具有挑战性的任务,因为手动分析这些应用会产生巨大的任务量.为了解决这个问题,首先对应用进行过滤,之后对过滤后的应用进行分析.
通过分析发现,如果一个应用要锁定Android设备的屏幕,它必须需要声明特殊的权限,例如,BIND_DEVICE_ADMIN、SYSTEM_ALERT_WINDOW等.因此,本实验通过过滤器对待进一步分析的应用进行筛选,通过分析样本的权限列表,判断是否是正常应用.通过过滤,剩下需要进一步分析判断的样本减少到了45个.通过进一步的手动分析,本系统在检测勒索软件锁屏特征的过程中没有任何漏报.
4.3 勒索软件加密特征检测有效性因为在勒索软件加密特征检测时,首先发现文件被加密,然后判断对文件的加密操作是否合法,那么系统从开始检测加密特征到检测完成的这段时间中,一定存在一些文件先被加密.所以为了评估动态行为实时监控方案及其关键技术的有效性,本实验需要评估当勒索软件加密特征检测完成时,有多少文件被加密,即评估用户的文件损失.
若想系统对勒索软件加密特征的检测有效,则需要在开始检查加密特征到检测完成的这段时间里,被勒索软件加密的文件要尽可能的少,即造成文件损失尽可能的小.如果文件损失超过了用户可以承受的范围,说明系统无法有效的对用户手机中的文件进行保护.
本文选取200个具有加密特征的勒索软件进行勒索软件加密特征检测有效性评估实验.本实验主要是评估从加密勒索软件开始执行到检测加密行为完成时,有多少文件损失.根据实验结果我们绘制了文件损失数量随时间的变化图,如图 5所示.
|
| 图 5 文件损失数量随时间的变化 Figure 5 File loss quantity changes over 10:33:26 |
同时,从表 4的耗时分析中可以知道,动态行为实时监控阶段检测应用时间消耗的平均值大约为12 s,在这个时间内文件损失数量为6~8个.这个文件损失对于用户来说是可接受的.
| s | ||
| 步骤 | 平均值 | |
| 静态特征分析 | 特征提取 | 3.07 |
| 基于规则检测 | 2.05 | |
| 动态行为监控 | 加密分析 | 4.05 |
| 布局分析 | 7.11 | |
系统可用性评估是从以下两个方面进行:第一,系统是否兼容不同的设备,在这个实验中,本文选择广泛使用的手机型号进行实验,比如,Nexus 4(N4), Nexus 5(N5), Galaxy S6, Galaxy S7, 和HTC One M8;第二,系统对应用检测时的时间消耗和内存消耗,在这个实验中,本文选择在4.1节中所提到的实验环境中对系统进行分析.
1) 兼容性分析:为了评估系统的兼容性和在不同设备上的不同表现,本实验将系统分别在上述的5款手机上运行,结果如图 6(a)所示.结果显示,系统在Nexus 4上分析时间最慢,平均时间在15 s;在Galaxy S7上分析时间最快,平均时间仅为9.8 s.
|
| 图 6 系统运行的性能 Figure 6 The performance of the system running |
2) 时间分析:系统检测勒索软件每一个阶段的时间消耗和总的时间消耗的平均值如表 4所示.从表 4中可以看出,在静态特征分析阶段,系统分析一个应用所花费的时间的平均值是5.63 s,这个阶段主要耗时是花费在对程序特征分析上.动态行为实时监控阶段对应用的分析时间消耗平均值为11.16 s,图 6(b)展示了系统对勒索软件加密特征的检出率与时间的关系图.从图中可以看出有85%的应用在12 s以内被检测完毕,这个阶段主要耗时花费在对程序的布局信息分析上.
为了更深入的分析,本文分析了APK文件的大小与检测应用所消耗时间的关系,如图 6(c)所示.从图 6(c)中可以发现随着APK文件的大小的增加,分析消耗的时间也在增加.这是因为系统通过分析中间码来提取特征的,而中间码依赖APK中classes.dex文件的大小.
同时,从图 6(c)中可以发现时间的增加与文件的大小不呈线性关系.这是因为大的APK文件不一定就是代码逻辑复杂,也有可能是含有大量的资源文件,但这些文件与我们分析无关.
3) 内存消耗:由于手机是一个资源受限的平台,而本系统是一个部署在Android平台上,并针对勒索软件进行检测的系统,所以本系统在检测勒索软件时消耗内存的大小也是一个非常重要的约束条件.
因此,本实验对检测系统在Android平台上进行勒索软件检测时的内存消耗与被检测应用大小的关系进行了探究,结果如图 6(d)所示.从图 6(d)中可以看出,在勒索软件检测的时所需要消耗的内存随应用大小的增大而增大,最大内存消耗为30 MB,只占总内存的1.5%左右,这对于一个Android设备是可以接受的.能取得这样的效果在于,我们在系统实现时采用了减小特征集,使用系统工具进行特征提取等方法对系统进行优化,控制了系统的内存消耗.
综上所述,本系统可以在消耗较少的时间和内存的情况下,检测出Android勒索软件,具有较强的实用性.
5 结论本文将勒索软件分为两类,一类是具有锁屏特征的勒索软件,这一类勒索软件包括只具有锁屏特征的勒索软件和同时具有锁屏和加密特征的勒索软件;一类是具有加密特征的勒索软件,这一类包括只具有加密特征的勒索软件.并针对这两类勒索软件提出了一种Android平台下的针对勒索软件的主动实时的检测方法,并对这种检测方法进行了实现.
本文实现的检测系统可以在用户失去对设备或文件的控制权之前发现勒索软件.该系统检测勒索软件分为两个阶段:静态特征分析阶段和动态行为实时监控阶段.第一阶段,当应用下载到设备上时,系统通过静态代码分析和基于规则的分类器来检测勒索软件锁屏特征.第二阶段,我们持续监视设备的敏感目录中的文件并提取特定的UI控件并加以分析,以检测勒索软件的加密行为是否存在异常.在对本系统的评估中,系统可以以较高的准确度和较低的误报率检测出具有锁屏特征的Android勒索软件;同时,本系统也可以在很小的文件损失下,检测出具有加密特征的勒索软件.最后,系统运行时间分析和内存分析证明本系统具有较少的时间消耗和内存消耗,可以直接应用在资源受限的移动设备上,是一种轻量级的检测系统,具有较高的实用性.
| [1] |
MICHAEL K. Mobile Ransomware Use Jumps, Blocking Access to Phones[EB/OL].[2016-06-30]. http://www.pcworld.com/article/3090049/security/mobile-ransomware-use-jumps-blocking-access-to-phones.html.
|
| [2] |
YANG T D, YANG Y, QIAN K, et al. Automated detection and analysis for android ransomware[C]//High Performance Computing and Communications (HPCC), 2015 IEEE 7th International Symposium on Cyberspace Safety and Security (CSS), 2015 IEEE 12th International Conferen on Embedded Software and Systems (ICESS), 2015 IEEE 17th International Conference on. New York:IEEE, 2015:1338-1343. DOI:10.1109/HPCC-CSS-ICESS.2015.39.
|
| [3] |
ANDRONIO N, ZANERO S, MAGGI F. HelDroid:dissecting and detecting mobile ransomware[C]//International Workshop on Recent Advances in Intrusion Detection. Berlin:Springer International Publishing, 2015:382-404. DOI:10.1007/978-3-319-26362-518.
|
| [4] |
APACHE. Opennlp[EB/OL].[2016-12-24]. https://opennlp.apache.org/.
|
| [5] |
MARTIN P. Snowball[EB/OL].[2016-12-24]. http://snowballstem.org/.
|
| [6] |
Google.The Stop-Words Project[EB/OL].[2016-12-24]. https://code.google.com/p/stop-words/.
|
| [7] |
GIBLER C, CRUSSELL J, ERICKSON J, et al. AndroidLeaks:automatically detecting potential privacy leaks in android applications on a large scale[C]//International Conference on Trust and Trustworthy Computing. Berlin:Springer, 2012:291-307. DOI:10.1007/978-3-642-30921-2_17.
|
| [8] |
ENCK W, GILBERT P, HAN S, et al. TaintDroid:an information-flow tracking system for realtime privacy monitoring on smartphones[J]. ACM Transactions on Computer Systems (TOCS), 2014, 32(2): 5. DOI:10.1145/2619091 |
| [9] |
SONG S, KIM B, LEE S. The effective ransomware prevention technique using process monitoring on android platform[J]. Mobile Information Systems 2016, 2016(1): 1-9. DOI:10.1155/2016/2946735 |
| [10] |
安天实验室. 勒索软件攻击安卓手机[J]. 中国信息安全, 2015(6): 12. Antiy Labs. Ransomware attacks android mobile phone[J]. China Information Security, 2015(6): 12. |
| [11] |
GREG M. CryptoLocker Partially Shuts down Pinal County, Ariz. Government Network[EB/OL].[2016-06-02]. https://www.scmagazine.com/cryptolocker-partially-shuts-down-pinal-county-ariz-government-network/article/528247/.
|
| [12] |
Kaspersky Lab's Global Research & Analysis Team. Behind the 'AndroidOS.Koler' Distribution Network[EB/OL].[2014-07-28]. https://securelist.com/blog/research/65189/behind-the-android-os-koler-distribution-network/.
|
| [13] |
JEREMY K. Android Ransomware Changes a Device's PIN Code[EB/OL].[2015-09-10]. http://www.cio.com/article/2983135/android-ransomware-changes-a-devices-pin-code.html.
|
| [14] |
PAUL D. CryptoLocker Wannabe "Simplelocker" Scrambles Your Files, Holds Your Android to Ransom[EB/OL].[2014-06-06]. https://nakedsecurity.sophos.com/2014/06/06/cryptolocker-wannabe-simplelocker-android/.
|
| [15] |
NADIA K. New Android Ransomware Variant of Simplocker Infects Tens of Thousands of Devices[EB/OL].[2015-09-02]. https://community.norton.com/en/blogs/security-covered-norton/new-android-ransomware-variant-simplocker-infects-tens-thousands.
|
| [16] |
GOOGLE.Android API[EB/OL].[2016-12-24]. https://developer.android.com/guide/index.html.
|
| [17] |
360移动安全团队. Android勒索软件研究报告[EB/OL]. [2016-12-24]. http://zt.360.cn/1101061855.php?dtid=1101061451 & did=1101724388. 360 Mobile Security Team. Android Ransomware Study[EB/OL].[2016-12-24]. http://zt.360.cn/1101061855.php?dtid=1101061451 & did=1101724388(Ch). |
| [18] |
HO T K. Random decision forests[C]//Document Analysis and Recognition, 1995. Proceedings of the Third International Conference on. New York:IEEE, 1995:278-282. DOI:10.1109/ICDAR.1995.598994.
|
| [19] |
QUINLAN J R. Simplifying decision trees[J]. International Journal of Man-machine Studies, 1987, 27(3): 221-234. DOI:10.1016/S0020-7373(87)80053-6 |
| [20] |
SCAIFE N, CARTER H, TRAYNOR P, et al. Cryptolock (and drop it):Stopping ransomware attacks on user data[C]//Distributed Computing Systems (ICDCS), 2016 IEEE 36th International Conference on. New York:IEEE, 2016:303-312.DOI:10.1109/ICDCS.2016.46.
|
2017, Vol. 63

