CN105653946A - 基于组合事件行为触发的Android恶意行为检测***及其检测方法 - Google Patents
基于组合事件行为触发的Android恶意行为检测***及其检测方法 Download PDFInfo
- Publication number
- CN105653946A CN105653946A CN201610130822.0A CN201610130822A CN105653946A CN 105653946 A CN105653946 A CN 105653946A CN 201610130822 A CN201610130822 A CN 201610130822A CN 105653946 A CN105653946 A CN 105653946A
- Authority
- CN
- China
- Prior art keywords
- interface
- behavior
- malicious act
- application
- analysis
- 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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于组合事件行为触发的Android恶意行为检测***及其检测方法。多层行为监控模块捕获应用程序运行时的行为日志;行为分析模块通过函数调用关系和函数参数特征识别应用程序中的恶意行为,同时,行为分析模块会生成应用行为分析报告;DroidRunner行为触发模型根据对界面调度方式和已知恶意行为触发条件的分析设计了多组合均衡遍历算法和特殊事件触发库,完成对应用程序中恶意行为的动态检测。本发明其可覆盖应用程序运行期间绝大部分的函数调用,对应用程序中的敏感行为触发效果显著。达到高效、稳定触发应用程序中可能存在的恶意行为的效果。
Description
技术领域
本发明属于AMBDS恶意行为检测领域,尤其涉及基于组合事件行为触发的Android恶意行为检测***及其检测方法。
背景技术
伴随着Android平台的迅猛发展,Android平台的安全形势也愈加严峻。针对Android平台的恶意软件数量近几年呈爆发式增长。Android平台开放源码,导致恶意应用开发者更容易找出平台的安全缺陷开发恶意软件。当前,虽然Android平台已存在多类杀毒软件,但是出于设备性能和用户体验考虑,其功能受到很大限制,对未知病毒的检测基本无能为力。这些恶意软件主要的传播途径是第三方应用市场及网络下载。因此,在传播环节采用对应用程序进行安全性审核的方式可实现对恶意应用程序的拦截,有效地遏制恶意软件的传播,更好的保护Android平台移动设备的安全。同时,在该环节开发的检测工具不用受到设备性能和用户体验的限制。
Android平台自诞生至今只有短短七年的时间,国内外对Android平台恶意应用程序检测方向的研究均处于起步阶段,对于下载或上传的应用程序是否具有恶意行为还缺乏有效的检测手段。虽然,当前Android平台恶意应用检测方法已经取得了一些研究成果。但是,这些成果存在行为触发方式过于单一、行为监控不全面、检测结果简单等问题。研究如何更全面的提取应用程序运行期间的行为信息对于该领域具有重要的意义。AMBDS***中的DroidRunner行为触发模型设计了多组合均衡遍历算法、特殊事件触发库来提升对应用程序内部路径和敏感行为的覆盖率,达到更高效的触发应用程序恶意行为的效果。
发明内容
本发明的目的是提供一种改进了DroidRunner行为触发模型的,基于组合事件行为触发的Android恶意行为检测***。本发明的目的包括提供一种效率高、准确率高的,基于组合事件行为触发的Android恶意行为检测方法。
基于组合事件行为触发的Android恶意行为检测***,包括多层行为监测模块、行为分析模块和DroidRunner行为触发模型;
多层行为监控模块通过修改Android源码、植入网络监控工具实现对Java调用、本地调用和网络连接的监控,捕获应用程序运行时的行为日志;
行为分析模块通过函数调用关系和函数参数特征识别应用程序中的恶意行为,同时,行为分析模块会生成应用行为分析报告,用户通过应用行为分析报告识别检测结果中误报或漏报的恶意行为,并修正或扩展恶意行为特征库;
DroidRunner行为触发模型根据对界面调度方式和已知恶意行为触发条件的分析设计了多组合均衡遍历算法和特殊事件触发库,完成对应用程序中恶意行为的动态检测。
本发明基于组合事件行为触发的Android恶意行为检测***,还可以包括:
1、DroidRunner行为触发模型包括预处理组件、主控组件、界面分析组件、界面控制组件、特殊事件触发组件和特殊事件触发库组件;
预处理组件,分析APK并获取其基本信息,为其它组件的运行提供基础数据;
界面分析组件,获取当前Activity中显示的所有可操作控件的属性,并生成控件序列,为界面控制组件提供基础数据;
界面控制组件,模拟用户对应用的操作,操作根据多组合均衡遍历算法调度生成;
特殊事件触发组件,基于对由注册广播接受器和检测运行环境类事件触发执行应用程序恶意行为的分析,设计了命令行实现、脚本实现和预装实现方式三种方式来实现这些事件的自动化触发;
特殊事件触发库组件,存储当前已发现恶意应用恶意行为的触发事件及实现方法;
主控组件,负责通过ADB与设备之间进行通讯与控制,并在界面分析组件、界面控制组件、特殊事件触发组件的支撑下,实现对应用的自动化操作。
基于组合事件行为触发的Android恶意行为检测方法,包括以下步骤,
步骤一:多层行为监控模块通过修改Android源码、植入网络监控工具实现对Java调用、本地调用和网络连接的监控,捕获应用程序运行时的行为日志;
步骤二:行为分析模块通过函数调用关系和函数参数特征识别应用程序中的恶意行为,同时,行为分析模块会生成应用行为分析报告;
步骤三:根据应用行为分析和DroidRunner行为触发模型完成对恶意行为的动态检测。
本发明基于组合事件行为触发的Android恶意行为检测方法,还可以包括:
1、根据应用行为分析和DroidRunner行为触发模型完成对恶意行为的动态检测的方法为:
步骤一:通过预处理组件完成APK的分析并取其基本信息;利用apktool工具反编译APK获取Androidmanifest.xml文件,通过分析Androidmanifest.xml文件获取APK的基本信息,包括APK的包名称、MainActivity名称、4种组件信息、申请的权限;
步骤二:通过分析组件获取当前Activity中显示的所有可操作控件的绝对坐标、控件类型、控件可操作指令属性,生成控件的操作序列,为界面控制组件提供基础数据;
步骤三:利用步骤二获得的数据信息模拟用户对应用的操作,操作根据多组合均衡遍历算法调度生成;
步骤四:根据预处理组件获取的待检测应用的权限及组件信息,从特殊事件触发库中抽取符合条件的特殊事件列表,在主控组件的控制下在APP运行期间随机触发这些特殊事件;
步骤五:通过ADB与设备之间进行通讯与控制,并在界面分析组件、界面控制组件、特殊事件触发组件的支撑下,完成自动检测。
2、根据多组合均衡遍历算法调度生成生成操作的过程为:
(1)将Android应用界面间跳转关系转化为一个有向赋权图:
G表示界面跳转关系的有向图;
L表示应用所有界面的集合,集合中每个节点表示一个界面;
W表示界面权值的集合,权值表示需要调度到该界面执行操作的需求程度,该值越大表示调度到该界面进行操作的需求越迫切;
E表示界面间跳转的边的集合,存储的是导致界面跳转的操作;
(2)如果即发现一个新的界面节点Li,将界面分析组件获取的当前界面的所有操作置于Li.unKnownList表中,计算界面权值Li.weight,转到下一步;如果Li∈L,转到下一步;
其中xk表示Li.notJumpList列表中k个操作被执行的次数,每一个界面节点均维持了3个列表:unKnowList、notJumpList和jumpList;unKnowList列表用于存储不确定是否会导致界面跳转的控件操作,在进入一个新的界面时,所有的控件操作均存储在这个列表中;notJumpList列表用于存储不会导致界面跳转的操作,初始值为空;jumpList列表用于存储会发生界面跳转的操作,初始值为空;
(3)如果len(Li.unKnownList)≠0,在Li.notJumpList列表中,在Li.unKnownList列表中随机选择执行一个操作xk,xk.count自加1,计算界面权值Li.weight;如果界面没有发生变化,则将操作xk从Li.unKnownList列表移动到Li.notJumpList列表中,跳到步骤(3);如果界面发生跳转,新的界面为Lj,则将操作xk从Li.unKnownList列表移动到Li.notJumpList列表中,并建立界面Li过操作xk跳转到界面Lj的指向关系,跳到步骤(2);如果len(Li.unKnownList)=0,跳到步骤四(4);
(4)如果len(Li.notJumpList)≥3,根据执行次数少优先和不同类型优先随机在Li.notJumpIt中选择3个操作组合Commands并执行;如果len(Li.notJumpList)<3,执行所有操作;被执行操作count属性自加1,计算界面权值Li.weight,完成后跳转到步骤(5);如果len(Li.notJumpList)=0,跳转到步骤(5);
(5)Lk=max(W(L)),如果i=k,跳到步骤(4);如果i≠k,跳到步骤(6);
(6)根据广度优先算法在图中搜索当前界面Li到界面Lk的路径S,如果S存在,按照跳转操作执行,操作的count属性自加1,跳转到步骤(3)。如果S不存在,执行返回操作,跳到步骤(6)。
有益效果:
本发明主要是对DroidRunner行为触发模型进行了改进,体现在下面两点:
改进一:设计了多组合均衡遍历算法。该遍历算法根据应用程序内用户界面的跳转构建了界面跳转的图形描述,在遍历执行界面操作过程中,根据控件类型及操作执行的次数随机生成不同的组合操作。同时,利用界面间调度算法均衡各个界面的操作平均执行次数。以此提升应用运行期间对后台逻辑代码覆盖率,达到在动态检测期间提升触发应用恶意行为概率的目的。
改进二:设计了特殊事件触发库。通过对恶意行为触发条件的分析可知部分恶意行为并非由用户对应用的操作触发,而是由***广播事件等其它非用户操作的事件触发。本发明利用已知恶意应用恶意行为的触发条件搭建了一个特殊事件触发库,通过在应用运行期间触发这些事件,进一步提升触发应用恶意行为的概率。
本发明通过与Monkey和Monkeyrunner触发方式对比实验显示DroidRunner提升了运行期间对应用程序内部方法层面的覆盖率,可更高效的触发应用程序的恶意行为。通过自编辑恶意样本和网络恶意样本检测结果显示AMBDS***可更高效、准确的识别应用程序的恶意行为。
附图说明
图1为AMBDS恶意行为检测***;
图2为DroidRunner模型示意图;
图3为Android应用界面间跳转关系图;
图4为AMBDS***检测结果;
图5为多种触发方式效果对比图。
具体实施方式
下面将结合附图对本发明做进一步详细说明。
在本发明中所涉及的基于组合事件行为触发的Android恶意行为检测模型主要功能为:通过多层行为监控模块的行为监控,完成对程序行为特征的获取。根据获取的程序行为特征信息,进行行为特征的分析并完成对恶意行为的判定,同时根据需求产生不同详细程度的行为分析报告。根据对程序行为特征的分析,同时结合DroidRunner行为触发模型完成对应用程序中恶意行为的动态检测,如图1所示。
下面以DroidRunner行为触发模型对应用程序敏感行为的检测为例,介绍此模型触发应用程序恶意行为的过程,描述如下:
步骤一:通过预处理组件完成APK的分析并取其基本信息。利用apktool工具反编译APK获取Androidmanifest.xml文件,通过分析Androidmanifest.xml文件获取APK的基本信息,包括APK的包名称、MainActivity名称、4种组件信息、申请的权限等。这些信息为其它组件的运行提供基础数据。
步骤二:通过分析组件获取当前Activity中显示的所有可操作控件的绝对坐标、控件类型、控件可操作指令等属性,生成控件的操作序列,为界面控制组件提供基础数据。
步骤三:利用步骤二获得的数据信息模拟用户对应用的操作,这些操作根据多组合均衡遍历算法调度生成。
多组合均衡遍历算法实现了对应用的模拟操作,为便于分析应用程序内部的界面间的调度关系,本发明将Android应用界面间跳转关系转化为一个有向赋权图,其逻辑表示如下所示:
G表示界面跳转关系的有向图。
L表示应用所有界面的集合,集合中每个节点表示一个界面。
W表示界面权值的集合,权值表示需要调度到该界面执行操作的需求程度,该值越大说明调度到该界面进行操作的需求越迫切。
E表示界面间跳转的边的集合,存储的是导致界面跳转的操作。
界面节点的权值确定了界面间调度优先级,本发明利用界面节点中操作控件执行情况确定界面节点的权值。每一个界面节点均维持了3个列表:unKnowList、notJumpList和jumpList。unKnowList列表用于存储不确定是否会导致界面跳转的控件操作,在进入一个新的界面时,所有的控件操作均存储在这个列表中。notJumpList列表用于存储不会导致界面跳转的操作,初始值为空。jumpList列表用于存储会发生界面跳转的操作,初始值为空。三个列表中所有的操作共有四个属性:count、index、command和class,分别表示:
1)count初始值为0,表示该操作被执行的次数。
2)index属性用于标示这个操作。
3)command表示具体的操作命令。
class表示控件的类型。
每个界面Li都有一个权重Li.weight,在计算界面权值时以当前识别出的控件情况来计算,因此不同的操作可能导致界面内的控件发生变化。界面节点的权值计算公式如下:
其中xk表示Li.notJumpList列表中k个操作被执行的次数。权值越大表示调度到这个界面节点执行的优先级越高。根据界面权重与1的比较结果,有以下三种情况:
1)界面权重大于1,说明这个界面还有多个操作没有被调度执行。
2)界面权重小于1,说明该界面中所有的操作都被执行过。
3)界面权值等于1,说明界面是存在一个操作没有被执行或者这个界面中所有的操作都被执行了1次。
多组合均衡遍历算法的具体描述如下:
1)如果即发现一个新的界面节点Li,将界面分析组件获取的当前界面的所有操作置于Li.unKnownList表中,根据公式计算界面权值Li.weight,转到(2)。如果Li∈L,转到(2)。
2)如果len(Li.unKnownList)≠0,在Li.notJumpList列表中,在Li.unKnownList列表中随机选择执行一个操作xk,xk.count自加1,根据公式计算界面权值Li.weight。如果界面没有发生变化,则将操作xk从Li.unKnownList列表移动到Li.notJumpList列表中,跳到(2)。如果界面发生跳转,新的界面为Lj,则将操作xk从Li.unKnownList列表移动到Li.notJumpList列表中,并建立界面Li过操作xk跳转到界面Lj的指向关系,跳到步骤(1)。如果len(Li.unKnownList)=0,跳到(3)。
3)如果len(Li.notJumpList)≥3,根据执行次数少优先和不同类型优先随机在Li.notJumpIt中选择3个操作组合Commands并执行;如果len(Li.notJumpList<3),执行所有操作。被执行操作count属性自加1,根据公式计算界面权值Li.weight,完成后跳转到(4)。如果len(Li.notJumpList)=0,跳转到(4)。
4)Lk=max(W(L)),如果i=k,跳到(3);如果i≠k,跳到(5)。
5)根据广度优先算法在图中搜索当前界面Li到界面Lk的路径S,如果S存在,按照跳转操作执行,操作的count属性自加1,跳转到(2)。如果S不存在,执行返回操作,跳到(5)。
每个应用程序运行时间预定义是10分钟,当时间到达后自动结束上述遍历算法。预定义时间可根据任务量和程序的大小进行调节。多组合均衡遍历算法的执行流程需要注意一种特殊情况:在遍历执行的过程中,可能执行某个操作后会导致应用程序正常退出或异常崩溃退出,如果出现这种异常,需要对这个操作进行标记,在遍历过程中减少这个操作运行的次数。然后自动重新启动该应用,并继续执行遍历算法,如果在检测期间出现2次应用异常崩溃,直接停止遍历算法。
步骤四:根据预处理组件获取的待检测应用的权限及组件信息,从特殊事件触发库中抽取符合条件的特殊事件列表,之后在主控组件的控制下在APP运行期间随机触发这些特殊事件。
多组合均衡遍历算法无法模拟接收到短信、锁屏等特殊事件,因此,本发明设计了特殊事件触发库进一步提升对应用程序内部处理逻辑的覆盖率,达到触发应用程序恶意为的目的。特殊事件触发库采用特殊事件-权限映射表存储当前已发现恶意应用恶意行为的触发事件及实现方法。在特殊事件-权限映射表中,特殊事件与权限之间是1对1或1对多的关系,即某一个特殊事件发生可能需要多种权限的组合。特殊事件-权限映射表的具体描述如下表所示。
特殊事件的提取流程分为以下2步:
步骤1:提取应用申请的权限信息,根据提取的权限从特殊事件-权限映射表中抽取对应的特殊事件;
步骤2:根据提取的特殊事件在特殊事件-权限映射表中查找需要的权限,如果需要的权限均被应用申请,这表明这个特殊事件满足触发条件,需要在应用运行时执行这个特殊事件。不满足则舍弃这个特殊事件。
步骤五:通过ADB与设备之间进行通讯与控制,并在界面分析组件、界面控制组件、特殊事件触发组件的支撑下,实现对应用的安装、启动、运行、卸载等自动化操作,提升触发检测应用恶意行为的概率,完成自动检测。
近年来,Android平台的恶意应用程序呈爆发式增长,国内外研究组织针对Android平台恶意应用检测展开了许多研究。第三方应用市场和网络论坛是恶意应用程序的主要传播途径,通过在这些渠道中检测上传应用程序是否含有恶意行为,可阻断恶意应用程序利用这些途径传播,遏制恶意应用程序的扩散。但是,目前没有有效的方法可准确识别上传应用是否具有恶意行为。通过对当前恶意应用检测领域的分析,本发明提出了可更高效、准确识别应用程序恶意行为的AMBDS检测***,该***解决方案的工作可以划分为以下三个步骤:
步骤1:多层行为监控模块通过修改Android源码、植入网络监控工具实现对Java调用、本地调用和网络连接的监控,从多个层面捕获应用程序运行时的行为日志。
步骤2:行为分析模块通过函数调用关系和函数参数特征识别应用程序中的恶意行为。同时,行为分析模块会生成应用行为分析报告,以此帮助用户识别检测结果中误报或漏报的恶意行为,并修正或扩展恶意行为特征库,进一步提升检测结果的准确性。
步骤3:检测***中的DroidRunner行为触发模型根据对界面调度方式和已知恶意行为触发条件的分析设计了多组合均衡遍历算法和特殊事件触发库,提升了对应用程序内路径和敏感函数调用的覆盖率,可更高效的触发恶意行为。
本发明重点在于DroidRunner行为触发模型的实施。该模型由6个组件组成:预处理、主控、界面分析、界面控制、特殊事件触发和特殊事件触发库。其示意图如附图2所示。
预处理组件实施时,主要是分析APK并获取其基本信息,为其它组件的运行提供基础数据。界面分析组件实施时,主要是获取当前Activity中显示的所有可操作控件的属性,并生成控件序列,为界面控制组件提供基础数据。
界面控制组件实施时,主要是模拟用户对应用的操作,这些操作根据多组合均衡遍历算法调度生成。该算法的核心思想是均衡的对应用中所有的可操作的控件进行遍历操作,在遍历过程中,根据控件的类型进行不同的组合来模拟人对应用的操作,通过对用户界面内不同控件的操作可能导致界面间的跳转,附图3展示了一个应用内界面间跳转关系的抽象图。
特殊事件触发实施时,主要是基于对由注册广播接受器和检测运行环境类事件触发执行应用程序恶意行为的分析,设计了命令行实现、脚本实现和预装实现方式三种方式来实现这些事件的自动化触发。
方式一:命令行实现方式。在Android***中提供了功能强大的调试工具Android调试桥和Dalvik虚拟机调试监控服务(DalvikDebugMonitorService,DDMS)。这些工具可以模拟对Android虚拟机进行锁屏操作、启动指定服务、向虚拟机发送短信,打电话等特殊事件。
方式二:脚本实现方式。通过录制模拟用户某些特定操作的脚本来实现特殊事件库中的某些特殊事件。这类脚本包括录制变更联网操作的脚本,录制登陆支付宝、微信等应用的脚本,录制发短信的脚本等。
方式三:预装实现方式。在测试的Android虚拟机中根据应用的基本信息设置初始环境,触发应用的恶意行为。这些预设信息可能是一些敏感的短信、通话记录等信息,预装一些社交类应用、安全类应用、支付类应用等,并对这些应用进行基本操作产生一些使用记录等。
特殊事件触发库实施时,会存储当前已发现恶意应用恶意行为的触发事件及实现方法。根据应用程序申请的权限信息分析出应用程序对那些特殊事件敏感,同时根据应用程序的组件构成等内容可分析出应用程序某些功能。基于这些分析提取出特殊事件触发库中的对应特殊事件,提高检测的精度。
主控组件实施时,主要是负责通过ADB与设备之间进行通讯与控制,并在界面分析组件、界面控制组件、特殊事件触发组件的支撑下,实现对应用的安装、启动、运行、卸载等自动化操作。
本发明的测试环境为利用Python脚本语言和Java语言实现了AMBDS恶意行为检测***,开发环境是Ubuntu12.0464位操作***。本发明从行为监控部分的虚拟机性能、行为触发部分的触发效果及整体检测效果三个方面进行测试。
1)AMBDS检测效果分析
本项测试的目标是检测AMBDS的实际检测效果。通过网络论坛、QQ群和博客等途径收集到了可用的恶意应用样本35个,同时,在其他同学的帮助下开发了5个恶意样本,共计40个恶意应用样本。将上述40个恶意样本均利用AMBDS模型进行检测分析,设置每个样本的测试时间为15分钟。为更好的分析本文提出的***的检测效果,本文将自编辑样本和网络样本分开统计,同时检测结果也分为直接识别出的检测结果和根据对行为分析报告分析修正后的检测结果。40个恶意样本经AMBDS恶意行为检测***检测后的检测结果统计数据如附图4所示。
结果分析:自编辑样本的恶意行为检出率高与网络样本的恶意行为检出率,原因可能是自编辑的恶意样本中对恶意行为隐藏和掩饰的能力较差,同时这类样本是模仿分析过了恶意样本进行编写,因此恶意行为特征库中存在这类变种样本的特征,从侧面也能表明AMBDS***对未知恶意应用具有好的检测效果。AMBDS***对网络样本的直接检出率较低,其原因是恶意行为特征库中的恶意行为特征规模相对较小。但是,通过对行为检测报高的分析,恶意行为检出率有了明显提升。这表明AMBDS***对恶意应用程序的分析可帮助分析人员发现未知恶意应用的恶意行为。同时,根据新发现的恶意行为可归纳总结其行为特征扩充恶意行为特征库,提升对应用程序恶意行为的直接检出率,以此形成良性循环。
2)DroidRunner触发效果分析
本项测试的目标是验证DroidRunner对应用程序实际的触发效果,本次测试设计了A、B两组测试样本。A组由4个开源应用程序,通过添加了部分敏感API函数调用扩展应用程序的功能。A组的测试样本分别使用Monkeyrunner和DroidRunner对其进行处罚并对并统计应用程序执行期间的控件覆盖率、控件的点击次数差额、函数覆盖率、敏感API覆盖率和恶意行为触发率。B组由20个病毒样本组成,分别使用Monkey、Monkeyrunner和DroidRunner三种触发方式实现对样本的自动控制,并统计函数覆盖率、恶意行为触发率和敏感函数触发次数。附图5展示了B组测试中三种触发方式在函数覆盖率、恶意行为触发率参数的统计值。
结果分析:通过对以上两组测试的统计数据分析,DroidRunner基本能覆盖应用程序中所有的识别出可操作控件,相比传统的行为触发方法,其可覆盖应用程序运行期间绝大部分的函数调用,对应用程序中的敏感行为触发效果显著。DroidRunner可高效覆盖应用程序大部分程序路径的能力,达到高效、稳定触发应用程序中可能存在的恶意行为的效果。
Claims (5)
1.基于组合事件行为触发的Android恶意行为检测***,其特征在于:包括多层行为监测模块、行为分析模块和DroidRunner行为触发模型;
多层行为监控模块通过修改Android源码、植入网络监控工具实现对Java调用、本地调用和网络连接的监控,捕获应用程序运行时的行为日志;
行为分析模块通过函数调用关系和函数参数特征识别应用程序中的恶意行为,同时,行为分析模块会生成应用行为分析报告,用户通过应用行为分析报告识别检测结果中误报或漏报的恶意行为,并修正或扩展恶意行为特征库;
DroidRunner行为触发模型根据对界面调度方式和已知恶意行为触发条件的分析设计了多组合均衡遍历算法和特殊事件触发库,完成对应用程序中恶意行为的动态检测。
2.根据权利要求1所述的基于组合事件行为触发的Android恶意行为检测***,其特征在于:所述的DroidRunner行为触发模型包括预处理组件、主控组件、界面分析组件、界面控制组件、特殊事件触发组件和特殊事件触发库组件;
预处理组件,分析APK并获取其基本信息,为其它组件的运行提供基础数据;
界面分析组件,获取当前Activity中显示的所有可操作控件的属性,并生成控件序列,为界面控制组件提供基础数据;
界面控制组件,模拟用户对应用的操作,操作根据多组合均衡遍历算法调度生成;
特殊事件触发组件,基于对由注册广播接受器和检测运行环境类事件触发执行应用程序恶意行为的分析,设计了命令行实现、脚本实现和预装实现方式三种方式来实现这些事件的自动化触发;
特殊事件触发库组件,存储当前已发现恶意应用恶意行为的触发事件及实现方法;
主控组件,负责通过ADB与设备之间进行通讯与控制,并在界面分析组件、界面控制组件、特殊事件触发组件的支撑下,实现对应用的自动化操作。
3.一种基于权利要求1所述的基于组合事件行为触发的Android恶意行为检测***的检测方法,其特征在于,包括以下步骤,
步骤一:多层行为监控模块通过修改Android源码、植入网络监控工具实现对Java调用、本地调用和网络连接的监控,捕获应用程序运行时的行为日志;
步骤二:行为分析模块通过函数调用关系和函数参数特征识别应用程序中的恶意行为,同时,行为分析模块会生成应用行为分析报告;
步骤三:根据应用行为分析和DroidRunner行为触发模型完成对恶意行为的动态检测。
4.根据权利要求3所述的基于组合事件行为触发的Android恶意行为检测方法,其特征在于:所述的根据应用行为分析和DroidRunner行为触发模型完成对恶意行为的动态检测的方法为:
步骤一:通过预处理组件完成APK的分析并取其基本信息;利用apktool工具反编译APK获取Androidmanifest.xml文件,通过分析Androidmanifest.xml文件获取APK的基本信息,包括APK的包名称、MainActivity名称、4种组件信息、申请的权限;
步骤二:通过分析组件获取当前Activity中显示的所有可操作控件的绝对坐标、控件类型、控件可操作指令属性,生成控件的操作序列,为界面控制组件提供基础数据;
步骤三:利用步骤二获得的数据信息模拟用户对应用的操作,操作根据多组合均衡遍历算法调度生成;
步骤四:根据预处理组件获取的待检测应用的权限及组件信息,从特殊事件触发库中抽取符合条件的特殊事件列表,在主控组件的控制下在APP运行期间随机触发这些特殊事件;
步骤五:通过ADB与设备之间进行通讯与控制,并在界面分析组件、界面控制组件、特殊事件触发组件的支撑下,完成自动检测。
5.根据权利要求4所述的基于组合事件行为触发的Android恶意行为检测方法,其特征在于:所述的根据多组合均衡遍历算法调度生成生成操作的过程为:
(1)将Android应用界面间跳转关系转化为一个有向赋权图:
G表示界面跳转关系的有向图;
L表示应用所有界面的集合,集合中每个节点表示一个界面;
W表示界面权值的集合,权值表示需要调度到该界面执行操作的需求程度,该值越大表示调度到该界面进行操作的需求越迫切;
E表示界面间跳转的边的集合,存储的是导致界面跳转的操作;
(2)如果即发现一个新的界面节点Li,将界面分析组件获取的当前界面的所有操作置于Li.unKnownList表中,计算界面权值Li.weight,转到下一步;如果Li∈L,转到下一步;
其中xk表示Li.notJumpList列表中k个操作被执行的次数,每一个界面节点均维持了3个列表:unKnowList、notJumpList和jumpList;unKnowList列表用于存储不确定是否会导致界面跳转的控件操作,在进入一个新的界面时,所有的控件操作均存储在这个列表中;notJumpList列表用于存储不会导致界面跳转的操作,初始值为空;jumpList列表用于存储会发生界面跳转的操作,初始值为空;
(3)如果len(Li.unKnownList)≠0,在Li.notJumpList列表中,在Li.unKnownList列表中随机选择执行一个操作xk,xk.count自加1,计算界面权值Li.weight;如果界面没有发生变化,则将操作xk从Li.unKnownList列表移动到Li.notJumpList列表中,跳到步骤(3);如果界面发生跳转,新的界面为Lj,则将操作xk从Li.unKnownList列表移动到Li.notJumpList列表中,并建立界面Li过操作xk跳转到界面Lj的指向关系,跳到步骤(2);如果len(Li.unKnownList)=0,跳到步骤四(4);
(4)如果len(Li.notJumpList)≥3,根据执行次数少优先和不同类型优先随机在Li.notJumpLtis中选择3个操作组合Commands并执行;如果len(Li.notJumpList)<3,执行所有操作;被执行操作count属性自加1,计算界面权值Li.weight,完成后跳转到步骤(5);如果len(Li.notJumpList)=0,跳转到步骤(5);
(5)Lk=max(W(L)),如果i=k,跳到步骤(4);如果i≠k,跳到步骤(6);
(6)根据广度优先算法在图中搜索当前界面Li到界面Lk的路径S,如果S存在,按照跳转操作执行,操作的count属性自加1,跳转到步骤(3)。如果S不存在,执行返回操作,跳到步骤(6)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130822.0A CN105653946A (zh) | 2016-03-09 | 2016-03-09 | 基于组合事件行为触发的Android恶意行为检测***及其检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610130822.0A CN105653946A (zh) | 2016-03-09 | 2016-03-09 | 基于组合事件行为触发的Android恶意行为检测***及其检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105653946A true CN105653946A (zh) | 2016-06-08 |
Family
ID=56492350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610130822.0A Pending CN105653946A (zh) | 2016-03-09 | 2016-03-09 | 基于组合事件行为触发的Android恶意行为检测***及其检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653946A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874763A (zh) * | 2017-01-16 | 2017-06-20 | 西安电子科技大学 | 模拟用户行为的安卓软件恶意行为触发***及方法 |
CN107832612A (zh) * | 2017-10-26 | 2018-03-23 | 北京邮电大学 | 一种Android应用程序运行时API调用量预估方法 |
CN108363762A (zh) * | 2018-02-05 | 2018-08-03 | 广州阿里巴巴文学信息技术有限公司 | 一种用户轨迹的收集处理方法、装置和终端设备 |
CN108932429A (zh) * | 2017-05-27 | 2018-12-04 | 腾讯科技(深圳)有限公司 | 应用程序的分析方法、终端及存储介质 |
CN109791588A (zh) * | 2017-06-27 | 2019-05-21 | 赛门铁克公司 | 缓解与图形用户界面元素相关联的恶意动作 |
CN110430177A (zh) * | 2019-07-26 | 2019-11-08 | 北京智游网安科技有限公司 | 一种app网络行为的监控方法、智能终端及存储介质 |
CN110688317A (zh) * | 2019-09-27 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 应用界面的测试方法及装置 |
CN111382424A (zh) * | 2018-12-27 | 2020-07-07 | 全球能源互联网研究院有限公司 | 一种基于受控环境的移动应用敏感行为检测方法和*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408917A (zh) * | 2008-10-22 | 2009-04-15 | 厦门市美亚柏科资讯科技有限公司 | 应用程序行为合法性检测方法及*** |
US20150256552A1 (en) * | 2014-03-04 | 2015-09-10 | Electronics And Telecommunications Research Institute | Imalicious code detection apparatus and method |
-
2016
- 2016-03-09 CN CN201610130822.0A patent/CN105653946A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408917A (zh) * | 2008-10-22 | 2009-04-15 | 厦门市美亚柏科资讯科技有限公司 | 应用程序行为合法性检测方法及*** |
US20150256552A1 (en) * | 2014-03-04 | 2015-09-10 | Electronics And Telecommunications Research Institute | Imalicious code detection apparatus and method |
Non-Patent Citations (1)
Title |
---|
何志昌: ""Android平台应用程序恶意行为检测方法研究"", 《万方数据知识服务平台》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874763A (zh) * | 2017-01-16 | 2017-06-20 | 西安电子科技大学 | 模拟用户行为的安卓软件恶意行为触发***及方法 |
CN108932429A (zh) * | 2017-05-27 | 2018-12-04 | 腾讯科技(深圳)有限公司 | 应用程序的分析方法、终端及存储介质 |
CN109791588A (zh) * | 2017-06-27 | 2019-05-21 | 赛门铁克公司 | 缓解与图形用户界面元素相关联的恶意动作 |
CN109791588B (zh) * | 2017-06-27 | 2023-10-13 | 诺顿身份保护公司 | 缓解与图形用户界面元素相关联的恶意动作 |
CN107832612A (zh) * | 2017-10-26 | 2018-03-23 | 北京邮电大学 | 一种Android应用程序运行时API调用量预估方法 |
CN108363762A (zh) * | 2018-02-05 | 2018-08-03 | 广州阿里巴巴文学信息技术有限公司 | 一种用户轨迹的收集处理方法、装置和终端设备 |
CN111382424A (zh) * | 2018-12-27 | 2020-07-07 | 全球能源互联网研究院有限公司 | 一种基于受控环境的移动应用敏感行为检测方法和*** |
CN110430177A (zh) * | 2019-07-26 | 2019-11-08 | 北京智游网安科技有限公司 | 一种app网络行为的监控方法、智能终端及存储介质 |
CN110688317A (zh) * | 2019-09-27 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 应用界面的测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653946A (zh) | 基于组合事件行为触发的Android恶意行为检测***及其检测方法 | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
CN103186740B (zh) | 一种Android恶意软件的自动化检测方法 | |
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
CN106203113B (zh) | 安卓应用文件的隐私泄露监控方法 | |
Mariani et al. | Compatibility and regression testing of COTS-component-based software | |
CN103530221B (zh) | 一种Android***中程序行为与界面操作映射方法 | |
CN109726107A (zh) | 测试方法、装置、设备及存储介质 | |
CN106055479A (zh) | 一种基于强制执行的Android应用软件测试方法 | |
CN106529304B (zh) | 一种安卓应用并发漏洞检测*** | |
CN105183658A (zh) | 测试软件代码的方法及装置 | |
CN105577472A (zh) | 一种数据采集测试方法和装置 | |
CN111859380A (zh) | Android App漏洞的零误报检测方法 | |
CN106778264A (zh) | 一种移动客户端的应用程序分析方法及分析*** | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
CN109558328A (zh) | 一种代码覆盖率的测试方法、***、装置及可读存储介质 | |
CN109948338B (zh) | 基于静态分析的安卓应用敏感路径触发方法 | |
CN108932199B (zh) | 一种基于用户界面分析的自动化污点分析*** | |
CN109542444A (zh) | Java应用的监控方法、装置、服务器和存储介质 | |
CN108874658A (zh) | 一种沙箱分析方法、装置、电子设备及存储介质 | |
CN114328168A (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
CN108334441A (zh) | 一种软件开发工具包的自动化测试方法和*** | |
CN110389897A (zh) | Sdk逻辑测试方法、装置、存储介质及服务器 | |
CN111459774A (zh) | 一种应用程序的流量的获取方法、装置、设备及存储介质 | |
CN111190813B (zh) | 基于自动化测试的安卓应用网络行为信息提取***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160608 |