一种可验证的安卓恶意软件检测系统及方法与流程

文档序号:14249839阅读:237来源:国知局
一种可验证的安卓恶意软件检测系统及方法与流程

本发明涉及安卓恶意代码检测技术领域,具体涉及一种可验证的安卓恶意软件检测系统及方法。



背景技术:

android恶意代码随着android应用市场的日益壮大呈井喷式发展的势头。由于android系统底层技术平台的开放性,允许第三方应用便捷开发,容易被不法分子通过对原生移动应用的文件名、ui界面等高度模仿后,植入恶意代码,篡改安卓应用程序app,并再次重新打包发布到移动应用市场。一旦用户安装了这些应用app,很有可能造成隐私泄露、恶意扣费、远程控制、购物欺诈等危害。

恶意软件的病毒检测服务平台是一个用户随时随地提交android程序数据流,并且得到扫描检测结果的平台。随着越来越多的用户使用病毒检测服务平台提交程序数据进行全方位的扫描检测,在提交的海量样本中,既有非恶意软件开发者的正常提交,也有专业的恶意代码开发者为了测试恶意软件规避能力的提交,极有可能利用病毒检测服务平台作为恶意软件传播之前的测试通道。恶意软件开发者提交的恶意软件,并非法修改平台返回的报告,或者故意屏蔽恶意代码的检测结果。若能在恶意软件得到传播之前,识别可疑的恶意应用提交者并发现新的恶意代码开发模型,作为新型恶意代码的变种被报警,将能大大减少恶意代码传播的危害。



技术实现要素:

本发明的目的是为了解决现有技术中的上述缺陷,提供一种可验证的安卓恶意软件检测系统及方法。

根据公开的实施例,本发明的第一方面公开了一种可验证的安卓恶意软件检测系统,所述的检测系统包括源数据初始化过滤器模块、可疑代码警报模块和恶意代码验证模块;

其中,所述的源数据初始化过滤器模块以提交者通过网站或者系统api提交的安卓应用源数据为输入,以分布式计算框架作数据清洗和重新封装,初步筛选出可疑的安卓应用,包括样本提交相关的结构信息及特征向量;

所述的可疑代码警报模块以筛选出的安卓应用数据及相关信息为输入,将所有的可疑安卓应用数据下载到分布式计算框架的训练分类器,执行深层次分析从可疑的的安卓应用数据中发现并定位出恶意代码,输出可疑代码的结果报告;

所述的恶意代码验证模块对可疑代码作详细分析,在分布式计算框架中为app安装包分析组件、app功能函数分析组件和视图相似性分析组件建立多个并行样本分析任务,对每个提交的数据流作安装包分析、静态相似性分析和动态相似性分析,根据验证规则计算结果。

进一步地,所述的恶意代码验证模块包括安装包分析器、静态分析器、动态分析器、验证器,其中,所述的安装包分析器、所述的静态分析器、所述的动态分析器分别同步提取每个样本的安装包信息、功能函数静态代码和动态行为信息,然后生成验证文件,将所有验证文件和中间分析结果收集并解析后提交到验证器中,以根据多个验证文件进行对可疑提交者的决策。

根据公开的实施例,本发明的第二发明公开了一种可验证的安卓恶意软件检测方法,所述的检测方法包括下列步骤:

s1、源数据初始化过滤器模块对源数据进行预过滤和特征生成,以提交者通过病毒检测服务平台的网站或者检测系统api接口提交的数据为输入预过滤处理后,进行数据重新封装,筛选后得到关于每个样本提交的相关结构信息,其中结构信息包括样本sampleid、时间戳、国家,生成用户userid,来自同一提交者的多次提交形成一系列的安卓应用数据流,并按提交的时间戳给予排序;

s2、可疑代码警报模块以源数据初始化过滤模块输入的数据流为输入,经过训练分类器输出可疑代码报告,将提交流实时分为可疑或正常,发现有新的数据流提交时,首先检查用户userid是否存在于用户及恶意特征数据库中,如果存在,则从该用户userid加载所有先前提交的数据流记录,然后计算它们的特征向量,训练分类器将来自每个用户userid提交数据的所有字段计算出数据的特征向量,并从提交数据的字段中提取一组派生特征;

