利索能及
我要发布
收藏
专利号: 2021116284817
申请人: 杭州电子科技大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-03-20
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于多特征的安卓恶意软件家族聚类方法,其特征在于:包括以下步骤步骤一:给定m个Android应用恶意软件安装包集合A=(A1,A2,…Am),对于每个恶意软件安装包Ai,其中i=1,2,…,m,借助安卓分析工具Androguard获取其中的AndroidManifest.xml文件和classes.dex文件;

步骤二:从AndroidManifest.xml文件中抽取权限信息,从classes.dex文件中抽取API序列信息以及操作码序列信息;每个恶意软件表示为Ai=(apkId,permission,APISequence,opcode),其中apkId表示恶意软件安装包的编号,permission表示权限集合信息,APISequence表示API序列信息,opcode表示操作码序列信息;

步骤三:对permission和APISequence进行过滤:根据官方文档定义的权限列表,过滤permission中第三方或自定义的权限;通过识别API中的packageName,过滤sequence中非官方的API;

步骤四:对opcode信息进行特征抽取:利用模型抽取opcode中字节片段特征gram;经过步骤三和四的预处理后,每个恶意软件包表示为Ai=,i=1,2…m;

步骤五:将所有软件包中的prePermission表示成字袋形式,创建集合Per={per1,per2,…,perli},其中li表示第i软件包中的权限个数;对于任意软件包Aa和Ab中prePermission,利用Jaccard系数计算prePermission的相似度Simper(Aa,Ab),公式为:其中||表示集合中包含的权限的个数;

步骤六:将所有软件包中的preOpcode也表示成字袋形式,创建集合Opc=其中di表示第i软件包中的操作码个数;对于任意软件包Aa和Ab中

preOpcode,利用Jaccard系数计算软件包中preOpcode的相似度Simop(Aa,Ab),公式为:步骤七:对于软件包中的preAPISequence,将所有的API组成序列集合其中ti表示第i软件包中的操作码个数;对于语义相似度,利用

Jaccard系数进行计算,对于序列相似度,利用API的序列位置对应关系进行计算;最终综合这两种相似度得到任意软件包Aa和Ab的preAPISequence相似度Simapi(Aa,Ab);

步骤八:将三种不同类型的相似度进行集成,计算软件包之间的最终相似度;给定任意两个软件包Aa和Ab,最终相似度Sim(Aa,Ab)定义为:步骤九:软件包聚类:利用InfoMap方法对软件包进行聚类;通过InfoMap方法将所有恶意软件划分为c类。

2.根据权利要求1所述的一种基于多特征的安卓恶意软件家族聚类方法,其特征在于:所述步骤四包括以下步骤:

子步骤4‑1、在给定恶意安卓软件样本集A=(A1,A2,…Am),抽取所有软件包的操作码的n‑gram(n=5)特征,构建集合Ω={o1,o2,…,os},s为所有5‑gram操作码的数量;

子步骤4‑2、计算Ω中每个ok在安卓恶意软件样本集A中出现的频率,记作P(M)={p(o1,A),p(o2,A),…,p(os,A)},计算公式如下:其中k=1,2,…s,count(ok,A)表示在样本集A中包含ok的样本数量;

子步骤4‑3、对所有的ok按照概率从大到小进行排序,选择其前K%个5‑gram操作码作为关键操作码特征列表,其中K=1。

3.根据权利要求1所述的一种基于多特征的安卓恶意软件家族聚类方法,其特征在于:所述步骤七包括以下步骤:

子步骤7‑1、对于任意两个软件包Aa和Ab,其包含的preAPISequence序列的语义Simsem(Aa,Ab)为:子步骤7‑2、假设One(Apia,Apib)表示Apia和Apib中都出现且仅出现一次的API的集合,Pf(Apia,Apib)表示One(Apia,Apib)的单词在Apia中的位置序号构成的向量,Ps(Apia,Apib)表示Pf(Apia,Apib)中各分量对应单词在Apib中的序列排序生成的向量,Re(Apia,Apib)表示Ps(Aa,Ab)各个相邻分量的逆序数;则序列相似度Simord(APISa,APISb)为:子步骤7‑3、最终得到Aa和Ab中preAPISequenc相似度Simapi(Aa,Ab)=λ1×Simsem(Aa,Ab)+λ2×Simord(Aa,Ab),其中λ1=0.7,λ2=0.3。

4.根据权利要求1所述的一种基于多特征的安卓恶意软件家族聚类方法,其特征在于:所述步骤九包括以下步骤:

子步骤9‑1、初始化,将每个软件包Ai当作独立的社区;

子步骤9‑2、将节点之间的相似度Sim(Ai,Aj)作为转移概率,记为 同时,为了避免随机游走进入孤立区域,引入了穿越概率τ,其中τ是一个超参数,且0<τ<1;于是Aj的下一步转移概率为 其中c为类的个数;

子步骤9‑3、将 定义为优化目标,其中

是是随机游走过程中“离开类Gk”事件发生的概率,且

H(Q)表示社区之间运动熵,且

其中 是在社区Gk内部发生模块运动的概率,且

是模块内的运动熵,且

子步骤9‑4、对图里的节点随机采样出一个序列,按顺序依次计算将该点赋给邻居节点后所在的社区L(M),找到使L(M)下降最大的社区,并将该节点归入该社区;如果每一个L(M)都没有下降,该节点所属社区不变;

子步骤9‑5、重复子步骤9‑4,直到每一个节点所属社区都没有变动时,停止循环。