[发明专利]一种安卓应用恶意行为的检测方法及装置有效
| 申请号: | 201810140071.X | 申请日: | 2018-02-11 |
| 公开(公告)号: | CN108399336B | 公开(公告)日: | 2020-08-28 |
| 发明(设计)人: | 侯殿君;胡丽丽 | 申请(专利权)人: | 侯殿君 |
| 主分类号: | G06F21/56 | 分类号: | G06F21/56 |
| 代理公司: | 广州天河万研知识产权代理事务所(普通合伙) 44418 | 代理人: | 刘强;陈轩 |
| 地址: | 300202 天津市*** | 国省代码: | 天津;12 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 应用 恶意 行为 检测 方法 装置 | ||
1.一种安卓应用恶意行为的检测方法,其特征在于,包括:
在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;
在响应事件中获取消息的意图Intent信息和上下文Context信息,获取所述Intent信息中的action、data、category、type、component、extra、referer信息,以及所述Context信息中的contextView、packageName、label信息,并将这些信息组成所述API调用的特征向量,以传递给检测模块进行检测;
对所述特征向量进行检测,通过所述检测模块中的静态恶意调用检测模块查看所述特征向量是否与预设匹配规则匹配,如果匹配,则判定为恶意行为;如果所述静态恶意调用检测模块检测结果为正常,则调用所述检测模块中的动态恶意调用检测模块的概率图模型,将所述特征向量输入所述概率图模型,根据模型输出值,判断所述API调用是否为恶意行为;将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为;
所述静态恶意调用检测模块中的预设匹配规则,由线下收集到的恶意API调用特征向量构建;线下静态恶意调用检测模块检测规则预设阶段的具体步骤如下:
步骤101、对每个恶意应用样本的每次恶意操作,提取所涉及到的API调用序列,每次API调用对应一个特征向量;
步骤102、一次恶意操作所涉及到的API调用序列组成一个恶意操作API调用矩阵;
步骤103、将所有恶意操作的API调用矩阵存入线下静态恶意调用检测模块,作为预设规则,并将这些预设规则矩阵按行和列进行编号;
线下动态恶意调用检测模块概率图模型构造及训练阶段的具体步骤如下:
步骤201、对训练应用样本,包括正常应用及恶意应用的每次操作,正常应用随机采样操作,恶意应用采样恶意操作所涉及到的API调用序列,每个API调用对应一个特征向量;
步骤202、将每个特征向量作为概率图模型中的一个节点,最后一个节点代表此次API调用所涉及操作是否恶意操作,如果是恶意操作,则节点赋值为1,否则赋值为0;
步骤203、用有向边表示API调用的前后关系,有向边的权值为1,每个API调用序列就可以表示成一系列节点及有向边的组合;
步骤204、遍历训练样本中的每次操作所涉及的API调用序列,构建概率图模型的基本结构,其中,若有向边重合,则将有向边权值相加作为该有向边的新权值;
步骤205、基于步骤204中的概率图模型基本结构,计算其中有相邻关系的每对节点的条件概率,得到概率图模型对应的条件概率分布,从而完成概率图模型构造及训练;
在线恶意行为检测阶段的具体步骤如下:
步骤301、针对一次API调用,提取此次调用的特征向量,转步骤302;
步骤302、将该特征向量与线下静态恶意调用检测模块中的预设规则API调用矩阵进行对比,若与第i个矩阵中的第j行匹配,则将特征指示位标记为(i,j+1),转步骤303,否则转步骤304;
步骤303、若j+1行是第i个矩阵中的最后一行,则输出检测结果为“恶意行为”,否则转步骤304;
步骤304、将特征指示位标记为(0,0),将特征向量作为概率图模型的输入,通过概率图模型结构及条件概率分布,计算2个输出节点的概率值,转步骤305;
步骤305、若输出节点“1”的概率值大于输出节点“0”的概率值,则输出检测结果为“恶意行为”,否则输出检测结果为“正常行为”,转步骤301继续下一次API调用检测。
2.根据权利要求1所述的安卓应用恶意行为的检测方法,其特征在于,还包括:当判定所述API调用为恶意行为,则通过用户接口模块对用户进行提醒。
3.一种安卓应用恶意行为的检测装置,其特征在于,包括:
监控模块,用于在内核中监听广播接收者BroadcastReceiver事件,监控安卓应用对系统应用程序编程接口API的调用;
构建模块,用于在响应事件中获取消息的意图Intent信息和上下文Context信息,获取所述Intent信息中的action、data、category、type、component、extra、referer信息,以及所述Context信息中的contextView、packageName、label信息,并将这些信息组成所述API调用的特征向量,以传递给所述检测模块进行检测;
检测模块,用于对所述特征向量进行检测,将所述API调用的特征向量与API调用行为的预设规则进行对比,判断所述API调用是否为安卓应用恶意行为;
通过所述检测模块中的静态恶意调用检测模块查看所述特征向量是否与预设匹配规则匹配;
如果匹配,则判定为恶意行为;
如果所述静态恶意调用检测模块检测结果为正常,则调用所述检测模块中的动态恶意调用检测模块的概率图模型,将所述特征向量输入所述概率图模型,根据模型输出值,判断所述API调用是否为恶意行为;
线下静态恶意调用检测模块检测规则预设阶段的具体步骤如下:
步骤101、对每个恶意应用样本的每次恶意操作,提取所涉及到的API调用序列,每次API调用对应一个特征向量;
步骤102、一次恶意操作所涉及到的API调用序列组成一个恶意操作API调用矩阵;
步骤103、将所有恶意操作的API调用矩阵存入线下静态恶意调用检测模块,作为预设规则,并将这些预设规则矩阵按行和列进行编号;
线下动态恶意调用检测模块概率图模型构造及训练阶段的具体步骤如下:
步骤201、对训练应用样本,包括正常应用及恶意应用的每次操作,正常应用随机采样操作,恶意应用采样恶意操作所涉及到的API调用序列,每个API调用对应一个特征向量;
步骤202、将每个特征向量作为概率图模型中的一个节点,最后一个节点代表此次API调用所涉及操作是否恶意操作,如果是恶意操作,则节点赋值为1,否则赋值为0;
步骤203、用有向边表示API调用的前后关系,有向边的权值为1,每个API调用序列就可以表示成一系列节点及有向边的组合;
步骤204、遍历训练样本中的每次操作所涉及的API调用序列,构建概率图模型的基本结构,其中,若有向边重合,则将有向边权值相加作为该有向边的新权值;
步骤205、基于步骤204中的概率图模型基本结构,计算其中有相邻关系的每对节点的条件概率,得到概率图模型对应的条件概率分布,从而完成概率图模型构造及训练;
在线恶意行为检测阶段的具体步骤如下:
步骤301、针对一次API调用,提取此次调用的特征向量,转步骤302;
步骤302、将该特征向量与线下静态恶意调用检测模块中的预设规则API调用矩阵进行对比,若与第i个矩阵中的第j行匹配,则将特征指示位标记为(i,j+1),转步骤303,否则转步骤304;
步骤303、若j+1行是第i个矩阵中的最后一行,则输出检测结果为“恶意行为”,否则转步骤304;
步骤304、将特征指示位标记为(0,0),将特征向量作为概率图模型的输入,通过概率图模型结构及条件概率分布,计算2个输出节点的概率值,转步骤305;
步骤305、若输出节点“1”的概率值大于输出节点“0”的概率值,则输出检测结果为“恶意行为”,否则输出检测结果为“正常行为”,转步骤301继续下一次API调用检测。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于侯殿君,未经侯殿君许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810140071.X/1.html,转载请声明来源钻瓜专利网。