s3、在可疑代码警报模块将提交数据流标记为可疑后,恶意代码验证模块分析来自可疑用户userid的所有样本文件,部署安装包分析器、静态分析器、动态分析器提取每个样本的安装包信息、功能函数静态代码和动态行为信息进行恶意代码行为分析;

s4、解析多个验证属性,对可疑代码验证属性进行计算,生成各种验证文件,收集验证文件和中间分析结果,最终提交到验证器中,以根据多个验证文件进行决策,依据样本相似性对可疑代码分组,并形成最终验证的结果。

进一步地,所述的步骤s4包括:

s401、设安装包分析结果集合p={p1,p2,p3,p4},且v(pm)∈{0,1},为所述的安装包分析器及其验证属性设定规则:

安卓应用安装包分析器包括4个验收属性,

验证属性p1:安卓应用安装包apk中的所有文件的时间戳与提交的时间戳之间的方差,当安卓应用不被病毒检测平台测试通过,开发人员需要时间去修改和分发新的应用,即属性p1值v(p1)=0,如果所有文件的时间戳与提交的时间戳小于一阈值,那么属性p1的值v(p1)=1;

验证属性p2:提交的样本应用时间戳之间的方差,当用户id提交的样本应用具有许多相同的时间戳时,即恶意应用开发者很有可能同时生产不同版本的安卓应用,则验证属性v(p2)=1,否则属性v(p2)=0;

验证属性p3:安装包apk中的所有文件的时间戳方差,当安卓安装包apk中的所有文件时间戳完全相同时,则验证属性v(p3)=1,否则属性v(p3)=0;

验证属性p4:安卓应用使用的签名证书分析比较,如果提交的数据流中一组安卓应用使用相同的签名证书,则验证属性v(p4)=1,如果不同的签名证书,则属性v(p4)=0;

四个验证属性中,只要存在一个验证属性值为1,那么该安装包分析器就判断提交的数据流存在可疑的恶意代码;

s402、设静态分析结果集合q={q1,q2},且v(qn)∈{0,1},为所述的静态分析器及其验证属性设定规则:静态分析器应用两个验证办法并生成验证属性,首先用视图图形同构方法来计算安卓应用ui结构的相似性,生成验证属性q1,如果提交的应用样本数据流之间的图形相似度系数大于或等于设定的阈值ξ,即可判断提交数据流的一组应用具有类似的ui结构,则验证属性v(q1)=1,否则属性v(q1)=0,然后使用静态分析工具分析控制流图生成验证属性q2,如果提交流中的一组安卓应用拥有类似的控制流,相似度系数大于或等于阈值ξ,则验证属性v(q2)=1,反之,若安卓应用的程序控制流比较结果低于阈值ξ,则验证属性v(q2)=0;

s403、设动态分析结果集合r={r0},v(ro)∈{0,1},为所述的动态分析器及其验证属性设定规则:基于动态分析工具分析各种可疑的安卓api,借助系统调用和代码加载行为等动态特征,以此计算安卓应用样本之间的动态行为相似性,生成验证属性ro,如果提交的数据流的一对安卓应用样本具有动态行为相似性,相似性大于或等于阈值ξ,则验证属性v(ro)=1,应用样本之间的动态行为相似度低于阈值ξ,则验证属性v(ro)=0,若动态分析器的两个验证属性中,只要存在一个验证属性值为1,那么该动态分析器就判断提交的数据流存在可疑的恶意代码;

s404、在提交的数据流生成所有验证属性后,基于它们做出验证结果,验证结果m由以下公式计算:

m::=p×q×r={(pm,qn,ro)|pm∈p∧qn∈q∧ro∈r}

每个提交的数据流都经过三种不同分析器给予验证,在验证属性之间的计算关系使用或,即:v(p)=v(p1)∨v(p2)∨v(p3)∨v(p4),v(q)=v(q1)∨v(q2),v(r)=v(ro),因此只要分析器内的任何一个规则被验证,提交的样本数据流将被暂定为可疑的恶意代码,而安装包分析器,静态分析器,动态分析器三种不同分析器之间是与关系,也就是说三种分析器同时确认样本应用存在恶意代码后,用户userid被确认为安卓恶意应用开发者,其提交的数据流完整确认存在恶意代码。

