CN108133139A - 一种基于多运行环境行为比对的安卓恶意应用检测*** - Google Patents
一种基于多运行环境行为比对的安卓恶意应用检测*** Download PDFInfo
- Publication number
- CN108133139A CN108133139A CN201711217805.1A CN201711217805A CN108133139A CN 108133139 A CN108133139 A CN 108133139A CN 201711217805 A CN201711217805 A CN 201711217805A CN 108133139 A CN108133139 A CN 108133139A
- Authority
- CN
- China
- Prior art keywords
- behavior
- application program
- simulator
- application
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种基于多运行环境行为比对的安卓恶意应用检测***,包括:信息提取模块,对被检测的APK安装文件进行反编译,为后续日志分析提供数据支持;动态分析模块,使用沙盒技术对Android应用程序进行动态分析,并记录程序运行过程中执行的行为;环境检测对抗模块,实时检测程序运行过程中的环境检测行为,并针对不同层次的检测行为进行对抗,将应用程序中运行环境检测的结果修改为伪装的运行环境特征;行为记录分析模块,在某一待测应用程序多次重复运行全部结束后对所有的行为日志进行统一处理与分析;***运行调度模块,在***运行过程中控制整个运行流程。本发明可捕捉到应用程序的行为差异情况,并检测是否有恶意行为,适用于识别环境敏感恶意应用程序。
Description
技术领域
本发明属于网络安全技术领域,特别涉及一种基于多运行环境行为比对的安卓恶意应用检测***。
背景技术
当今互联网快速发展已经具有相当的规模。近些年随着智能移动终端设备的兴起,移动互联网也随之得到了快速发展,智能手机与平板电脑正在人们的生活中大量普及。随着智能移动终端操作***的逐渐普及,Android***平台凭借其操作的方便易用、优秀的可改造与扩展性以及***开源等诸多优点,受到了众多移动设备研发与制造厂商的欢迎,同时也逐渐拥有了一批庞大的***爱好者与用户群体。
也正是因为Android***极高的用户占有率与其特有的开源性特点,Android***成为了很多恶意软件制作者及黑色产业从事者的攻击目标,大量针对Android平台的恶意代码也随之出现。因此,研究对恶意代码实现快速而有效检测的成熟技术,不但能够对广大用户隐私与财产安全实施保护,减少用户的利益损失,而且也能够在很大程度上保护Android应用开发者的利益。目前对Android恶意代码进行检测的技术主要可以分为静态和动态两类。
传统的静态检测方法大多是针对在恶意代码中大量存在的重打包现象和针对恶意代码中的权限滥用现象进行分析,需要对Android应用程序的APK安装包进行分析,反编译其中可执行文件并分析其他资源文件来获取基础数据,然后进行进一步的挖掘和分类从而判定应用程序的性质。但是随着加密技术和混淆技术的不断发展,静态分析的方法很难获取到有效的信息细节。
现有的恶意代码动态检测技术主要是通过在各种模拟环境中真正地运行待检测的应用程序,在监控应用程序表现出的真实动态特征信息的基础上对恶意代码进行检测。目前的动态检测***广泛使用的模拟运行环境主要基于QEMU、Virtual Box、VMWare等虚拟化技术,而无论采用哪种技术,其模拟运行环境与真实的物理设备始终存在一定的差别,而应用程序在运行的过程中可以从运行环境中获取到这些能够表明运行环境的信息。因此如果一个恶意的应用程序对运行环境十分敏感,发现其当前运行于一个模拟环境中,而且这种模拟环境有可能是一种动态检测***的组成部分,那么该恶意应用就不会直接执行它的敏感行为,从而达到逃避检测的目的。这种检测模拟运行环境并改变运行状态的行为被称为反模拟器行为,这种情况是限制动态检测方法检测效果的一个重要因素。因此,目前需要一种能够应对应用程序的反模拟器行为,有效检测对环境敏感恶意应用程序的方法,来应对动态检测技术在这些方面所存在的不足。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种基于多运行环境行为比对的安卓恶意应用检测***,它依托动态分析隔离沙箱技术,通过检测应用程序运行过程中的运行环境检测行为,并采取针对性的对抗措施,将实际的运行环境伪装为多种不同的运行环境,把应用程序置于在这些不同运行环境中,采用应用行为动态捕捉方法,对应用在不同运行环境中的具体行为进行记录,分析对比应用程序表现行为,比对其在不同环境下的运行行为差异性,从而捕捉到应用程序的行为差异情况,并检测是否有恶意行为,适用于识别现有检测技术无法有效检测的环境敏感恶意应用程序。
为了实现上述目的,本发明采用的技术方案是:
一种基于多运行环境行为比对的安卓恶意应用检测***,包括:
信息提取模块,对被检测的APK安装文件进行反编译,分析反编译后生成的smali文件中各个类的相关信息,为后续的日志分析提供数据支持;
动态分析模块,使用沙盒技术对Android应用程序进行动态分析,包括基于安卓原生***修改的具有***调用记录功能的***运行镜像和经过定制的模拟器运行文件***,组合成模拟器沙箱运行环境,并对应用程序运行过程中所执行的一系列行为进行记录,由对被检测应用程序运行时所表现行为进行记录的子模块组成;
环境检测对抗模块,实时检测应用程序运行过程中的环境检测行为,并针对不同层次的检测行为进行对抗,将应用程序中运行环境检测的结果修改为伪装的运行环境特征,包括分别对应用层、安卓***层、Linux***层和模拟器体系结构层特征进行动态修改的动态修改子模块;
行为记录分析模块,在某一待测应用程序多次重复运行全部结束后对所有的行为日志进行统一处理与分析,包括应用行为日志预处理子模块,行为序列提取子模块,行为分析对比子模块和报告生成子模块;
***运行调度模块,在***运行过程中控制整个运行流程,包括模拟器运行调度子模块、待分析应用管理子模块、***事件模拟子模块以及用户接口事件触发子模块。
所述***运行镜像为在Android***源码基础上进行二次修改后编译得到的可执行文件,修改内容为对应用动态分析模块中所述的6类行为中每个具体***调用API的执行流程,目的在于使得应用程序执行过程时,动态分析模块能够记录到应用程序的各种行为。
所述经过定制的模拟器运行文件***为在初始配置的Android模拟器文件***镜像文件中中增添了通讯录信息、通话记录信息、短信信息、照片信息等用户使用行为数据后的文件***镜像文件。
所述动态分析模块包括网络通信操作记录子模块、文件操作记录子模块、加解密操作记录子模块、***Shell操作记录子模块、隐私行为获取记录子模块、敏感操作记录子模块等。
与现有技术相比,本发明的有益效果是:
1、采用动态分析方法,有效避免了静态分析难以解决的应用加壳、混淆等对抗检测的方法。
2、采用在多种运行环境中重复运行应用程序,分析比对其行为表现的方法,能够准确检测出应用程序的反模拟器行为,并且判断其是否存在隐藏恶意行为,标明其是否为恶意应用程序。
3、采用简单、高效的数据分析算法,能够实时记录应用真实行为,高效处理大量行为数据。
4、采集的应用行为数据具有可靠性和准确性,且不需要获取待检测的应用程序任何额外的其他信息。
5、动态生成的运行环境可灵活定制其各种环境特征,能够方便的对整个***进行更新升级和拓展。
6、可以作为现有各种安卓应用分析平台的一种拓展,增强安卓恶意应用分析平台整体的分析检测能力。
附图说明
图1为本发明***整体运行流程图。
图2为本发明动态分析模块中各子模块结构图。
图3为本发明***运行调度模块流程图。
图4为本发明动态分析模块流程图。
具体实施方式
为了使本发明的目的、技术方案以及优点更加清楚明白,以下结合附图及示例性实施例,对本发明进行进一步详细说明。应当理解,此处所描述的示例性实施例仅用以解释本发明,并不用于限定本发明的适用范围。
首先,本发明的基于行为比对的安卓恶意应用检测***整体运行流程如图1所示。其中画出的4个主要模块分别为信息提取模块、动态分析模块、环境检测对抗模块和行为记录分析模块,***运行调度模块在该流程图中未有画出。***运行调度模块负责在***运行过程中控制整个运行流程,将同一待检测应用程序重复运行多次:首先将动态分析模块中的模拟器沙箱运行环境恢复为预设的初始状态;然后安装启动待检测应用程序,在应用程序运行时,由环境检测对抗模块分别对应用层、安卓***层、Linux***层和模拟器体系结构层的环境特征进行伪装对抗,同时由动态分析模块会将应用程序运行时的***调用行为记录下来,保存在一系列的行为日志文件中;在同一应用程序多次运行全部结束后,行为记录分析模块将会对该应用产生的一系列运行日志进行处理分析,并计算相互之间的一致性,根据计算得到的一致性矩阵判断该应用是否存在特定运行环境中隐藏的恶意行为,标明其恶意性,并输出检测报告。
各模块详细功能内容如下:
1、信息提取模块
由于后续的行为比对模块中需要获取应用程序中所有类文件的信息,所以首先对原始的APK安装文件进行反编译,分析反编译后的smali文件中各个类的信息,为后续的行为日志分析做准备。
在每个应用程序被运行在动态分析环境中之前,使用安卓APK安装文件反编译工具apktool将该APK文件反编译,获得一系列的smali格式文件,通过扫描反编译得到的smali文件提取其中所有源代码中类文件的信息,并保存在数据库中,待后续的行为比对模块使用。
2、动态分析模块
本***的动态分析模块使用沙盒技术对Android应用程序进行动态分析,该模块主体为基于安卓原生***修改的具有***调用记录功能的***运行镜像和经过定制的模拟器运行文件***二者组合成的模拟器沙箱运行环境,具体运行流程如图4所示。
该模块中应用的***运行镜像为在Android***源码基础上进行二次修改后编译得到的可执行文件,修改内容为对动态分析模块中所述的6类行为中每个具体***调用API的执行流程,目的在于使得应用程序执行过程时,动态分析模块能够记录到应用程序的各种行为。
该模块中应用的经过定制的模拟器运行文件***为在初始配置的Android模拟器文件***镜像文件中中增添了通讯录信息、通话记录信息、短信信息、照片信息等用户使用行为数据后的文件***镜像文件。
主要流程如下:
步骤1:启动模拟器,等待模拟器启动完毕后解锁屏幕。
步骤2:如果当前分析状态下bugNum小于2则继续从正在分析的应用程序列表或者待分析队列中获取APK文件。
步骤3:设置模拟器状态为busy,安装应用程序,打开应用程序,将应用程序在前后台间进行切换,调用模拟***事件操作,关闭并卸载应用程序。如果这整个过程中出现任何错误,则直接将bugNum加1,进入下一步骤。
步骤4:取消模拟器busy状态后,使用telnet命令优雅的关闭模拟器,如果失败,则使用kill命令直接关闭模拟器进程。
其中,只有在模拟器完全启动完毕后才能够对其进行包括安装应用程序等各项操作。而简单判断***内自动设定的sys.boot_completed***属性是否为1不足以准确判定模拟器启动完毕的。因此,在发现sys.boot_completed***属性已经为1之后,还需要判断目前模拟器屏幕是否还仍然为全黑,如果仍然黑屏说明还没有启动完全;当模拟器屏幕出现画面之后还需要判断***中进程数目是否还在增加,当进程数目在一段时间内都不再增加后则表明模拟器完全启动完成。
恶意应用激活其恶意行为大多是通过在***中注册接收特定***事件的广播接收器来实现的,而且它们所利用的***事件大多属于能够反映***运行状态的几类事件,具有一定的规律性,比如***启动完成广播、用户交互行为广播、WIFI网络状态变化广播、SIM卡网络状态变化广播等。因此在模拟器完全启动,向其中安装被检测的应用程序并设定运行环境特征之后,就需要启动应用程序,并输入一系列前述的***事件来触发应用程序的响应行为。
而且为了保证用一个应用程序在几次不同的运行过程中输入信息完全相同,需要记录第一次发送***事件序列的顺序以及间隔时间,后续运行时按照这个记录在相同的时间点发送相同的***事件。除此之外,恶意应用程序在接收到***事件之后,可能会启动Service组件在后台隐蔽的进行运行环境检测以及敏感行为执行,也可能将应用程序中的某个Activity组件弹到前台,通过钓鱼界面诱使用户进行操作,从而获取其他的权限或用户隐私信息。所以需要使用UI(User Interface)触发技术来对应用程序的用户界面进行操作,这部分用户界面操作有***运行调度模块进行处理。
同时,该模块还负责将应用程序运行过程中所执行的一系列行为进行记录,主要记录功能包括如下6个方面,如图2所示:
(1)网络通信行为记录:包括TCP通信记录、UDP通信记录、HTTP通信记录、DNS通信记录和网络通信流量记录。
(2)文件操作行为记录:包括文件操作记录和sqlite数据库操作记录。
(3)加解密操作行为记录:包括加密操作记录和解密操作记录。
(4)***shell操作行为记录:包括提权命令、mount命令、chown命令、chmod命令记录。
(5)隐私信息获取行为记录:包括获取***信息行为记录、获取phone/call/email信息行为记录、获取browser信息行为记录和获取位置信息行为记录。
(6)敏感操作行为记录:包括动态加载行为记录、Android组件操作行为记录和敏感操作行为记录。
动态分析模块会在待检测的应用程序运行过程中对以上所有行为进行监控与记录,并保存在日志文件中,在该待测应用程序的一次运行结束后从模拟环境中提取出来,保存在待分析的日志文件目录中,等待行为记录分析模块的处理。
所有的监控信息输出在Android***的日志***中,通过其自带的日志工具可以将***日志按照标签过滤提取,并记录在磁盘文件中。但是如果对所有被监控***API的调用情况都进行记录,那么***应用执行的大量行为也都需要经过额外的磁盘记录操作,会导致***运行的效率大大降低,严重影响动态分析的执行速度。因此被监控的API被调用时会判断调用者的进程号是否等于被监控应用程序的进程号,如果相等才会进行真正记录的磁盘操作,否则不对其进行记录,这样可以将对***运行速度的影响降到最低的程度。
由于安卓应用程序经常存在多线程执行的情况,因此本模块使用了一种适应多进程应用程序执行特点的行为记录生成技术和行为记录比较技术来应对上述问题。在记录应用程序运行过程中所调用的***API时会将这个API调用者所在的进程号以及API调用者所在线程的调用栈一同记录下来,最终保存在磁盘文件中。应用程序在模拟器中运行结束后,动态分析模块会将该行为记录文件从模拟器中提取出来,并对其中的每条记录按照其运行调用者的类名称和进程编号进行分类汇总,按照记录的时间戳进行排序,最终形成一个应用程序运行过程中每个进程各自的Android***API调用序列。
3、环境检测对抗模块
该模块会实时检测应用程序运行过程中的环境检测行为,并针对不同层次的检测行为进行对抗,将应用程序中运行环境检测的结果修改为伪装的运行环境特征。按照应用程序检测模拟运行环境方法的不同,这些能够表明运行环境类别的特征分别属于4个不同的层次:
(1)应用层
应用层的反模拟器方法主要是通过检测该设备中是否存在联系人记录,通话记录,短信记录等使用痕迹特征来判断该运行环境为模拟环境还是真实环境。
(2)安卓***层
Android***层的反模拟器方法主要是通过检测设备状态信息(包括IMSI、ICCID、IMEI、电话号码等)、设备硬件信息(包括电池电量信息、WiFi模块Mac地址信息、GPS定位信息等)、***属性信息(包括调用安卓设备***属性获取方法、读取build.prop文件等)等特征来判断运行环境为模拟环境还是真实环境
(3)Linux***层
Linux***层的反模拟器方法主要是通过检测设备驱动信息、设备特征文件、getprop命令等来判断运行环境为模拟环境还是真实环境。
(4)模拟器体系结构层
模拟器体系结构层的反模拟器方法主要是检测设备CPU信息特征文件、设备特征进程等方法来判断运行环境为模拟环境还是真实环境。
除了以上列出的4类中所包含方法,环境检测对抗模块还可以根据需要对其他的特征进行修改,生成新的运行环境,从而达到欺骗待检测应用程序的目的。
对于具有以上特征运行环境的动态伪装,可以通过修改Android***源码来实现,也可以通过其他方法来实现。修改Android***源码的实现,主要使用以下三种方法来对各个特征进行动态定制。
首先,属于***属性的环境特征会在模拟器启动后使用特制的***属性修改工具修改***内核中的属性值,同时增加一些自定义属性用来控制对于Android***API特征和文件特征的伪装。之所以需要对该工具进行修改是因为有一部分只读属性在***默认情况下是不可以修改的,因此需要通过修改内存的方法实现修改。***属性中还有一类特殊情况就是Android***中的Build静态变量,如上文提到过的Build.DEVICE属性等。这类属性属于修饰为static final的Java对象,无法直接通过修改内存改变其数值,需要通过进程注入的方式向zygote初始化进程注入代码,通过反射方式修改其修饰符,然后修改其数值。由于Android***中zygote进程是所有其他应用程序的父进程,所以对其进行修改之后,后续启动的应用程序中Build静态变量的数值都与之相同。
其次,对于通过调用Android***API获取其返回值作为判断运行环境信息的特征,应用程序调用该API时,Android框架会从***属性中获取之前添加的与该API对应的自定义属性值,并将该自定义属性的值作为API调用的返回值返回给应用程序,而不是返回其真实值。由于Android***运行过程中许多***应用程序也会通过调用API获取部分***属性的值,而如果其获得的返回值与实际情况不相符,则有可能会导致***运行不稳定甚至直接导致***崩溃。所以在这些Android框架中这些API运行时会判断当前调用来自哪个进程,只有来自被检测应用程序所在进程的调用才会被返回伪装后的值。
再次,对于属于文件特征的检测方法,应用程序会检测运行环境中特征文件是否存在或者文件中是否存在特征字符串的方法来判断运行环境。因此在打开文件时Android框架会判断调用该打开文件操作的进程是否为被检测的应用程序所在的进程,然后再判断要打开的文件是否为能够体现运行环境的特征文件,如果两个条件都符合的话则将这个文件操作重定向到预先准备好的伪装文件,从而实现对运行环境文件特征的伪装。
4、行为记录分析模块
该模块在某一待测应用程序多次重复运行全部结束后会对所有的行为日志进行统一处理与分析,包括应用行为日志预处理子模块,行为序列提取子模块,行为分析对比子模块和报告生成子模块四个子模块。
行为日志预处理子模块对原始的行为日志文件进行整理,提取出所有该日志中出现的***调用,并整理为一个列表,每个***调用对应一个唯一的整数编号;然后行为序列提取子模块会根据上一步生成的***调用与编号的对应关系转换为将每一个单独的行为日志行为序列;行为分析对比子模块采用比对算法对各个行为序列进行比较,计算两两之间的相似度,生成一致性矩阵,同时统计各个行为记录中API调用的数目;报告生成子模块根据一致性矩阵的特征判断该应用是否存在隐藏的恶意行为,标明其恶意性,并输出检测报告。
其中行为分析比对子模块在对用一个应用程序在不同运行环境中所得到的两个行为记录进行比较时,首先按照两个行为记录中的线程编号分别计算两个行为记录中对应线程间的***API调用序列相似度。为了准确反映两个调用序列之间的相似度,计算二者之间的编辑距离来衡量二者之间相似度,得到一个介于0到1之间的实数作为相似度的度量,相似度越大表示二者越相似。在计算得到每个线程对之间的相似度之后,按照各个线程中***API调用序列中API调用记录的数目在整个行为记录中API调用记录总数中所占的比例将这些单独的相似度加总为一个总体的相似度,作为应用程序两个行为记录相似度的最终结果。将所有行为记录之间的相似度比较完成之后就组成了该应用程序运行时行为的一致性矩阵。除了统计应用程序行为记录之间的相似度之外,该子模块还会统计两个对应线程之间具体调用***API函数种类和数目上的差别,得到行为分类统计结果。如果两个行为记录中某一对对应线程中的行为记录不是完全相同,而且其中一个线程中调用了敏感API函数,另外一个线程则没有调用该API函数,则表明该应用程序根据其收集到的运行环境信息对这部分敏感行为进行了隐藏。
报告生成子模块综合一个应用程序在几次动态运行后输出行为记录间的一致性矩阵,使用判决算法判该应用程序是否存在行为差异。如果在某一类伪装后运行环境中的行为记录与原始模拟运行环境中的行为记录之间的比较结果小于阈值,则证明该应用程序存在行为差异,且其使用的检测模拟运行环境方法为属于该类别,从而判断出应用程序所使用的反模拟器行为所属类别。另外,判决算法还会根据行为分类统计结果的差别分析其是否在某些运行环境中隐藏了敏感行为,如果存在隐藏的敏感行为则判定这个应用程序为使用了反模拟器方法的恶意应用程序应用程序。最后,该子模块将所有的分析结果汇总为分析检测报告并输出给用户。
6、***运行调度模块
该模块控制整个***的运行过程,包括模拟器运行调度子模块,待分析应用管理子模块,***事件模拟子模块以及用户接口事件触发子模块4个子模块。
模拟器运行调度子模块在***初始化时会根据输入的启动模拟器数量启动模拟器,然后启动各个模拟器的控制线程,如图3所示。模拟器控制线程提供对模拟器的一系列控制操作:运行停止、应用获取、应用安装运行、应用停止卸载等。
待分析应用管理子模块监控待分析应用保存目录,维护一个待分析应用队列,一个正在分析应用队列和一个分析完成应用队列。每次模拟器运行调度子模块从待分析应用队列中取到一个待分析应用进行分析,并将其置于正在分析应用队列,待分析完成后置于分析完成应用队列。
***事件模拟子模块负责在正在检测的应用程序运行过程模拟一些真实设备使用过程中会发生的***事件,以触发待检测应用程序对这些***时间可能的响应行为,包括模拟boot complete事件、锁屏与解锁操作事件、接收与发送短信、拨打与接收电话、位置变化等。
用户接口事件触发子模块模拟用户操作应用程序,以触发应用程序针对这些用户操作所产生的响应行为,同时该子模块还会自动启动应用程序中所存在的各种组件,包括暴露组件和非暴露组件。用户接***互模拟时按照深度优先算法遍历UI Tree。在遍历UITree中的UI控件时,用户接***互模拟功能根据UI控件类型的不同,触发不同的UI组件事件,实现用户操作的模拟。UI Tree遍历采用深度优先遍历。遍历时,先启动应用程序,接着遍历所有的UI界面。每遍历一个UI界面时,需要先获得此界面的所有有效UI控件,然后遍历所获得的所有的UI控件,并根据UI控件类型的不同,触发不同的UI组件事件。如果触发某控件的UI组件事件后,UI界面发生了变化,则把原UI界面的信息存入栈中,然后遍历新的UI界面,遍历完成之后,再回到原UI界面继续遍历其他的控件。
当一个应用程序完成在检测***中的全部重复运行过程之后,结束阶段输出检测报告。
由于存在明确的反模拟器行为的应用程序中恶意应用占了相当大的比例,而且结合对应用程序敏感行为的记录分析与比对,本发明中的安卓恶意应用检测***的输出结果可以判定该应用程序是否为存在反模拟器行为的恶意应用程序,即该应用程序会在特定运行环境中隐藏其敏感的恶意行为。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
综上,本发明提供的一种基于多运行环境行为比对的安卓恶意应用检测***,通过对APK程序在不同运行环境中所表现出的行为进行分析,检测其恶意行为,从而进一步确认是否为恶意应用。
Claims (10)
1.一种基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,包括:
信息提取模块,对被检测的APK安装文件进行反编译,分析反编译后生成的smali文件中各个类的相关信息,为后续的日志分析提供数据支持;
动态分析模块,使用沙盒技术对Android应用程序进行动态分析,包括基于安卓原生***修改的具有***调用记录功能的***运行镜像和经过定制的模拟器运行文件***,组合成模拟器沙箱运行环境,在应用程序运行过程中对其所执行的一系列行为进行记录,由对被检测应用程序运行时所表现行为进行记录的子模块组成;环境检测对抗模块,实时检测应用程序运行过程中的环境检测行为,并针对不同层次的检测行为进行对抗,将应用程序中运行环境检测的结果修改为伪装的运行环境特征,包括分别对应用层、安卓***层、Linux***层和模拟器体系结构层特征进行动态修改的动态修改子模块;
行为记录分析模块,在某一待测应用程序多次重复运行全部结束后对所有的行为日志进行统一处理与分析,包括应用行为日志预处理子模块,行为序列提取子模块,行为分析对比子模块和报告生成子模块;
***运行调度模块,在***运行过程中控制整个运行流程,包括模拟器运行调度子模块、待分析应用管理子模块、***事件模拟子模块以及用户接口事件触发子模块。
2.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,所述动态分析模块工作流程如下:
步骤1:启动模拟器,等待模拟器启动完毕后解锁屏幕;
步骤2:如果当前分析状态下bugNum小于2则继续从正在分析的应用程序列表或者待分析队列中获取APK文件;
步骤3:设置模拟器状态为busy,安装应用程序,打开应用程序,将应用程序在前后台间进行切换,调用模拟***事件操作,关闭并卸载应用程序,如果这整个过程中出现任何错误,则直接将bugNum加1,进入下一步骤;
步骤4:取消模拟器busy状态后,使用telnet命令关闭模拟器,如果失败,则使用kill命令直接关闭模拟器进程。
3.根据权利要求2所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,在发现sys.boot_completed***属性已经为1之后,还判断目前模拟器屏幕是否还仍然为全黑,如果仍然黑屏说明模拟器还没有启动完全;当模拟器屏幕出现画面之后还需要判断***中进程数目是否还在增加,当进程数目在一段时间内都不再增加后则表明模拟器完全启动完成;在模拟器完全启动,向其中安装被检测的应用程序并设定运行环境特征之后,启动应用程序,输入一系列***事件来触发应用程序的响应行为,并记录第一次发送***事件序列的顺序以及间隔时间,后续运行时按照这个记录在相同的时间点发送相同的***事件。
4.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,所述***运行镜像为在Android***源码基础上进行二次修改后编译得到的可执行文件,修改内容为对动态分析模块中所述的6类行为中每个具体***调用API的执行流程,目的在于使得应用程序执行过程时,动态分析模块能够记录到应用程序的各种行为。
所述经过定制的模拟器运行文件***为在初始配置的Android模拟器文件***镜像文件中中增添了通讯录信息、通话记录信息、短信信息、照片信息等用户使用行为数据后的文件***镜像文件。
5.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,所述环境检测对抗模块中,按照应用程序检测模拟运行环境方法的不同,能够表明运行环境类别的特征分别如下:
(1)应用层
通过检测该设备中是否存在使用痕迹特征来判断该运行环境为模拟环境还是真实环境;
(2)安卓***层
通过检测设备状态信息、设备硬件信息、***属性信息来判断运行环境为模拟环境还是真实环境;
(3)Linux***层
通过检测设备驱动信息、设备特征文件、getprop命令来判断运行环境为模拟环境还是真实环境;
(4)模拟器体系结构层
通过检测设备CPU信息特征文件、设备特征进程来判断运行环境为模拟环境还是真实环境;
除了以上列出的4类中所包含方法,根据需要,环境检测对抗模块对其他的特征进行对抗修改,生成新的运行环境,从而达到欺骗待检测应用程序的目的。
6.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,通过修改Android***源码动态生成具有所述特征的运行环境,具体包括:
首先,属于***属性的环境特征会在模拟器启动后使用特制的***属性修改工具修改***内核中的属性值,同时增加一些自定义属性用来控制对于Android***API特征和文件特征的伪装,对于***属性中Android***的Build静态变量,无法直接通过修改内存改变其数值,则通过进程注入的方式向zygote初始化进程注入代码,通过反射方式修改其修饰符,然后修改其数值;
其次,对于通过调用Android***API获取其返回值作为判断运行环境信息的特征,应用程序调用该API时,Android框架会从***属性中获取之前添加的与该API对应的自定义属性值,并将该自定义属性的值作为API调用的返回值返回给应用程序,而不是返回其真实值,在Android框架中这些API运行时会判断当前调用来自哪个进程,只有来自被检测应用程序所在进程的调用才会被返回伪装后的值;
再次,对于属于文件特征的检测方法,应用程序会检测运行环境中特征文件是否存在或者文件中是否存在特征字符串的方法来判断运行环境,在打开文件时Android框架会判断调用该打开文件操作的进程是否为被检测的应用程序所在的进程,然后再判断要打开的文件是否为能够体现运行环境的特征文件,如果两个条件都符合的话则将这个文件操作重定向到预先准备好的伪装文件,从而实现对运行环境文件特征的伪装。
7.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,所述动态分析模块,主要记录功能包括如下方面:
(1)网络通信行为记录:包括TCP通信记录、UDP通信记录、HTTP通信记录、DNS通信记录和网络通信流量记录;
(2)文件操作行为记录:包括文件操作记录和sqlite数据库操作记录;
(3)加解密操作行为记录:包括加密操作记录和解密操作记录;
(4)***shell操作行为记录:包括提权命令、mount命令、chown命令、chmod命令记录;
(5)隐私信息获取行为记录:包括获取***信息行为记录、获取phone/call/email信息行为记录、获取browser信息行为记录和获取位置信息行为记录;
(6)敏感操作行为记录:包括动态加载行为记录、Android组件操作行为记录和敏感操作行为记录。
动态分析模块在待检测的应用程序运行过程中对以上所有行为进行监控与记录,所有的监控信息输出在Android***的日志***中,被监控的API被调用时判断调用者的进程号是否等于被监控应用程序的进程号,如果相等才会进行真正记录的磁盘操作,否则不对其进行记录;
所述动态分析模块中,在记录应用程序运行过程中所调用的***API时会将这个API调用者所在的进程号以及API调用者所在线程的调用栈一同记录下来,最终保存在磁盘文件中;应用程序在模拟器中运行结束后,行为记录生成模块会将该行为记录文件从模拟器中提取出来,并对其中的每条记录按照其运行调用者的类名称和进程编号进行分类汇总,按照记录的时间戳进行排序,最终形成一个应用程序运行过程中每个进程各自的Android***API调用序列。
8.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,所述行为日志预处理子模块对原始的行为日志文件进行整理,提取出所有该日志中出现的***调用,并整理为一个列表,每个***调用对应一个唯一的整数编号;
所述行为序列提取子模块根据上一步生成的***调用与编号的对应关系转换为将每一个单独的行为日志行为序列;
所述行为分析对比子模块采用比对算法对各个行为序列进行比较,计算两两之间的相似度,生成一致性矩阵,同时统计各个行为记录中API调用的数目;
所述报告生成子模块根据一致性矩阵的特征判断该应用是否存在隐藏的恶意行为,标明其恶意性,并输出检测报告。
9.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,所述行为分析比对子模块在对用一个应用程序在不同运行环境中所得到的两个行为记录进行比较时,首先按照两个行为记录中的线程编号分别计算两个行为记录中对应线程间的***API调用序列相似度;在计算得到每个线程对之间的相似度之后,按照各个线程中***API调用序列中API调用记录的数目以及在整个行为记录中API调用记录总数中所占的比例,将这些单独的相似度加总为一个总体的相似度,作为应用程序两个行为记录相似度的最终结果,将所有行为记录之间的相似度比较完成之后组成该应用程序运行时行为的一致性矩阵;
所述行为分析比对子模块还统计两个对应线程之间具体调用***API函数种类和数目上的差别,得到行为分类统计结果,如果两个行为记录中某一对对应线程中的行为记录不是完全相同,而且其中一个线程中调用了敏感API函数,另外一个线程则没有调用该API函数,则表明该应用程序根据其收集到的运行环境信息对这部分敏感行为进行了隐藏;
所述报告生成子模块综合一个应用程序在几次动态运行后输出行为记录间的一致性矩阵,使用判决算法判该应用程序是否存在行为差异,如果在某一类伪装后运行环境中的行为记录与原始模拟运行环境中的行为记录之间的比较结果小于阈值,则证明该应用程序存在行为差异,且其使用的检测模拟运行环境方法为属于该类别,从而判断出应用程序所使用的反模拟器行为所属类别;所述判决算法还根据行为分类统计结果的差别分析其是否在某些运行环境中隐藏了敏感行为,如果存在隐藏的敏感行为则判定这个应用程序为使用了反模拟器方法的恶意应用程序应用程序。
10.根据权利要求1所述基于多运行环境行为比对的安卓恶意应用检测***,其特征在于,所述模拟器运行调度子模块,在***初始化时根据输入的启动模拟器数量启动模拟器,然后启动各个模拟器的控制线程,模拟器控制线程提供对模拟器的一系列控制操作;
所述待分析应用管理子模块,监控待分析应用保存目录,维护一个待分析应用队列,一个正在分析应用队列和一个分析完成应用队列,每次模拟器运行调度子模块从待分析应用队列中取到一个待分析应用进行分析,并将其置于正在分析应用队列,待分析完成后置于分析完成应用队列;
所述***事件模拟子模块负责在正在检测的应用程序运行过程模拟一些真实设备使用过程中会发生的***事件,以触发待检测应用程序对这些***时间可能的响应行为;
所述用户接口事件触发子模块模拟用户操作应用程序,以触发应用程序针对这些用户操作所产生的响应行为,同时该子模块还自动启动应用程序中所存在的各种组件,包括暴露组件和非暴露组件,用户接***互模拟时按照深度优先算法遍历UI Tree,在遍历UITree中的UI控件时,用户接***互模拟功能根据UI控件类型的不同,触发不同的UI组件事件,实现用户操作的模拟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711217805.1A CN108133139B (zh) | 2017-11-28 | 2017-11-28 | 一种基于多运行环境行为比对的安卓恶意应用检测*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711217805.1A CN108133139B (zh) | 2017-11-28 | 2017-11-28 | 一种基于多运行环境行为比对的安卓恶意应用检测*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108133139A true CN108133139A (zh) | 2018-06-08 |
CN108133139B CN108133139B (zh) | 2020-06-26 |
Family
ID=62389035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711217805.1A Active CN108133139B (zh) | 2017-11-28 | 2017-11-28 | 一种基于多运行环境行为比对的安卓恶意应用检测*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108133139B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109492391A (zh) * | 2018-11-05 | 2019-03-19 | 腾讯科技(深圳)有限公司 | 一种应用程序的防御方法、装置和可读介质 |
CN110135160A (zh) * | 2019-04-29 | 2019-08-16 | 北京邮电大学 | 软件检测的方法、装置及*** |
CN110166493A (zh) * | 2019-07-01 | 2019-08-23 | 武汉斗鱼鱼乐网络科技有限公司 | 一种社交客户端通讯录动态保护方法及装置 |
CN110377499A (zh) * | 2019-06-06 | 2019-10-25 | 北京奇安信科技有限公司 | 一种对应用程序进行测试的方法及装置 |
CN110430177A (zh) * | 2019-07-26 | 2019-11-08 | 北京智游网安科技有限公司 | 一种app网络行为的监控方法、智能终端及存储介质 |
CN110427752A (zh) * | 2019-08-06 | 2019-11-08 | 北京智游网安科技有限公司 | 一种沙箱监控应用程序的方法、移动终端及存储介质 |
CN110543760A (zh) * | 2019-08-28 | 2019-12-06 | 南京市晨枭软件技术有限公司 | 一种软件管理***及其软件保护方法 |
CN110737463A (zh) * | 2019-10-24 | 2020-01-31 | 北京智游网安科技有限公司 | 一种关键函数源头信息的分析方法、智能终端及存储介质 |
CN110889113A (zh) * | 2019-10-30 | 2020-03-17 | 泰康保险集团股份有限公司 | 一种日志分析方法、服务器、电子设备及存储介质 |
CN110990054A (zh) * | 2019-12-03 | 2020-04-10 | 北京明略软件***有限公司 | 一种开源框架的配置处理方法及装置 |
CN111104337A (zh) * | 2019-12-30 | 2020-05-05 | 杭州云缔盟科技有限公司 | 一种检测终端模拟器的方法 |
CN111259382A (zh) * | 2018-11-30 | 2020-06-09 | 中国电信股份有限公司 | 恶意行为识别方法、装置、***和存储介质 |
CN111385309A (zh) * | 2020-03-21 | 2020-07-07 | 薛爱君 | 在线办公设备的安全检测方法、***及终端 |
CN111382424A (zh) * | 2018-12-27 | 2020-07-07 | 全球能源互联网研究院有限公司 | 一种基于受控环境的移动应用敏感行为检测方法和*** |
CN111740817A (zh) * | 2020-06-17 | 2020-10-02 | 国网天津市电力公司电力科学研究院 | 电力数据采集***中集中器的代码篡改检测方法及*** |
CN112527672A (zh) * | 2020-12-21 | 2021-03-19 | 北京深思数盾科技股份有限公司 | 一种针对加壳工具的检测方法及设备 |
CN112685737A (zh) * | 2020-12-24 | 2021-04-20 | 恒安嘉新(北京)科技股份公司 | 一种app的检测方法、装置、设备及存储介质 |
CN112887388A (zh) * | 2021-01-20 | 2021-06-01 | 每日互动股份有限公司 | 基于沙箱环境的数据处理*** |
CN113672918A (zh) * | 2021-08-04 | 2021-11-19 | 安天科技集团股份有限公司 | 恶意代码检测方法、装置、存储介质及电子设备 |
CN114528205A (zh) * | 2022-01-24 | 2022-05-24 | 山东浪潮科学研究院有限公司 | 一种基于安卓的应用程序分析方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930210A (zh) * | 2012-10-14 | 2013-02-13 | 江苏金陵科技集团公司 | 恶意程序行为自动化分析、检测与分类***及方法 |
CN103077351A (zh) * | 2012-12-20 | 2013-05-01 | 北京奇虎科技有限公司 | 虚拟机***的反检测*** |
CN105718793A (zh) * | 2015-09-25 | 2016-06-29 | 哈尔滨安天科技股份有限公司 | 基于修改沙箱环境防止恶意代码识别沙箱的方法及*** |
US20170111374A1 (en) * | 2015-10-20 | 2017-04-20 | Sophos Limited | Mitigation of anti-sandbox malware techniques |
-
2017
- 2017-11-28 CN CN201711217805.1A patent/CN108133139B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102930210A (zh) * | 2012-10-14 | 2013-02-13 | 江苏金陵科技集团公司 | 恶意程序行为自动化分析、检测与分类***及方法 |
CN103077351A (zh) * | 2012-12-20 | 2013-05-01 | 北京奇虎科技有限公司 | 虚拟机***的反检测*** |
CN105718793A (zh) * | 2015-09-25 | 2016-06-29 | 哈尔滨安天科技股份有限公司 | 基于修改沙箱环境防止恶意代码识别沙箱的方法及*** |
US20170111374A1 (en) * | 2015-10-20 | 2017-04-20 | Sophos Limited | Mitigation of anti-sandbox malware techniques |
Non-Patent Citations (1)
Title |
---|
张翔飞: "基于多层次行为差异的沙箱逃逸检测及其实现", 《计算机工程与应用》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109492391B (zh) * | 2018-11-05 | 2023-02-28 | 腾讯科技(深圳)有限公司 | 一种应用程序的防御方法、装置和可读介质 |
CN109492391A (zh) * | 2018-11-05 | 2019-03-19 | 腾讯科技(深圳)有限公司 | 一种应用程序的防御方法、装置和可读介质 |
CN111259382A (zh) * | 2018-11-30 | 2020-06-09 | 中国电信股份有限公司 | 恶意行为识别方法、装置、***和存储介质 |
CN111382424A (zh) * | 2018-12-27 | 2020-07-07 | 全球能源互联网研究院有限公司 | 一种基于受控环境的移动应用敏感行为检测方法和*** |
CN110135160A (zh) * | 2019-04-29 | 2019-08-16 | 北京邮电大学 | 软件检测的方法、装置及*** |
CN110135160B (zh) * | 2019-04-29 | 2021-11-30 | 北京邮电大学 | 软件检测的方法、装置及*** |
CN110377499A (zh) * | 2019-06-06 | 2019-10-25 | 北京奇安信科技有限公司 | 一种对应用程序进行测试的方法及装置 |
CN110377499B (zh) * | 2019-06-06 | 2023-05-23 | 奇安信科技集团股份有限公司 | 一种对应用程序进行测试的方法及装置 |
CN110166493A (zh) * | 2019-07-01 | 2019-08-23 | 武汉斗鱼鱼乐网络科技有限公司 | 一种社交客户端通讯录动态保护方法及装置 |
CN110166493B (zh) * | 2019-07-01 | 2021-10-15 | 武汉斗鱼鱼乐网络科技有限公司 | 一种社交客户端通讯录动态保护方法及装置 |
CN110430177A (zh) * | 2019-07-26 | 2019-11-08 | 北京智游网安科技有限公司 | 一种app网络行为的监控方法、智能终端及存储介质 |
CN110427752A (zh) * | 2019-08-06 | 2019-11-08 | 北京智游网安科技有限公司 | 一种沙箱监控应用程序的方法、移动终端及存储介质 |
CN110543760A (zh) * | 2019-08-28 | 2019-12-06 | 南京市晨枭软件技术有限公司 | 一种软件管理***及其软件保护方法 |
CN110737463A (zh) * | 2019-10-24 | 2020-01-31 | 北京智游网安科技有限公司 | 一种关键函数源头信息的分析方法、智能终端及存储介质 |
CN110889113A (zh) * | 2019-10-30 | 2020-03-17 | 泰康保险集团股份有限公司 | 一种日志分析方法、服务器、电子设备及存储介质 |
CN110990054A (zh) * | 2019-12-03 | 2020-04-10 | 北京明略软件***有限公司 | 一种开源框架的配置处理方法及装置 |
CN110990054B (zh) * | 2019-12-03 | 2023-03-21 | 北京明略软件***有限公司 | 一种开源框架的配置处理方法及装置 |
CN111104337A (zh) * | 2019-12-30 | 2020-05-05 | 杭州云缔盟科技有限公司 | 一种检测终端模拟器的方法 |
CN111385309A (zh) * | 2020-03-21 | 2020-07-07 | 薛爱君 | 在线办公设备的安全检测方法、***及终端 |
CN111385309B (zh) * | 2020-03-21 | 2020-12-08 | 浙江电科智盛科技有限公司 | 在线办公设备的安全检测方法、***及终端 |
CN111740817A (zh) * | 2020-06-17 | 2020-10-02 | 国网天津市电力公司电力科学研究院 | 电力数据采集***中集中器的代码篡改检测方法及*** |
CN112527672B (zh) * | 2020-12-21 | 2021-10-22 | 北京深思数盾科技股份有限公司 | 一种针对加壳工具的检测方法及设备 |
CN112527672A (zh) * | 2020-12-21 | 2021-03-19 | 北京深思数盾科技股份有限公司 | 一种针对加壳工具的检测方法及设备 |
CN112685737A (zh) * | 2020-12-24 | 2021-04-20 | 恒安嘉新(北京)科技股份公司 | 一种app的检测方法、装置、设备及存储介质 |
CN112887388A (zh) * | 2021-01-20 | 2021-06-01 | 每日互动股份有限公司 | 基于沙箱环境的数据处理*** |
CN113672918A (zh) * | 2021-08-04 | 2021-11-19 | 安天科技集团股份有限公司 | 恶意代码检测方法、装置、存储介质及电子设备 |
CN114528205A (zh) * | 2022-01-24 | 2022-05-24 | 山东浪潮科学研究院有限公司 | 一种基于安卓的应用程序分析方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108133139B (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108133139A (zh) | 一种基于多运行环境行为比对的安卓恶意应用检测*** | |
CN105653956B (zh) | 基于动态行为依赖图的Android恶意软件分类方法 | |
CN104766012B (zh) | 基于动态污点追踪的数据安全动态检测方法及*** | |
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
US10581879B1 (en) | Enhanced malware detection for generated objects | |
CN106203113B (zh) | 安卓应用文件的隐私泄露监控方法 | |
US6735703B1 (en) | Multi-platform sequence-based anomaly detection wrapper | |
CN102054149B (zh) | 一种恶意代码行为特征提取方法 | |
CN105787366B (zh) | 基于组件关系的安卓软件可视化安全分析方法 | |
CN111931166B (zh) | 基于代码注入和行为分析的应用程序防攻击方法和*** | |
CN112685737A (zh) | 一种app的检测方法、装置、设备及存储介质 | |
CN107341401A (zh) | 一种基于机器学习的恶意应用监测方法和设备 | |
CN105956468B (zh) | 一种基于文件访问动态监控的Android恶意应用检测方法及*** | |
CN104834858A (zh) | 一种android应用中恶意代码的静态检测方法 | |
CN109992968A (zh) | 基于二进制动态插桩的Android恶意行为动态检测方法 | |
CN106845234A (zh) | 一种基于函数流关键点监控的安卓恶意软件检测方法 | |
CN108090360A (zh) | 一种基于行为特征的安卓恶意应用分类方法及*** | |
CN103905423A (zh) | 一种基于动态行为分析的有害广告件检测方法及*** | |
CN113158251B (zh) | 应用程序隐私泄露检测方法、***、终端及介质 | |
CN112149124A (zh) | 一种基于异构信息网络的安卓恶意程序检测的方法和*** | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
CN109800569A (zh) | 程序鉴别方法及装置 | |
Zhang et al. | A multiclass detection system for android malicious apps based on color image features | |
CN113468524B (zh) | 基于rasp的机器学习模型安全检测方法 | |
Ganz et al. | Detecting backdoors in collaboration graphs of software repositories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |