一种针对应用恶意代码检测与定位的方法与流程

文档序号:22750608发布日期:2020-10-31 09:44阅读:127来源:国知局
一种针对应用恶意代码检测与定位的方法与流程

本说明书一个或多个实施例涉及应用安全领域,尤其涉及一种针对应用恶意代码检测与定位的方法。



背景技术:

随着网络的普及,计算机技术的日益进步,如今计算机信息安全面临着很大的威胁,恶意代码是其中主要的攻击手段,数目不断增长,技术不断发展恶意代码给人们的生活带来了很多困扰,也导致了个人及企业的经济损失,甚至威胁到国家安全,随着恶意代码的检测技术和反检测技术的不断对抗发展,日益增多的恶意代码给分析人员带来巨大的压力和严峻的挑战。

国内外的应用安全研究人员针对android应用中的安全问题进行研究,并提出了多种检测方法,包括flowdroid、edgeminer、taintdroid和mamadroid等,flowdroid和edgeminer可以很好地检测应用是否存在敏感数据泄露问题,但是其检测的敏感信息传递路径的全集,无法有效判断是否存在恶意代码段对敏感信息进行的操作,需要人工进行后续分析和验证。同时,当前恶意应用为了隐藏恶意行为,经常采用代码分离及动态代码加载技术,从云端动态下发执行恶意代码,flowdroid、edgeminer、mamadroid均无法针对这种情况进行有效检测,taintdroid可以动态追踪隐私信息,但同样无法解决恶意代码段的定位问题,只能对隐私泄露进行初步判断。

现有技术对于恶意应用检测及应用隐私泄露问题都有很大帮助,但是从恶意代码定位角度,还需要人工进行后续分析、定位和验证,工作量大且困难。



技术实现要素:

有鉴于此,本说明书一个或多个实施例的目的在于提出一种针对应用恶意代码检测与定位的方法,以解决现有技术对于恶意应用检测及定位中,不能自动定位恶意代码,后续人工工作量大且困难的问题。

基于上述目的,本说明书一个或多个实施例提供了一种针对应用恶意代码检测与定位的方法,包括:

通过对应用执行产生的流量的特征分析进行异常流量检测;

对检测到的异常流量的特征进行应用行为分析,找出对应的可疑恶意代码并进行标记及分类;

根据对所述可疑恶意代码的分类和各标记点间执行结果之间的关联,对所述恶意代码进行定位。

优选地,对应用进行异常流量检测包括:通过包内容分析、包头分析和异常ip检测的方式对异常流量进行检测,区分出异常流量。

优选地,对应用进行异常流量检测还包括:使用白名单对应用运行时的流量进行识别和筛选,筛除特殊情况的正常流量,区分出异常流量。

优选地,对所述恶意代码进行定位还包括:根据所述可疑恶意代码的恶意行为与特定应用程序编程接口调用的关系,对所述恶意代码进行定位。

优选地,对检测到的异常流量的特征进行应用行为分析,找出对应的可疑恶意代码并进行标记及分类,包括:通过数据库聚类缩小恶意代码的标记范围,精确标记可疑恶意代码并对所述可疑恶意代码分类。

优选地,对所述可疑恶意代码进行分类,其类型包括:隐私窃取类恶意代码、远程控制类恶意代码和恶意传播类恶意代码。

优选地,对所述可疑恶意代码进行标记,还包括:对所述可疑恶意代码进行标记时,记录所述可疑恶意代码的位置并生成日志。

优选地,根据对所述可疑恶意代码的分类和各标记点间执行结果之间的关联,对所述恶意代码进行定位之后,还包括:配合程序控制流图进行恶意代码段及运行路径的定位,提取出所述恶意代码的完整执行逻辑。

优选地,配合程序控制流图进行恶意代码段及运行路径的定位,提取出所述恶意代码的完整执行逻辑,还包括:对基础的所述程序控制流图加以修改、添加对多线程和各组件间通信产生的控制流图路径的补充。