进一步地,所述的样本sampleid由检测根据样本的配置文件自动生成。

进一步地,所述的用户userid首先由检测系统为提交者生成唯一身份用户userid,如果检测系统无法生成用户userid,利用病毒检测服务平台导出的ip地址用来生成用户id,否则,将根据用户帐户配置文件生成用户userid。

进一步地,用户提交的安卓应用数据流中,每次提交样本由用户userid、样本sampleid和提交时间戳进行唯一标识。

进一步地,所述的步骤s2中根据每个用户userid提交的数据流计算其特征向量,然后训练分类器基于整个数据流的特征向量来判断用户userid的可疑性。

本发明相对于现有技术具有如下的优点及效果:

1、本发明不再像传统的检测方法和工具一样通过分析代码的序列特征或者行为特征作检测,而是基于多种检测分析器,通过安装包分析、图形相似度匹配及动态检测等多种方法进行异常检测和分类检测,提高了安卓恶意代码检测和分类的准确性。

2、本发明从恶意软件制造者角度出发,自动检测恶意应用及其代码,综合验证,能对新型恶意代码作出快速检测报告和分类,可追查恶意软件制造者,有效应对恶意软件及其代码的演变、传播。

附图说明

图1是本发明公开的一种可验证的安卓恶意软件检测系统结构图;

图2是本发明公开的一种可验证的安卓恶意软件检测方法流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

如图1所示,本实施例公开了一种可验证的安卓恶意软件检测系统,包括安卓应用源数据初始化过滤器模块、可疑代码警报模块和恶意代码验证模块。

源数据初始化过滤器模块:以提交者通过网站或者系统api提交的数据为输入,作数据清洗和重新封装,初步筛选出可疑的安卓应用,包含样本提交相关的结构信息及特征向量,但不包括详细的程序代码分析。

可疑代码警报模块:以筛选出的安卓应用数据及相关信息为输入,将所有的可疑安卓应用数据下载到训练分类器,执行更深层次分析从这些可疑的数据中发现并定位出恶意代码,输出可疑代码的结果报告。

恶意代码验证模块:对可疑代码作详细分析,并行对每个提交的数据流作安装包分析、静态相似性分析和动态相似性分析,根据验证规则计算结果。

实施例二

如图2所示,本实施例公开了一种可验证的安卓恶意软件检测方法,包括以下步骤:

s1、对源数据进行预过滤和特征生成,以提交者通过病毒检测服务平台的网站或者检测系统api接口提交的数据为输入预过滤处理后,进行数据重新封装,筛选后得到关于每个样本提交的相关结构信息(如样本sampleid、时间戳、国家等),但不包括代码分析细节,样本sampleid由检测根据样本的配置文件自动生成。检测系统为提交者生成唯一身份用户userid,如果检测系统无法生成用户userid,利用病毒检测服务平台导出的ip地址用来生成用户id。否则,将根据更详细的用户帐户配置文件生成用户userid。来自同一提交者的多次提交形成一系列的安卓应用数据流,并按提交的时间给予排序。用户提交的安卓应用数据流中,有可能是同一样本的多次提交,每次提交样本由(userid,sampleid,提交时间戳)唯一地标识。

s2、以源数据初始化过滤器输入的数据流为输入,经过训练分类器输出可疑代码报告,将提交流实时分为可疑或正常。发现有新的数据流提交时,首先检查用户userid是否存在于用户及恶意特征数据库中,如果存在,则从该用户userid加载所有先前提交的数据流记录,然后计算它们的特征向量(fv)。分类器将来自每个用户userid提交数据的所有字段计算出数据的特征向量,并从提交数据的字段中提取一组派生特征。每个用户userid提交的数据流计算其特征向量。分类器将基于整个数据流的特征向量而不是任何单个数据的特征来判断用户userid的可疑性。

