基于程序切片的android恶意代码检测_第1页
基于程序切片的android恶意代码检测_第2页
基于程序切片的android恶意代码检测_第3页
基于程序切片的android恶意代码检测_第4页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于程序切片的android恶意代码检测

android是目前智能手机操作系统之一。这一系统的开放性是系统成功的原因之一。由于它的开放性以及缺乏严格的审查制度,使得Android平台的恶意软件越来越多本文在程序切片的基础上,将静态分析方法与动态分析方法结合,实现对Android应用程序的检测1静态切片分析静态切片本质是一种数据流分析,通过分析找到一组程序语句,这组语句直接或者间接的影响目标值。向后切片是一种切片的实现方法,切片包含了直接或者间接影响目标值的程序语句,本文通过向后切片完成对目标的分析。使用静态切片的目的有:(1)对目标程序的Smali代码进行分析,为敏感函数及其参数进行向后程序切片,完成数据流分析,如分析是否有向固定号码发送短信的行为。(2)为Smali代码中使用混淆或者反射机制的部分生成程序切片,通过动态运行提取出的切片来获取真实值,如实际执行的函数名等。1.1静态特征提取为了对目标函数及其参数进行向后切片,需要定义切片准则C,记做<m,c,p,i,t>,其中,m是函数名,c是函数所在类的完整名称,p是参数列表,i是参数的索引,如c=android/telephony/SmsManager;m=sendTextMess;p=Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent,切片准则中的函数主要以Android中的敏感API为主,部分切片准则见表1;t为Smali代码中的操作码类型,其中大部分为invoke类型的操作码。这些切片准则是分析目标,以切片准则为基本生成程序切片,同时这些切片准则组成用于查找的预定义检索集。定义记录点为<s,r>,其中,s代表一条程序语句,r为s中的寄存器的名称,记录点最终组成可疑代码区域。根据切片准则中的类型t,检索Smali代码中的对应操作码找到目标语句,之后通过索引i找到对应参数所使用的寄存器,然后向后搜索Smali代码中的所有操作码,找到对该寄存器操作的语句,将涉及到的寄存器继续向前搜索迭代这一过程,通过这一过程,可以获取到所有使用或者修改该寄存器的程序语句。向后切片算法详细地描述了这一过程。队列Q用于存放尚未回溯的寄存器,它存储了寄存器的名称和其所在语句的行号。首先根据切片准则,找到参数使用的寄存器r,用该寄存器初始化队列Q,然后向后搜索操作码,找到操作寄存器r的语句,将该语句中涉及到的寄存器入队列,如被回溯的寄存器v0通过move操作码被寄存器v1重写,则寄存器v1需要入队列进行回溯。这样所有操作目标寄存器的操作码以及它们所涉及到的寄存器都被放入队列中进行回溯。通过这一过程生成记录并最终生成程序切片。如当切片准则为sendTextMessage()以及该方法的第1个参数电话号码时,当检索到寄存器的值为常量时停止,从而可以检测到发送短信到固定号码的行为。1.2静态片段提取在诸如Obad或者FakeInstaller2静态切片执行动态分析方法在代码执行覆盖率上往往不够理想,同时传统的静态切片是根据测点来生成某一种执行环境下的可执行代码切片,无法模拟出多种执行环境,从而导致在执行的过程中无法获取真实的值。如图2中的list1是来自于Pincer恶意软件中的部分代码,在第26行会发送短信到付费号码,接收方的电话号码存储在变量number中,然后根据不同的国家号码生成不同的电话号码,同时代码中还有对模拟器的检查,当在模拟器环境中运行时会隐藏恶意行为。当测点为<26,number>时,loginfo和第5行的检查与测点不相关,所以被移走,生成的切片见图2中的list2。当在模拟器中执行list2中的切片时,由于第10行的模拟器检查失败,导致number的值为null,因为该静态切片是在当前的执行环境下构建出一个可以最小化描述原始程序行为的切片,在模拟器执行环境下这个切片是正确的,它使得number的值为null,但是对于分析却毫无意义。为了能够模拟出所有的执行环境和执行逻辑,获取正确的值,需要对影响测点值的条件做特殊处理,扩展所有可能的执行路径,因为每一种执行路径会潜在生成一个真实值,为此用布尔表达式来替换所有与测点相关的条件语句,通过Bool值的组合,组合出多种执行路径。如list3,共有4个Bool表达式,这样就可以组合出16种执行路径,这样就模拟出所有的执行路径,从而得到变量number的所有值。最终每个APK所生成的切片会构建出一个新的、裁剪过的APK,其中每一个被提取出的切片会在该APK中生成一个新的方法,为了能够执行切片,该APK会包含一个专门用于执行这些方法的Activity,该Activity会依次调用生成的方法,同时该Activity会将运行时的值写入SQLite数据库或者SDCard中。由于这些切片是直接执行,并不需要在意它们在程序中的原始位置,也不需要与用户交互。例如,当代码的执行需要一个按钮点击事件来触发时,这时就需要模拟这样的用户交互或者一个自动化的工具来模拟按钮点击事件。然而由于直接执行切片代码,并不需要考虑上述问题。同时,被裁剪的APK不包含任何AndroidGUI组件,它包含了一些与原程序相同的资源,这样当切片从外部加载资源的时候,就可以找到这些资源,确保程序的正常运行。由于需要扩展所有分支来获取所有可能的目标值,这意味着用于执行的Activity必须要设置所有可能的Bool值组合,然后重新运行切片。通常情况下,当条件数量是n时,需要执行23静态切片实验本文中用于实验的程序主要以java和python编写,其中静态切片提取部分使用python编写,用于执行静态切片的Activity以java编写。在实验的过程中也使用了一些第三方的程序,如用于将AndroidAPK文件转换为Smali代码的Apktool;Dex-lib23.1实验环境实验中,APK样本来自于GooglePlay3.2动态运行切片分析对APK文件样本进行静态切片分析,其中所有的测点数量为固定的30个,且主要为敏感的AndroidAPI。从图3中可以得出所有的APK静态切片分析可以在20s内完成,且多数的处理时间分布在6-12s内。为了能够对动态运行切片进行性能评测,采用的实验样本主要来自于VirusShare的282个样本,200个来自于Genome项目的App,这些app大部分含有短信木马以及200个来自MobileSandBox的恶意软件样本。其中设置的测点为电话号码和相应的短信内容,通过使用该方法可以在平均1.5-2分钟内提取出接收方电话号码和部分短信内容。3.3系统服务的使用情况通过静态切片分析,发现大部分的应用程序会读取IMEI和IMSI,其中有53%的恶意软件会调用API获取上述信息,而在GooglePlay中只有24%;对AndroidAPIexec以及其参数进行分析,该函数用于在shell中执行命令,发现有恶意软件会使用该函数来执行“su”完成应用程序安装、重新挂载文件系统以及检索正在运行的进程等;发现有应用程序会向固定号码发送短信和一些固定的短信内容,其中54%的恶意软件有这样的行为,而GooglePlay中只有3.4%;通过分析还总结了应用程序对系统服务的使用情况详细见表2,表项的内容为Context.getSystemService这个函数的参数,恶意软件使用最多的服务是用于获取电话状态的TelephonyManager、用于获取连接状态的ConnectivityManager和用于获取地理位置信息的LocationManager;Android系统通过Intents来完成进程间的通信,分析发现一些恶意软件会使用SMS_SENT和SMS_DELIVERED这样的Intents,而在GooglePlay中会使用一些正常的系统Intents,如.conn.CONNECTIVITY_CHANGE。对3款具有代表性的恶意软件进行静态切片提取、动态运行切片,其中测点主要涉及到URI、短信号码、短信内容和反射函数,详细见表3~表5,这3款恶意软件会泄露隐私数据,它们大量的使用反射来隐藏对敏感API的调用,结果表明该方法可以有效地提取出运行时的值。4静态切片分析Android是当前最为流行的智能手机操作系统之一,其开放性是该系统成功的原因之一。由于它的开放性以及缺乏严格的审查制度,使得Android平台的恶意软件越来越多。本文在程序切片的基础上,使用了静态切片分析和动态运行切片对Android应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论