本说明书一个或多个实施例还提供了一种针对应用恶意代码检测与定位的装置,其特征在于,包括:

异常流量检测模块,用于通过对应用执行产生的流量的特征分析进行异常流量检测;

应用行为分析模块,对检测到的异常流量的特征进行应用行为分析,找出对应的可疑恶意代码并进行标记及分类;

恶意代码定位模块,根据对所述可疑恶意代码的分类和各标记点间执行结果之间的关联,对所述恶意代码进行定位。

从上面所述可以看出,本说明书一个或多个实施例提供的针对应用恶意代码检测与定位的方法,针对恶意应用中具有隐私窃取、远程控制、恶意传播行为的存在异常流量信息的应用,提出一种基于流量特征分析及标记代码执行的恶意代码定位方法;根据特征分析结果对可疑代码段进行自动标记,标记位置在应用运行时输出运行时信息,根据该信息进行恶意代码段的定位。本申请所提供的方法有效弥补了当前各类检测方法的不足,以异常流量行为为依据,定位恶意代码。解决了现有技术对于恶意应用检测及应用中,不能自动定位恶意代码,后续人工工作量大且困难的问题。

附图说明

为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书一个或多个实施例提供的一种针对应用恶意代码检测与定位的方法流程图;

图2为本说明书一个或多个实施例提供的一种针对应用恶意代码检测与定位的方法流程图;

图3为本说明书一个或多个实施例提供的一种针对应用恶意代码检测与定位的装置构成示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。

需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

请参考图1,图1为本实施例所提供的一种针对应用恶意代码检测与定位的方法流程图;

步骤s1:通过对应用执行产生的流量的特征分析进行异常流量检测;一般情况下,应用运行时产生的流量可分为应用程序与服务器通信完成功能实现的正常流量、应用程序中第三方sdk功能实现所产生的正常流量、移动设备与厂商之间产生的正常流量、恶意代码段产生的异常流量。异常流量检测及特征分析方法需对上述流量进行分析,并对正常流量及异常流量进行区分,再对异常流量进行特征分析,作为代码标记的依据。

步骤s2:对检测到的异常流量的特征进行应用行为分析,找出对应的可疑恶意代码并进行标记及分类;

通常情况下,各类恶意应用产生的异常流量具有一定的特征,典型的恶意代码类型包括隐私窃取类恶意代码、远程控制类恶意代码和恶意传播类恶意代码;其中,隐私窃取类应用的数据包中包含手机设备敏感信息及用户隐私信息;远程控制类通常会与远程控制服务器(即c&c服务器)进行通信,以数据或文件的形式获取远程控制指令;恶意传播类应用会直接或间接传播或下载恶意程序,上述特征也可作为异常流量的检测依据。在静态检测过程中,当检测到可疑的恶意代码时,便对该恶意代码进行标记,通常恶意代码只是一段,通过对恶意代码所在类的相关调用路径上下文中进行标记插入,用以保证后续对恶意代码调用过程及代码溯源的分析。

分类方法不限于上述例出的几类,也可以依据其他的分类方法,例如:不感染的依附性恶意代码、不感染的独立性恶意代码、可感染的依附性恶意代码和可感染的独立性恶意代码,等等。

步骤s3:根据对所述可疑恶意代码的分类和各标记点间执行结果之间的关联,对所述恶意代码进行定位;

上述步骤中,对可疑的恶意代码进行标记后观察应用的运行情况,初步确定恶意代码行为,并根据恶意行为进一步推断和确定恶意代码存在的代码段。

上述实施例提供的针对应用恶意代码检测与定位的方法,针对恶意应用中具有隐私窃取、远程控制、恶意传播行为的存在异常流量信息的应用,提出一种基于流量特征分析及标记代码执行的恶意代码定位方法;根据特征分析结果对可疑代码段进行自动标记,标记位置在应用运行时输出运行时信息,根据该信息进行恶意代码段的定位。上述实施例以异常流量行为为依据,定位恶意代码,解决了现有技术对于恶意应用检测及应用中,不能自动定位恶意代码,后续人工工作量大且困难的问题。