s3、在可疑代码警报模块将提交数据流标记为可疑后,分析来自可疑用户userid的所有样本文件。部署三类分析器(安装包分析器、静态分析器、动态分析器)提取每个样本的安装包信息、功能函数静态代码和动态行为信息进行恶意代码行为分析。

s4、解析多个验证属性,对可疑代码验证属性进行计算,生成各种验证文件。收集验证文件和中间分析结果,最终提交到检测系统的验证器中,以根据多个验证文件进行决策。对样本相似性对可疑代码分组,并形成最终验证的结果。

实施例三

本实施例公开的一种可验证的安卓恶意软件检测系统根据提交的安卓应用配置信息和动态生成的随机值来生成唯一的哈希值,作为提交者的用户userid。为从病毒检测服务平台上海量的数据流式提交中发现恶意代码,用分布式计算框架解析每个提交者的元数据和特征生成,并在用户及恶意特征数据库中生成新的特征以便更新数据库中旧特征集。在分布式计算框架中训练分类器,当使用新的特征集处理新提交的样本时,在特征集上运行新训练的模型并触发可疑代码警报模块,可疑代码警报模块发出警报后,在分布式计算框架中为安装包分析、方法分析和视图相似性分析等多个分析组件建立多个并行样本分析任务。筛选出的可疑安卓应用数据流,在对每个可疑数据流进行所有组件的静态相似性分析和动态相似性分析后,将所有分布节点的结果聚合到单个节点以根据验证规则计算验证结果。

实施例四

本实施例公开了一种可验证的安卓恶意软件检测方法,具体包括以下步骤:

s1、对源数据进行预过滤和特征生成,提交的源数据进行过滤得到关于每个样本提交的相关信息(如样本sampleid、时间戳、国家等),但不包括代码分析细节,样本sampleid由检测根据样本的配置文件自动生成。检测系统为提交者生成唯一身份用户userid,如果检测系统无法生成用户userid,利用病毒检测服务平台导出的ip地址用来生成用户id。否则,将根据更详细的用户帐户配置文件生成用户userid。来自同一提交者的多次提交形成一系列的安卓应用数据流,并按提交的时间给予排序。用户提交的安卓应用数据流中,有可能是同一样本的多次提交,每次提交样本由(userid,sampleid,提交时间戳)唯一地标识。

s2、经过检测系统的轻量级分类器输出数据流的可疑代码报告,将提交的数据流文件实时分为可疑或正常,可疑则报警。发现有新的数据提交时,首先检查用户userid是否存在于用户及恶意特征数据库中,如果存在,则从该用户userid加载所有先前提交的数据流记录,然后计算它们的特征向量(fv)。分类器将来自每个用户userid提交数据的所有字段计算出数据的特征向量,并从提交数据的字段中提取一组派生特征。每个用户userid提交的数据流计算其特征向量。分类器将基于整个数据流的特征向量而不是任何单个数据的特征来判断用户userid的可疑性。

s3、分析来自步骤s2的所有可疑样本。当用户提交的数据流中大多数样本的提交时间晚于病毒检测服务平台上首次出现的时间戳时,即此用户提交的大多数样本在此之前已经被其他用户提交到病毒检测服务平台上,记录为重复提交,已被检测完毕并标记这个数据流不是可疑的恶意代码。此外,某些安卓应用构建工具在编译期间使用自动命名方案,如果提交的数据流中,某样本的文件名包含编译器生成的可疑关键字(例如,text,debug,signed,aligned等),则该样本被认为是可疑的。如果提交的数据流中包含可疑标签,比如网络标记via-tor,那么检测系统标记它是可疑的。由于恶意软件编写者通常专注于一小组文件类型(例如,androidapk,dex或elf),如果提交的数据流包含许多不同类型的可执行文件样本或不同的文件类型样本,所以检测系统标记它们为正常。可疑代码警报模块最后标记出可疑的用户及可疑的恶意样本。

s4、在可疑代码警报模块将提交数据流标记为可疑后,分析来自可疑用户userid的所有样本文件。检测系统部署三种分析器提取每个样本的安装包信息、功能函数静态代码和动态行为信息,然后生成各种验证文件。然后,所有这些验证文件和中间分析结果被收集,解析并最终提交到可疑提交者验证器中,以根据多个验证文件进行决策。

