CN108345793A - 一种软件检测特征的提取方法及装置 - Google Patents
一种软件检测特征的提取方法及装置 Download PDFInfo
- Publication number
- CN108345793A CN108345793A CN201711476824.6A CN201711476824A CN108345793A CN 108345793 A CN108345793 A CN 108345793A CN 201711476824 A CN201711476824 A CN 201711476824A CN 108345793 A CN108345793 A CN 108345793A
- Authority
- CN
- China
- Prior art keywords
- application software
- feature
- software
- behavioral characteristics
- extraction
- 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.)
- Pending
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/562—Static detection
-
- 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)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种软件检测特征的提取方法及装置。所述方法包括:获取待测应用软件的压缩包文件,解析从压缩包文件提取的特定文件,选取所述应用软件的静态特征并保存;启动虚拟机运行所述应用软件,调用沙盒及其辅助工具,记录并分析所述应用软件的动态特征,选取所述应用软件固定时间内的动态特征并保存;将所述的静态特征和动态特征结合,生成多维混合特征集。所述方法多角度反映了基于安卓系统的应用软件的行为,提高了应用软件特征提取的全面性,直接分析提取到的多维特征就可以判断应用软件的恶意与否,省略了将提取的检测特征与已知的恶意软件的特征库进行比对的步骤,即使面对的是新型未知的恶意软件,也能做出准确的判断。
Description
技术领域
本发明涉及属于信息安全领域,尤其涉及一种基于Android(安卓)系统应用软件的检测特征的提取方法。
背景技术
Android系统由于其出众的开放性以及独特的开源性受到了市场的青睐,根据IDC(国际数据中心)在2016年第二季度《全球手机季度追踪报告》,预测Android系统的市场份额2016年年底将达到85.3%。市场占有率高且具有独特的开源性,使得Android系统成为众多攻击者的首选目标。
由于Android系统特殊的开源性,恶意软件的开发人员总能制造出许多不同类型的变种病毒,面对源源不断的新型恶意软件,尽管手机制造商极力尝试各种防护措施,但是手机的安全屏障仍然不堪一击。360互联网安全中心在发布的《2016第三季度中国互联网安全报告》中指出,2016年第三季度,安全中心共截获了新增的基于Android系统恶意程序样本349万个,平均每天将近有3.8万个出现,平均每120部智能手机中就有一部受到恶意软件的感染,平均每天受到感染的人次达到了63.7万人。
因此,基于Android系统的应用软件在未下载安装之前就检测出应用软件是否为恶意软件,十分重要。检测基于Android系统的应用软件是否为恶意的前提是提取应用软件的特征,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:一方面现有技术提供的技术方案,提取应用软件的特征码以及文件签名作为检测特征,这样的检测特征依赖于与已知的恶意软件的特征码以及文件签名比对,才能判断应用软件是否为恶意,对于新型未知的恶意软件却束手无策;另一方面,提取的应用软件检测特征类别选取上不科学,种类偏少造成分类器精度不高,不能全面描述软件行为。
发明内容
本发明实施例提供了一种用于检测软件的动静结合的多维混合特征的提取方法及装置,所述方法多角度的反映了应用软件的行为,提高了检测特征提取的全面性。
一方面,本发明实施例提供了一种软件检测特征的提取方法,所述方法包括:
获取待测应用软件的压缩包文件;
提取所述应用软件的静态特征;
提取所述应用软件的动态特征;
将所述的静态特征和动态特征结合,生成多维混合特征。
另一方面,本发明实施例提供了一种软件检测特征的提取装置,所述装置包括:
获取单元,用于获取待测应用软件的压缩包文件;
第一提取单元,用于提取所述应用软件的静态特征;
第二提取单元,用于提取所述应用软件的动态特征;
结合单元,用于将所述的静态特征和动态特征结合,生成多维混合特征。
上述技术方案具有如下有益效果:在检测特征提取的选择上,不仅仅选择静态特征和动态特征,同时将二者进行有效结合生成多维混合特征的技术手段,全面的提取了应用软件的特征,多角度的反映了应用软件的行为,直接分析提取到的多维特征就可以判断应用软件的恶意与否,省略了将提取的检测特征与已知的恶意软件的特征库进行比对的步骤,即使面对的是新型未知的恶意软件,也能做出准确的判断。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例软件检测特征的提取方法的流程图;
图2是本发明实施例软件检测特征的提取装置的结构示意图;
图3是本发明实施例软件静态特征的提取方法的流程图;
图4是本发明实施例软件动态特征的提取方法的流程图;
图5是本发明实施例第一提取单元的结构示意图;
图6是本发明实施例软件检测特征的提取方法的整体框架图;
图7是本发明实施例软件静态特征的提取方法的整体框架图;
图8是本发明实施例软件动态特征的提取方法的整体框架图;
图9是2016年基于Android系统感染恶意软件的用户量分析图;
图10是本发明实施例软件的程序全局配置文件的结构图;
图11是本发明实施例与现有技术的提取结果的对比图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,图1是本发明实施例软件检测特征的提取方法的流程图;所述方法包括:
101、获取待测应用软件的压缩包文件;
102、提取所述应用软件的静态特征;
103、提取所述应用软件的动态特征;
104、将所述的静态特征和动态特征结合,生成多维混合特征。
优选地,请参考图3,图3是本发明实施例软件静态特征的提取方法的流程图;所述静态特征的提取方法包括:
102.1、解压所述应用软件的压缩包文件,提取其中包含的特定文件;
102.2、反编译所述特定文件,得到反编译后的文件;
102.3、解析反编译后的文件,选取所述应用软件的静态特征,所述静态特征为代表所述待测应用软件行为和特点的特征;
102.4、保存所述静态特征。
进一步优选地,所述提取其中包含的特定文件,包括:程序全局配置文件和可执行文件;
进一步优选地,所述选取的静态特征包括:权限特征,硬件特征,组件特征,意图特征,函数调用特征。
优选地,请参考图4,图4是本发明实施例软件动态特征的提取方法的流程图;所述动态特征的提取方法,包括;
103.1、启动虚拟机,下载并运行所述应用软件;
103.2、根据所述应用软件在虚拟环境下运行过程中的动态行为,选取所述应用软件的动态特征;
103.3、保存所述动态特征。
进一步优选地,根据所述应用软件在虚拟环境下运行过程中的动态行为,选取所述应用软件的动态特征;具体包括:
调用沙盒及辅助工具得到所述应用软件的动态特征记录;
分析所述动态特征记录,选择所述应用软件固定时间内的动态特征;
进一步优选地,所述应用软件的动态特征包括:占用CPU(中央处理器)的时间,通过网络接收总流量,通过网络发送总流量,电池消耗量,短信接收和发送数量。
如图2所示,图2是本发明实施例软件检测特征的提取装置的结构示意图;
获取单元21,用于获取待测应用软件的压缩包文件;
第一提取单元22,用于提取所述应用软件的静态特征;
第二提取单元23,用于提取所述应用软件的动态特征;
结合单元24,用于将所述的静态特征和动态特征结合,生成多维混合特征。
请参考图5,图5是本发明实施例第一提取单元的结构示意图;
解压模块221,用于解压所述应用软件的压缩包文件,提取其中包含的特定文件;
反编译模块222,用于反编译所述特定文件,得到反编译后的文件;
第一选取模块223,用于从解析反编译后的文件,选取所述应用软件的静态特征,所述静态特征为不运行所述应用软件提取的代表所述待测应用软件行为和特点的特征
第一保存模块224,用于保存所述静态特征。
进一步优选地,所述提取其中包含的特定文件,包括:程序全局配置文件和可执行文件;
进一步优选地,所述选取的静态特征包括:权限特征,硬件特征,组件特征,意图特征,函数调用特征。
优选地,所述第二提取单元23具体包括:
运行模块,用于启动虚拟机,下载并运行所述应用软件;
第二选取模块,用于根据所述应用软件在虚拟环境下运行过程中的动态行为,选取所述应用软件的动态特征;
第二保存模块,用于保存所述动态特征。
进一步优选地,所述第二选取模块,具体包括:
沙盒子模块,用于调用沙盒及辅助工具得到所述应用软件的动态特征记录;
选择子模块,用于分析所述动态特征记录,选择所述应用软件固定时间内的动态特征;
进一步优选地,所述应用软件的动态特征包括:占用CPU的时间,通过网络接收总流量,通过网络发送总流量,电池消耗量,短信接收和发送数量。
上述技术方案具有如下技术效果:通过获取并解压待测应用软件的压缩包文件,选择程序全局配置文件和可执行文件作为提取待测软件的静态特征的源文件,因为这两个文件中包含的信息,最能代表软件的行为和特点;通过反编译并解析这两个文件,在不运行应用软件的前提下,提取出最具有判断价值的5类静态特征:权限特征,硬件特征,组件特征,意图特征和函数调用特征的静态特征。通过启动虚拟机,运行待测应用软件,通过沙盒以及辅助工具记录所述应用软件在虚拟环境下动态行为日志,提取应用软件在固定时间内的异常动态特征记录,选取了最能代表应用软件恶意性的7类动态特征:占用CPU的时间,通过网络接收总流量,通过网络发送总流量,电池消耗量,短信接收和发送数量。通过将所述静态特征和动态特征进行有效结合,生成的多维特征库,作为软件检测特征的最终提取结果,多角度反映应用软件的行为,全面性评价了软件。直接分析所述多维特征库,就可以分析出应用软件恶意与否,不依赖于已知的恶意软件特征库,省略了现有技术中将提取到的特征与已知的恶意软件特征库比对的步骤,因为基于Android系统的恶意软件层出不穷,变种丰富,如果依赖已知的恶意软件库,会大大降低恶意软件的检出率。同时,静态特征和动态特征相结合的软件检测特征的提取方式,一方面避免只选择静态特征不能准确反映应用软件的行为的弊端,另一方面避免了只选择动态特征而导致分析特征的时间长,效率低下的问题。
为了更好地说明本发明技术方案的优越性,以下结合应用实例对本发明实施例上述技术方案进行详细说明:
请参考图9,图9是2016年基于Android系统感染恶意软件的用户量分析图:
由图9可知,随着采用Android系统的设备越来越多,被恶意软件感染的Android系统的设备也越来越多。据统计,全年共有3444万部Android系统的手机感染了关于智能终端支付的恶意软件,这些关于智能终端支付的恶意软件的恶意行为集中在恶意扣费和用户隐私信息的获取,通过暗自发送验证码信息等对用户的资金造成巨大的损失,严重威胁到用户的隐私安全和资金安全。《腾讯安全2016年度互联网安全报告》指出截止到2016年6月我国网民总数达到了7.1亿,其中手机网民高达6.56亿,报告统计了2016年全年度用户的Android系统手机感染病毒的情况,如图9所示。由此可知,在应用软件未被安装之前就检测出其恶意与否十分重要。
请参考图6,图6是本发明实施例软件检测特征的提取方法的整体框架图;
基于Android系统应用软件的静态特征的提取,不需要运行所述的应用软件,读取应用软件的压缩包文件,本实施例读取的压缩包文件是APK(Android Package)文件。解压缩APK文件,得到应用软件的七个主要文件,从七个主要文件选择了特定文件:AndroidManifest.xml(程序全局配置文件)和classed.dex(可执行文件)作为静态特征的源文件。之所以选择AndroidManifest.xml作为提取静态特征的源文件,是因为每个基于Android系统的应用软件都必须包含AndroidManifest.xml文件,它位于整个Android项目的根目录,是程序的全局配置文件,描述了应用程序运行过程中需要的四大组件信息,权限声明信息,Intent-filter(意图过滤器)定义的行为等软件相关信息,所述文件中包含的信息代表着软件的行为和特点。请参考图10,图10是发明实施例软件的全局配置文件的结构图。AndroidManifest.xml文件目录下,依次为permission(权限)、permission-group(权限组)、permission-tree(权限树),application(组件),instrumentation(设备),uses-feature(用户特征),uses-sdk(用户软件开发工具包),supports-screens(支持多屏幕);其中application节点下包含以下子节点:activity(活动),activity-alias(activity的别名),service(服务),receiver(接收器),uses-library(指定应用程序必须链接的共享类库),provider(提供者);provider下包含intent-filter(意图过滤器),grant-uri-permission(访问哪些路径被授权)。
AndroidManifest.xml文件包括以下几个主要属性节点:与权限相关的permission,permission-group和permission-tree三个节点,与组件相关的application节点,与版本相关的uses-sdk节点,描述应用所需要硬件和软件特征的uses-feature节点以及描述是否支持多屏幕机制的supports-screens节点等。本发明实施例从中选取了permission,application,uses-feature,Intent-filter四种节点作为静态特征提取源。
之所以选择classed.dex作为提取静态特征的源文件,是因为执行程序中包含了API(Application Programming Interface),应用程序编程接口,也就是函数调用接口。API调用决定了应用软件执行的是何种行为,因为不管应用软件恶意与否,应用软件执行的行为都是通过API调用一系列不同的函数或方法实现的。
静态特征的提取不需要运行软件,只需要反编译APK中的特定文件,得到反编译后的文件,从中提取相关的特征即可,具有速度快,效率高的特点。
请参考图7,图7是本发明实施例软件静态特征的提取方法的整体框架图:
从APK或storage(手机自带内存)中读取APK文件,本实施例采用Python语言实现,在Python中导入os(操作系统)和os.path(操作系统路径)类库。使用dirpath,(目录路径)dirnames(路径下的所有子目录名)以及filenames(所述路径下的文件名)。通过调用os类的walk(目录遍历器)方法就能找到目标文件的存储目录,在获取到目标文件目录后按顺序调用os.path下的join(连接),split(拆分),splitext(拆分字符串)方法即可获取到待测APK文件。反编译并解析AndroidManifest.xml文件,从中提取permission特征,uses-feature特征,application特征,意图特征,反编译classed.dex文件,得到smali(反编译)文件,解析smali文件提取函数调用特征。之所以选择这五类特征作为提取的静态特征,是因为:
关于permission特征,基于Android系统的应用软件必须申请权限才能访问隐私数据,权限机制要求基于Android系统的应用软件必须明确定义出访问硬件和软件资源时需要的权限信息,才能使用相关的API调用。然而有的应用软件申请的权限远远超出该应用软件解决的问题范畴,那么该应用很可能会在安装后进行一些恶意行为,因此提取权限特征作为静态特征。
关于uses-feature特征,描述了应用软件所需要的硬件特性,应用软件可以通过该节点声明支持的硬件型号,访问的硬件类型,没有符合调节的设备将被拒绝安装相关APK。一些硬件特征在游戏类应用中非常重要,如android.hardware.touchscreen.multitouch(安卓硬件多点触屏交互)用来支持基本的多点触控交互。往往申请特殊硬件的应用会有一定潜在的影响,例如申请GPS(全球卫星定位系统)和network(网络)设备的应用软件可能会存在私自窃取用户的定位数据并发送给攻击者,然而有些非恶意的应用软件也需要相关的操作,比如地图应用软件,开发人员必须获取用户的地理位置之后才能显示用户周围的景象和相关数据,所述特征具备一定的类别区分能力,但是只关注硬件设备的申请不能很好的区分非恶意软件和恶意软件,因此本发明实施例选取该类特征作为静态特征,作为进一步划分软件类别的另一参考依据。
关于application,application标签是AndroidManifest.xml中最为重要的节点,该标签声明了应用软件的组件和属性。应用开发过程中常用到的四大组件就需要在该标签下进行声明。有些恶意软件家族,为了能够保持该家族的特性,会在更新迭代软件时使用相同的服务名,因此将四大组件的名称作为静态特征属性也对恶意软件类别区分上起到了一定的检测作用。
关于意图特征,Intent(意图)通过描述应用中的一次行为的动作、动作相关的数据及附加数据等,帮助Android系统找到相应的其他组件并建立通信。一个<intent-filter>元素至少包含一个<action>(行为)。在对恶意软件进行研究的过程中,发现一些恶意软件在intent-filter标签中通过使用官方或自身定义的一些敏感动作来触发自身的恶意行为,如恶意扣费类软件会在action中配置Intent.ACTION_SENDTO(调用发短信的指令),Intent.ACTION_SEND(调用发送短信的指令)和Intent.ACTION.DIAL(调用拨打电话的指令)的行为,通过扫描AndroidManifest文件,当检查到Action配置了以上三种行为,那么很可能该软件属于恶意扣费类恶意软件。由此可知intent-filter标签中的action和category(类别)在一定程度上同样具有辨别恶意软件的能力,因此本发明实施例将其作为静态特征。
关于函数调用特征,API指的是函数调用接口,如果说申请权限是恶意软件执行恶意行为的前提,那么API的调用则决定了应用软件执行的是何种行为,无论应用软件恶意与否,它们的所有行为都是通过调用一系列API实现的。即恶意软件的恶意行为一定是通过调用危险的API函数进行实现的,因此,通过分析应用程序源代码中API函数的使用情况,根据它所用到的API函数的类型分布可以直观地反映出一个应用软件是否具有恶意。
综上所述,选择了5类静态特征作为提取对象。这5类静态特征在本实施例中,是这样实现提取的:采用集成的Androguard(Android软件静态分析工具)开源工具,在下载该项目后,在本文程序中通过导入androguard.core.bytecodes.apk(解析APK文件中classed.dex)以及androguard.core.analysis.analysisis(分析结果对象)包,即可引入Androguard中封装的静态特征提取方法。针对上文提出的静态特征提取方案可以分别调用相关接口实现静态特征提取,每类静态特征提取过程中的关键实现方案描述如下:
权限特征:首先通过dvm(安卓虚拟机)类的DalvikVMFormat(获取所有的类)方法将待测APK由dex(程序格式)格式转换成DalvikVMFormat(虚拟机转换后程序格式)格式,然后调用get_permissions(获取权限)方法获取APK的权限信息。
硬件特征:首先通过get_android_manifest_xml(获取安卓程序全局配置文件)方法反编译AndroidManifest文件,其次调用getElementsByTagName(查找传回指定名称的元素集合)方法并传入参数“uses-feature”以此遍历AndroidManifest文件,找到<uses-feature>标签,通过attributes[“android:name”](指定应用软件使用的功能)遍历获取到的<uses-feature>标签,从而得到APK访问的硬件资源信息,如android.hardware.telephony(硬件信息)等。
组件特征:Android应用共有四大组件,即activities(活动),services(服务),receivers(广播接收器)和(providers(内容提供器),在程序中可以分别通过get_activities(获取活动),get_services(获取服务),get_receivers(获取广播接收)以及get_providers(获取内容)方法获取APK的组件特征。
意图特征:和上述实现过程类似,也是先获取AndroidManifest文件,从中遍历得到<intent-filter>标签,并在该类标签中通过childNodes(返回节点的子节点集合)方法获取到“android:name”下的action和category信息,从而提取出APK的意图特征。
如图7所示,首先反编译AndroidManifest文件,解析得到的反编译后的文件,获取上述四类静态特征。
函数调用特征:导入re(管理器)包,首先初始化APK文件对象,dex文件对象以及分析结果对象,然后通过get_classes(获取类别)方法获取APK中的所有类,通过get_methods(获取方法)方法获得APK中的所有方法。Androguard会对classes.dex文件进行反编译,进而得到的smali文件,而在smali文件中对象的定义是以“L”开头,因此调用re下的search(搜索)方法并传入正则表达式“r′(L[∧;]*;)->[∧\(]*\([∧\)]*\).*′”以及要匹配的字符串matchString(匹配字符串),其中matchString通过遍历get_methods获得的方法集,并顺序调用get_instructions(获取指示)和get_output(获取输出)方法获得。将search方法获得的结果与get_classes获取的类进行匹配并将匹配成功的值存入结果集中,最终获得函数调用集合,存储形式为:android/location/LocationManager(安卓/定位/定位信息路径);getProvider(获取内容提供器)。如图7所示,首先反编译classes.dex文件,解析得到的反编译后的smali文件,获取此类静态特征。
经过上述实现过程,即可获得待测应用的五种静态特征。APK的所有的静态特征信息都被保存在txt(文本格式)文件内。本发明实施例对样本中的一个APK运用上述方法进行了静态特征提取,该特征集均以字符串形式保存,保存获取的静态特征属性,通过遍历获得上述类别的特征集,并调用Python库中的write(写入)方法即可将该待测APK的特征信息写入到txt文件内。如下所示:
feature:android.hardware.touchscreen
api_call:org/apache/http/impl/client/DefaultHttpClient
intent:android.intent.category.HOME
service_receiver:.Notificator
permission:android.permission.RECEIVE_SMS
permission:android.permission.INTERNET
service_receiver:com.google.android.c2dm.C2DMBroadcastReceiver
intent:android.intent.action.BOOT_COMPLETED
permission:android.permission.WAKE_LOCK
service_receiver:.C2DMReceiver
service_receiver:.SmsReceiver
permission:com.google.android.c2dm.permission.RECEIVE
permission:android.permission.VIBRATE
下面详述软件动态特征的提取方法:
首先说明为什么选择以下7类动态特征:恶意应用软件由于需要不断的执行恶意行为,对Android系统的应用软件的载体——手机资源的消耗量比正常软件多,因此,对系统资源的监控也能在一定程度上区分应用软件的恶意与否。启动虚拟机,下载并运行软件,调用DroidBox(沙盒)及其辅助工具,在DroidBox动态特征记录中,提取7类动态特征,生成动态特征集。
恶意软件由于需要不断的执行恶意行为,对手机资源的消耗量比正常软件多,对系统资源的监控也能在一定程序上区分恶意软件。本发明实施例选择监控CPU(中央处理器)占用时间,固定时间段内短信发送和接收的数量、网络流量、内存占用量以及电池消耗量等运行过程中的参数值作为动态特征,具体描述如表1所示。
表1 动态特征属性
表1展示了本发明实施例选取的七种动态特征,选取原因如下:
系统资源方面,由于每个软件的运行都或多或少的需要涉及到Android系统资源,如CPU,电量,内存等,正常软件一般趋向于一个比较稳定的状态,而恶意软件因为会不定期触发恶意行为,因此必然造成CPU、内存使用率的意外升高以及电量的异常消耗。
用户信息方面,由于在发送短信方面用户没有规律可言,但是恶意软件可能会周期的触发某种隐私窃取的恶意行为,导致一定时间段内短信发送、接收数量暴增。
网络流量方面,有些恶意软件的DoS(Denial of Service拒绝服务攻击),制造了大流量的无用数据,造成被攻击设备的网络阻塞,因此监控一定时间段内系统内接收和发送的流量数据也能进一步反应出恶意软件的动态行为。
综上所述,本发明实施例共选择了以上7类动态特征。
请参考图8,图8是本发明实施例软件动态特征的提取方法的整体框架图:
动态特征提取主要借助DroidBox(沙盒工具)以及一些辅助监测模块来完成,通过监控Android软件在虚拟环境的运行过程中各种属性运行前后变化来达到特征提取的目的。动态特征提取的具体实现描述如下:
读取目标文件夹下待测APK的过程和静态特征提取流程中的方法相同,即按顺序调用os.path下的join,split,splitext方法即可获取到待测APK文件。
使用./startemu.sh<AVD name>(程序指令)指令启动Android虚拟机,加载并运行上一步得到APK文件。
通过./droidbox.sh<file.apk><duration in secs(optional)>(程序指令)调用DroidBox分析待测软件的APK文件。在动态特征获取方面,本文主要依靠DroidBox的日志文件来分析APK的动态行为并提取出行为字符串信息,同时本文也实现了一些辅助功能模块来采集系统文件的动态特征信息。
本文选取的动态特征主要由CPU,网络接收流量和网络发送流量,内存消耗量,电池消耗量,接收短信数量和发送短信数量等七大类别组成。每类特征提取的关键代码实现描述如下:
CPU:cat/proc/pid/stat目录下包含了每个Android应用运行过程中的CPU活动信息,每个软件在运行过程中都分配了一个pid(进程号),其中Utime(用户态运行时间),Stime(核心态运行时间),Cutime(子进程态用户运行时间),Cstime(子进程核心态运行时间),所述应用软件占用的总CPU时间则为上述四个数据之和。Andorid系统提供了一个获取CPU信息的类,即ProcessStats,通过调用该类中的update方法可以获得待测Android软件占用CPU的总时间。
内存消耗量:Android提供了ActivityManager(活动管理)类帮助开发人员获取系统内的进程信息,通过ActivityManager类的getProcessMemoryInfo(获取内存处理信息)方法可以获得每个应用的内存消耗量,该方法的参数为pid,即应用的进程号。
网络流量:TrafficStats(流量统计)类负责监控每个进程的流量信息。通过调用TrafficStats类下的getUidRxBytes(获取流量计数)方法就能获取到该软件到目前为止接收的字节数,调用该类下的getUidTxBytes(获取流量字节数)方法就能获取到该软件到目前为止发送的字节数,这两个方法的参数均为int(整型)类型的uid(用户号)。
电池消耗量:Android系统针对耗电量的计算提供了两个核心类,即查看应用各个部件运行时间的BatteryStatsImpl(电池状态实现)类以及查看部件电流数值的PowerProfile(电池电量)类,其中BatteryStats(电池状态)类下的processAppUsage(处理应用消耗电量方法)提供了统计软件耗电量的函数,该方法统计的是从上次拔掉设备后至今的软件总耗电量。因此在程序中调用该函数即可获得一定时间段内软件的耗电量。
短信:短信的接收和发送数量作为应用软件的动态特征被选取。系统接收短信时,会发出一条android.provider.Telephony.SMS_RECEIVED(短信监听)广播,实现一个计数器,接收短信数的变量定义为sms_count_receive,发送短信数的变量定义为sms_count_send。每当收到上述广播后,sms_count_receive的值加1。对于发送短信的监听则需要借助DroidBox的日志文件,通过日志文件中对应用行为的记录,可以统计出待测APK在一定时间内进行发送短信动作的次数。
将收集到的动态特征保存到DynamicResult.txt(动态特征结果信息)文档中作为原始动态特征。
静态特征和动态特征进行有效结合。将提取的5类静态特征和7类动态特征进行结合,组成混合特征向量集,进而对恶意软件的特征进行分析。
请参考图11,图11是本发明实施例与现有技术的提取结果的对比图。
本发明实施例通过实验验证本文提出的基于Android系统软件检测的多维特征提取方法的实际效果,通过与如表2所示的五种特征提取方案进行比较,进而验证本发明提出的特征提取方法的有效性。
表2 特征提取方案统计
表中“W Li”,“Drebin”和“Andromaly”为方案名称。根据表2中的数据,本文统计了各个方案提取的特征类别数量,统计结果如图11所示。本发明实施例共提取了12种类别的特征,包括5类静态特征以及7类动态特征,相比其他方案而言,本方案特征提取更全面,更能突出基于Android系统应用软件的特点。
综合上述实验,利用基于Android恶意软件检测的多维特征提取方法对恶意软件进行检测,不仅从多角度对软件行为进行了分析,而且扩大了特征选取的范围。实验结果显示本方案在检测准确率上高于特征提取种类少或杂的检测方案。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM光盘驱动器或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD光盘、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种软件检测特征的提取方法,其特征在于,所述方法包括:
获取待测应用软件的压缩包文件;
提取所述应用软件的静态特征;
提取所述应用软件的动态特征;
将所述的静态特征和动态特征结合,生成多维混合特征。
2.根据权利要求1所述的软件检测特征的提取方法,其特征在于,提取所述应用软件的静态特征,具体包括:
解压所述应用软件的压缩包文件,提取其中包含的特定文件;
反编译所述特定文件,得到反编译后的文件;
解析反编译后的文件,选取所述应用软件的静态特征,所述静态特征为提取的代表所述待测应用软件行为和特点的特征;
保存所述静态特征。
3.根据权利要求2所述的软件检测特征的提取方法,其特征在于,所述提取其中包含的特定文件,包括:程序全局配置文件和可执行文件;
所述静态特征为提取的代表所述应用软件行为和特点的特征,包括:权限特征,硬件特征,组件特征,意图特征,函数调用特征。
4.根据权利要求1所述的软件检测特征的提取方法,其特征在于,提取所述应用软件的动态特征,具体包括:
启动虚拟机,下载并运行所述应用软件;
根据所述应用软件在虚拟环境下运行过程中的动态行为,选取所述应用软件的动态特征;
保存所述动态特征。
5.根据权利要求4所述的基于软件检测特征的提取方法,其特征在于,根据所述应用软件在虚拟环境下运行过程中的动态行为,选取所述应用软件的动态特征,具体包括:
调用沙盒及辅助工具得到所述应用软件的动态特征记录;
分析所述动态特征记录,选择所述应用软件固定时间内的动态特征;
所述应用软件的动态特征包括:占用中央处理器的时间,通过网络接收总流量,通过网络发送总流量,电池消耗量,短信接收和发送数量。
6.一种软件检测特征的提取装置,其特征在于,所述装置包括:
获取单元,用于获取待测应用软件的压缩包文件;
第一提取单元,用于提取所述应用软件的静态特征;
第二提取单元,用于提取所述应用软件的动态特征;
结合单元,用于将所述的静态特征和动态特征结合,生成多维混合特征。
7.根据权利要求6所述的软件检测特征的提取装置,其特征在于,所述第一提取单元,具体包括:
解压模块,用于解压所述应用软件的压缩包文件,提取其中包含的特定文件;
反编译模块,用于反编译所述特定文件,得到反编译后的文件;
第一选取模块,用于从解析反编译后的文件,选取所述应用软件的静态特征,所述静态特征为提取的代表所述待测应用软件行为和特点的特征;
第一保存模块,用于保存所述静态特征。
8.根据权利要求7所述的软件检测特征的提取装置,其特征在于,所述提取其中包含的特定文件,包括:程序全局配置文件和可执行文件;
所述静态特征为提取的代表所述应用软件行为和特点的特征,包括:权限特征,硬件特征,组件特征,意图特征,函数调用特征。
9.根据权利要求6所述的软件检测特征的提取装置,其特征在于,所述第二提取单元,具体包括:
运行模块,用于启动虚拟机,下载并运行所述应用软件;
第二选取模块,用于根据所述应用软件在虚拟环境下运行过程中的动态行为,选取所述应用软件的动态特征;
第二保存模块,用于保存所述动态特征。
10.根据权利要求9所述的软件检测特征的提取装置,其特征在于,所述第二选取模块,具体包括:
沙盒子模块,用于调用沙盒及辅助工具得到所述应用软件的动态特征记录;
选择子模块,用于分析所述动态特征记录,选择所述应用软件固定时间内的动态特征;
所述应用软件的动态特征包括:占用中央处理器的时间,通过网络接收总流量,通过网络发送总流量,所这电池消耗量,短信接收和发送数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711476824.6A CN108345793A (zh) | 2017-12-29 | 2017-12-29 | 一种软件检测特征的提取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711476824.6A CN108345793A (zh) | 2017-12-29 | 2017-12-29 | 一种软件检测特征的提取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108345793A true CN108345793A (zh) | 2018-07-31 |
Family
ID=62962509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711476824.6A Pending CN108345793A (zh) | 2017-12-29 | 2017-12-29 | 一种软件检测特征的提取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345793A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543760A (zh) * | 2019-08-28 | 2019-12-06 | 南京市晨枭软件技术有限公司 | 一种软件管理系统及其软件保护方法 |
CN111310183A (zh) * | 2020-03-04 | 2020-06-19 | 深信服科技股份有限公司 | 一种软件风险识别方法、装置、设备、存储介质及系统 |
CN111382783A (zh) * | 2020-02-28 | 2020-07-07 | 广州大学 | 恶意软件识别方法、装置及存储介质 |
CN116432181A (zh) * | 2023-04-12 | 2023-07-14 | 上海计算机软件技术开发中心 | 一种安卓恶意软件检测方法、系统及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104519469A (zh) * | 2013-10-08 | 2015-04-15 | 华为技术有限公司 | 短信吸费行为检测方法、装置及终端 |
US20160350165A1 (en) * | 2015-05-28 | 2016-12-01 | Microsoft Technology Licensing, Llc | Detecting anomalous accounts using event logs |
CN107169351A (zh) * | 2017-05-11 | 2017-09-15 | 北京理工大学 | 结合动态行为特征的Android未知恶意软件检测方法 |
-
2017
- 2017-12-29 CN CN201711476824.6A patent/CN108345793A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104519469A (zh) * | 2013-10-08 | 2015-04-15 | 华为技术有限公司 | 短信吸费行为检测方法、装置及终端 |
US20160350165A1 (en) * | 2015-05-28 | 2016-12-01 | Microsoft Technology Licensing, Llc | Detecting anomalous accounts using event logs |
CN107169351A (zh) * | 2017-05-11 | 2017-09-15 | 北京理工大学 | 结合动态行为特征的Android未知恶意软件检测方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543760A (zh) * | 2019-08-28 | 2019-12-06 | 南京市晨枭软件技术有限公司 | 一种软件管理系统及其软件保护方法 |
CN111382783A (zh) * | 2020-02-28 | 2020-07-07 | 广州大学 | 恶意软件识别方法、装置及存储介质 |
CN111310183A (zh) * | 2020-03-04 | 2020-06-19 | 深信服科技股份有限公司 | 一种软件风险识别方法、装置、设备、存储介质及系统 |
CN116432181A (zh) * | 2023-04-12 | 2023-07-14 | 上海计算机软件技术开发中心 | 一种安卓恶意软件检测方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112383546B (zh) | 一种处理网络攻击行为的方法、相关设备及存储介质 | |
US9055093B2 (en) | Method, system and computer program product for detecting at least one of security threats and undesirable computer files | |
CN107465651A (zh) | 网络攻击检测方法及装置 | |
CN112685737A (zh) | 一种app的检测方法、装置、设备及存储介质 | |
CN108345793A (zh) | 一种软件检测特征的提取方法及装置 | |
CN112468520B (zh) | 一种数据检测方法、装置、设备及可读存储介质 | |
US20030135758A1 (en) | System and method for detecting network events | |
CN103607385A (zh) | 基于浏览器进行安全检测的方法和装置 | |
US20160044056A1 (en) | Methods, Systems, and Computer Program Products for Detecting Communication Anomalies in a Network Based on Overlap Between Sets of Users Communicating with Entities in the Network | |
CN100362805C (zh) | 网络色情图像和不良信息检测多功能管理系统 | |
US10296743B2 (en) | Method and device for constructing APK virus signature database and APK virus detection system | |
CN108090360B (zh) | 一种基于行为特征的安卓恶意应用分类方法及系统 | |
US9779250B1 (en) | Intelligent application wrapper | |
JP2016033690A (ja) | 不正侵入検知装置、不正侵入検知方法、不正侵入検知プログラム及び記録媒体 | |
CN108351941B (zh) | 分析装置、分析方法、以及计算机可读存储介质 | |
KR20210030361A (ko) | 컴퓨터 보안 사건을 보고하기 위한 시스템 및 방법 | |
Wu et al. | Detect repackaged android application based on http traffic similarity | |
CN115001789B (zh) | 一种失陷设备检测方法、装置、设备及介质 | |
CN110135162A (zh) | Webshell后门识别方法、装置、设备及存储介质 | |
Zhang et al. | A multiclass detection system for android malicious apps based on color image features | |
CN115552401A (zh) | 一种快应用检测方法、装置、设备及存储介质 | |
He et al. | On‐Device Detection of Repackaged Android Malware via Traffic Clustering | |
CN103093147B (zh) | 一种识别信息的方法和电子装置 | |
CN106528805A (zh) | 基于用户的移动互联网恶意程序url智能分析挖掘方法 | |
Da et al. | Detection of Android malware security on system calls |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180731 |
|
RJ01 | Rejection of invention patent application after publication |