请参考图2,图2为本实施例所提供的一种针对应用恶意代码检测与定位的方法流程图;

在另一些情况中,对于网络通信存在数据加密等情况,可以使用白名单方式对正常流量进行识别和筛选,以此识别异常流量。

然后,对检测到的异常流量的特征进行应用行为分析,并将对应的可疑恶意代码进行初步标记;该步骤针对应用异常流量特征进行应用行为分析,并根据应用行为推断可能存在的代码段,例如通过异常流量中的“tel“字段判断恶意代码通过调用telephonymanager类的getlinenumber方法获取用户手机号并发送给服务器,代码标记根据定位上述具体类及方法实现进行可疑代码段的查找。由于存在应用异常流量加密无法获取有效特征的情况,同时需减小代码标记范围,需设计方法将目标待标记代码与正常第三方sdk等代码区分开,可通过第三方库聚类及sdkurl静态提取等方法进行代码段的区分,缩小标记范围。

代码标记定位到具体可疑代码段后,对关键函数实现前后进行静态插桩,使其运行时输出关键信息如函数调用栈信息、应用上下文信息等作为定位恶意代码段的依据。

由于代码标记数量较大,为了更有效地分析并提取恶意代码运行路径,可对代码标记及输出内容根据功能及代码运行位置进行分级标识;以窃取手机号并发送给远程服务器的过程为例,恶意代码执行相关apigetlinenumber()方法获取手机号码,将其以某种格式封装成网络流量包,调用网络通信api(例如httpurlconnection)发送;由于getlinenumber()为隐私数据源,httpurlconnection为数据出口,因此getlinenumber()位置代码标记等级高于httpurlconnection,通过这种方法可以对代码标记进行有效区分,同时有利于形成恶意代码运行路径。

最后,对所述初步标记的恶意代码进行细化分析,并对所述恶意代码进行定位。本步骤,初步通过对代码标记进行功能分类,结合各标记点间及对应输出信息的关联关系,配合程序控制流图(icfg)进行恶意代码段及运行路径的定位。其中,程序控制流图的生成可以在soot工具基础上加以修改,添加对多线程、组件间通信产生的控制流图路径补充。

此外,由于恶意代码段可能存在多个位置,并实现不同功能,为了进一步理解恶意代码行为逻辑,需探究各代码段之间的关联关系,提取出完整的恶意代码执行逻辑,还可对定位恶意代码的准确性进行检测。本步骤,在标记完指定位置后再次运行目标应用,获取代码标记位置输出的运行时上下文信息及函数调用堆栈信息,结合程序运行流程图(cfg)及代码标记的关联性分析,重构恶意代码执行逻辑,对应用的恶意行为进行研判,上述步骤对进行恶意应用行为分析及恶意应用衍化分析的研究工作,具有较为重要的意义。

本实施例,主要针对于移动应用恶意代码检测与定位,尤其是android端的移动应用,但本申请所提供的技术方案包括且不限定于android应用及其移动端。

请参考图3,在本申请的一个实施例中,提供了一种针对于移动应用恶意代码检测与定位的装置,其实施与方法权利要求相同,此处不再赘述;在本申请提供的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。

本说明书的上述实施例,针对恶意应用中具有隐私窃取、远程控制、恶意传播行为的存在异常流量信息的应用,提出一种基于流量特征分析及标记代码执行的恶意代码定位方法;根据特征分析结果对可疑代码段进行自动标记,标记位置在应用运行时输出运行时信息,根据该信息进行恶意代码段的定位。本申请所提供的方法有效弥补了当前各类检测方法的不足,以异常流量行为为依据,定位恶意代码。解决了现有技术对于恶意应用检测及应用中,不能自动定位恶意代码,后续人工工作量大且困难的问题。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。

本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

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