s401、设安装包分析结果集合p={p1,p2,p3,p4},且v(pm)∈{0,1},为所述的恶意代码验证模块中的安装包分析器及其验证属性设定规则:安卓应用安装包分析器包括4个验收属性,验证属性p1:安卓应用安装包apk中的所有文件的时间戳与提交的时间戳之间的方差。正常情况下,安卓应用不被病毒检测平台测试通过,一般的开发人员需要时间去修改和分发新的应用,即属性p1值为0。如果所有文件的时间戳与提交的时间戳非常接近,那么属性p1的值v(p1)=1,也就是说这是非常有利的证据说明专业的恶意应用开发者才会如此迅速地改变文件并提交到检测平台多次测试。验证属性p2:提交的样本应用时间戳之间的方差。正常情况下,用户开发不同版本的安卓应用需要时间,向检测平台提交测试时间截然不同。当用户id提交的样本应用具有许多相同的时间戳时,即恶意应用开发者很有可能同时生产不同版本的安卓应用,则验证属性v(p2)=1,否则属性v(p2)=0。验证属性p3:安装包apk中的所有文件的时间戳方差。当安卓安装包apk中的所有文件时间戳完全相同时,则验证属性v(p3)=1,否则属性v(p3)=0。验证属性p4:安卓应用使用的签名证书分析比较,如果提交的数据流中一组安卓应用使用相同的签名证书,则验证属性v(p4)=1,如果不同的签名证书,则属性v(p4)=0。四个验证属性中,只要存在一个验证属性值为1,那么该安装分析器就判断提交的数据流存在可疑的恶意代码。

s402、设静态分析结果集合q={q1,q2},且v(qn)∈{0,1},为所述的恶意代码验证模块中的静态分析器及其验证属性设定规则:静态分析器应用两个验证办法并生成验证属性,首先用视图图形同构方法来计算安卓应用ui结构的相似性,生成验证属性q1。如果提交的应用样本数据流之间的图形相似度系数大于或等于设定的阈值ξ,即可判断提交数据流的一组应用具有类似的ui结构,则验证属性v(q1)=1,否则属性v(q1)=0。然后并使用静态分析工具分析控制流图生成验证属性q2,如果提交流中的一组安卓应用拥有类似的控制流,相似度系数大于或等于阈值ξ,则验证属性v(q2)=1;反之,若安卓应用的程序控制流比较结果低于阈值ξ,则则验证属性v(q2)=0。

s403、所述的恶意代码验证模块还设置了动态分析器,设动态分析结果集合r={r0},v(ro)∈{0,1},为所述的恶意代码验证模块中的动态分析器及其验证属性设定规则:基于动态分析工具分析各种可疑的安卓api,借助系统调用和代码加载行为等动态特征,以此计算安卓应用样本之间的动态行为相似性,生成验证属性ro。如果提交的数据流的一对安卓应用样本具有动态行为相似性,相似性大于或等于阈值ξ,则验证属性v(ro)=1;应用样本之间的动态行为相似度低于阈值ξ,则验证属性v(ro)=0。若动态分析器的两个验证属性中,只要存在一个验证属性值为1,那么该动态分析器就判断提交的数据流存在可疑的恶意代码。

s404、在为提交流生成所有验证属性后,可以基于它们做出验证结果。验证结果m由以下公式计算。

m::=p×q×r={(pm,qn,ro)|pm∈p∧qn∈q∧ro∈r}

每个提交的数据流都经过三种不同分析器给予验证,在验证属性之间的计算关系使用或(而不是与),即:v(p)=v(p1)∨v(p2)∨v(p3)∨v(p4),v(q)=v(q1)∨v(q2),v(r)=v(ro)。因此只要分析器内的任何一个规则被验证,提交的样本数据流将被暂定为可疑的恶意代码。而安装包分析器,静态分析器,动态分析器三种不同分析器之间是与关系,也就是说三种分析器同时确认样本应用存在恶意代码后,用户userid可被确认为安卓恶意应用开发者,其提交的数据流完整确认存在恶意代码。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1