[发明专利]基于组合事件行为触发的Android恶意行为检测系统及其检测方法在审
申请号: | 201610130822.0 | 申请日: | 2016-03-09 |
公开(公告)号: | CN105653946A | 公开(公告)日: | 2016-06-08 |
发明(设计)人: | 张国印;曲家兴;王玲;何志昌;高伟 | 申请(专利权)人: | 哈尔滨工程大学 |
主分类号: | G06F21/55 | 分类号: | G06F21/55 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150001 黑龙江省哈尔滨市南岗区*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 组合 事件 行为 触发 android 恶意 检测 系统 及其 方法 | ||
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)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610130822.0/1.html,转载请声明来源钻瓜专利网。