当前位置: 首页 > 专利查询>莫毓昌专利>正文

一种基于特征序列挖掘和精简的恶意软件检测方法技术

技术编号:26505361 阅读:19 留言:0更新日期:2020-11-27 15:33
本发明专利技术提供一种基于特征序列挖掘和精简的恶意软件检测方法,包括:获得多个软件样本的API调用序列;构造关键API字典和非关键API字典,对API调用序列进行精简;利用确定性和随机化前后向扫描方式,提取API特征序列;采用统计频率筛选API特征序列;得到最终的关键API特征序列集合以及关于关键API特征序列权重的线性模型;检测被测软件是否为恶意软件。本发明专利技术提供的基于特征序列挖掘和精简的恶意软件检测方法,同时采用API特征序列精简和关键API扩展扫描这两项技术,既提高了恶意软件检测识别精度,又缩短了恶意软件检测识别耗费的时间,提高恶意软件检测识别效率。

【技术实现步骤摘要】
一种基于特征序列挖掘和精简的恶意软件检测方法
本专利技术属于恶意软件检测
,具体涉及一种基于特征序列挖掘和精简的恶意软件检测方法。
技术介绍
恶意软件是指各种形式的恶意或者入侵软件,例如计算机病毒、蠕虫、间谍软件、木马、广告软件等。恶意软件通常以可执行程序、脚本等形式存在。在计算机系统安全领域,一个重要问题是进行恶意软件的检测与识别,以便能在恶意软件运行之前将其清除,避免给计算机系统造成破坏或者给用户造成损失。恶意软件的检测与识别,常用方法为恶意软件静态检测方法,即:对恶意软件的静态特征进行识别,其中,静态特征主要包括可执行文件及其反汇编文件的字节码、汇编指令、导入函数和分节信息等特征。然而,实际应用中使用的恶意软件往往存在变形或垃圾代码插入等混淆情况,从而导致静态检测方法无法有效识别混淆后的恶意软件,降低恶意软件的检测分类精度。因此,如何有效提高恶意软件的检测与识别精度,从而及时清除恶意软件,保障计算机系统运行安全,是目前急需解决的问题。
技术实现思路
针对现有技术存在的缺陷,本专利技术提供一种基于特征序列挖掘和精简的恶意软件检测方法,可有效解决上述问题。本专利技术采用的技术方案如下:本专利技术提供一种基于特征序列挖掘和精简的恶意软件检测方法,包括以下步骤:步骤1,收集p个软件样本,分别为软件样本s1,s2,...,sp;其中,所述软件样本包括恶意软件样本和正常软件样本;对于收集到的每个软件样本si,i=1,2,...,p,获得其API调用序列APIi=<APIi1,APIi2,...,APIic>;其中,c为软件样本si对应的API调用序列中包括的API的总数量;步骤2,构造关键API字典和非关键API字典,从而对每个软件样本si的API调用序列APIi进行精简,得到每个软件样本si对应的精简后的API调用序列API'i,具体方法为:步骤2.1,对p个软件样本的API调用序列包含的API进行统计分析,将重复的API去除,一共得到n种API,n种API形成的API集合表示为AS=<API[1],API[2],...,API[n]>;其中,API[1],API[2],...,API[n]分别代表第1种API,第2种API,...,第n种API;步骤2.2,构造线性模型API权重训练集,方法为:步骤2.2.1,对于每个软件样本si,根据其API调用序列APIi=<APIi1,APIi2,...,APIic>以及集合AS=<API[1],API[2],...,API[n]>,构造对应的输入向量Xi=<xi1,xi2,...,xin>;其中,输入向量Xi中元素数量,与集合AS中元素数量相等;输入向量Xi的各元素取值为:如果集合AS中的API[1]出现在API调用序列APIi中,则输入向量Xi中第1个元素xi1取值为1;否则,输入向量Xi中第1个元素xi1取值为0;如果集合AS中的API[2]出现在API调用序列APIi中,则输入向量Xi中第2个元素xi2取值为1;否则,输入向量Xi中第2个元素xi2取值为0;依此类推如果集合AS中的API[n]出现在API调用序列APIi中,则输入向量Xi中第n个元素xin取值为1;否则,输入向量Xi中第n个元素xin取值为0;步骤2.2.2,对于软件样本si,定义标签真实值yi;标签真实值yi通过以下方式取值:如果软件样本si为恶意软件样本,则标签真实值yi为1;反之,如果软件样本si为正常软件样本,则标签真实值yi为0;步骤2.2.3,将软件样本si的输入向量Xi和标签真实值yi组合,形成软件样本si的训练样本TSi=<Xi,yi>=<xi1,xi2,...,xin,yi>;步骤2.2.4,因此,对于p个软件样本,可对应得到p个训练样本,从而形成线性模型API权重训练集;步骤2.3,构建关于API权重的线性模型hθi:hθi=θ0+θ1xi1+θ2xi2+...+θnxin(1)其中:θ0为线性模型常数项;θ1,θ2,...,θn分别为线性模型的系数;构建输出转换模型:其中:y'i为与软件样本si对应的基于API权重的线性模型的标签预测值;步骤2.4,根据线性模型hθi和输出转换模型,对线性模型hθi进行拟合,得到最终的θ0,θ1,θ2,...,θn的值,从而得到最终的关于API权重的线性模型;步骤2.5,对于集合AS=<API[1],API[2],...,API[n]>,系数θ1同时表示API[1]的权重,系数θ2同时表示API[2]的权重系数,...,系数θn同时表示API[n]的权重;预设置权重阈值ε0;检查每个系数θj的绝对值是否小于权重阈值ε0,其中,j=1,2,...,n,如果是,则系数θj对应的API[j]为非关键API,并将非关键API存入非关键API字典;设置百分比H,对各个系数θj的绝对值从大到小排序,获得排序最前面的H*n个系数;将获得的H*n个系数所对应的集合AS中的API[j]称为关键API,并将关键API存入关键API字典;步骤2.6,对于步骤1收集到的每个软件样本si,将其API调用序列APIi=<APIi1,APIi2,...,APIic>中的非关键API剔除,从而得到软件样本si对应的精简后的API调用序列API'i;步骤3,对于每个软件样本si对应的精简后的API调用序列API'i,均对其API调用序列API'i进行挖掘,得到多个API特征序列,将各个API特征序列存入API特征序列集合C(API),具体方法为:步骤3.1,对于每个软件样本si对应的精简后的API调用序列API'i,定位到关键API,对于定位到的每个关键API,均执行步骤3.2-步骤3.3;步骤3.2,利用确定性前后向扫描方式,提取与定义的窗口尺度对应的API特征序列,并存入API特征序列集合C(API),方法为:预定义窗口尺度为b;利用确定性前后向扫描方式,提取所有种包含关键API的尺度为b的API特征序列;步骤3.3,利用随机性前后向扫描方式,提取与定义的窗口尺度对应的API特征序列,并存入API特征序列集合C(API),方法为:步骤3.3.1,预定义窗口尺度为b;步骤3.3.2,预定义随机截取阈值v*;步骤3.3.3,对于软件样本si,设精简后的API调用序列API'i为:API'i=<API'i1,API'i2,...,API'id>;其中,d为软件样本si对应的精简后的API调用序列API'i中包括的API的总数量;假设API'ik为API'i中的一个关键API;步骤3.3.4,令计数器b0=0,计数器b1=0;A1)进行前向扫描,方法为:按照距离API'ik由近向远的顺序进行前向扫描,首先考察API'i(k-1),考察方法为:随机生成0到1之间的随机数v1,若v1大于阈值本文档来自技高网...

【技术保护点】
1.一种基于特征序列挖掘和精简的恶意软件检测方法,其特征在于,包括以下步骤:/n步骤1,收集p个软件样本,分别为软件样本s

【技术特征摘要】
1.一种基于特征序列挖掘和精简的恶意软件检测方法,其特征在于,包括以下步骤:
步骤1,收集p个软件样本,分别为软件样本s1,s2,...,sp;其中,所述软件样本包括恶意软件样本和正常软件样本;
对于收集到的每个软件样本si,i=1,2,...,p,获得其API调用序列APIi=<APIi1,APIi2,...,APIic>;其中,c为软件样本si对应的API调用序列中包括的API的总数量;
步骤2,构造关键API字典和非关键API字典,从而对每个软件样本si的API调用序列APIi进行精简,得到每个软件样本si对应的精简后的API调用序列API'i,具体方法为:
步骤2.1,对p个软件样本的API调用序列包含的API进行统计分析,将重复的API去除,一共得到n种API,n种API形成的API集合表示为AS=<API[1],API[2],...,API[n]>;其中,API[1],API[2],...,API[n]分别代表第1种API,第2种API,...,第n种API;
步骤2.2,构造线性模型API权重训练集,方法为:
步骤2.2.1,对于每个软件样本si,根据其API调用序列APIi=<APIi1,APIi2,...,APIic>以及集合AS=<API[1],API[2],...,API[n]>,构造对应的输入向量Xi=<xi1,xi2,...,xin>;其中,输入向量Xi中元素数量,与集合AS中元素数量相等;输入向量Xi的各元素取值为:
如果集合AS中的API[1]出现在API调用序列APIi中,则输入向量Xi中第1个元素xi1取值为1;否则,输入向量Xi中第1个元素xi1取值为0;
如果集合AS中的API[2]出现在API调用序列APIi中,则输入向量Xi中第2个元素xi2取值为1;否则,输入向量Xi中第2个元素xi2取值为0;
依此类推
如果集合AS中的API[n]出现在API调用序列APIi中,则输入向量Xi中第n个元素xin取值为1;否则,输入向量Xi中第n个元素xin取值为0;
步骤2.2.2,对于软件样本si,定义标签真实值yi;标签真实值yi通过以下方式取值:如果软件样本si为恶意软件样本,则标签真实值yi为1;反之,如果软件样本si为正常软件样本,则标签真实值yi为0;
步骤2.2.3,将软件样本si的输入向量Xi和标签真实值yi组合,形成软件样本si的训练样本TSi=<Xi,yi>=<xi1,xi2,...,xin,yi>;
步骤2.2.4,因此,对于p个软件样本,可对应得到p个训练样本,从而形成线性模型API权重训练集;
步骤2.3,构建关于API权重的线性模型hθi:
hθi=θ0+θ1xi1+θ2xi2+...+θnxin(1)
其中:
θ0为线性模型常数项;θ1,θ2,...,θn分别为线性模型的系数;
构建输出转换模型:



其中:
y'i为与软件样本si对应的基于API权重的线性模型的标签预测值;
步骤2.4,根据线性模型hθi和输出转换模型,对线性模型hθi进行拟合,得到最终的θ0,θ1,θ2,...,θn的值,从而得到最终的关于API权重的线性模型;
步骤2.5,对于集合AS=<API[1],API[2],...,API[n]>,系数θ1同时表示API[1]的权重,系数θ2同时表示API[2]的权重系数,...,系数θn同时表示API[n]的权重;
预设置权重阈值ε0;检查每个系数θj的绝对值是否小于权重阈值ε0,其中,j=1,2,...,n,如果是,则系数θj对应的API[j]为非关键API,并将非关键API存入非关键API字典;
设置百分比H,对各个系数θj的绝对值从大到小排序,获得排序最前面的H*n个系数;将获得的H*n个系数所对应的集合AS中的API[j]称为关键API,并将关键API存入关键API字典;
步骤2.6,对于步骤1收集到的每个软件样本si,将其API调用序列APIi=<APIi1,APIi2,...,APIic>中的非关键API剔除,从而得到软件样本si对应的精简后的API调用序列API'i;
步骤3,对于每个软件样本si对应的精简后的API调用序列API'i,均对其API调用序列API'i进行挖掘,得到多个API特征序列,将各个API特征序列存入API特征序列集合C(API),具体方法为:
步骤3.1,对于每个软件样本si对应的精简后的API调用序列API'i,定位到关键API,对于定位到的每个关键API,均执行步骤3.2-步骤3.3;
步骤3.2,利用确定性前后向扫描方式,提取与定义的窗口尺度对应的API特征序列,并存入API特征序列集合C(API),方法为:
预定义窗口尺度为b;利用确定性前后向扫描方式,提取所有种包含关键API的尺度为b的API特征序列;
步骤3.3,利用随机性前后向扫描方式,提取与定义的窗口尺度对应的API特征序列,并存入API特征序列集合C(API),方法为:
步骤3.3.1,预定义窗口尺度为b;
步骤3.3.2,预定义随机截取阈值v*;
步骤3.3.3,对于软件样本si,设精简后的API调用序列API'i为:API'i=<API'i1,API'i2,...,API'id>;其中,d为软件样本si对应的精简后的API调用序列API'i中包括的API的总数量;假设API'ik为API'i中的一个关键API;
步骤3.3.4,令计数器b0=0,计数器b1=0;
A1)进行前向扫描,方法为:
按照距离API'ik由近向远的顺序进行前向扫描,首先考察API'i(k-1),考察方法为:随机生成0到1之间的随机数v1,若v1大于阈值v*,则提取API'i(k-1),同时令b0=b0+1;如果v1不大于阈值v*,则不提取API'i(k+1),继续前向考察其他相邻的API';
A2)进行后向扫描,方法为:
按照距离API'ik由近向远的顺序进行后向扫描,首先考察API'i(k+1),考察方法为:随机生成0到1之间的随机数v2,若v2大于阈值v*,则提取API'i(k+1),同时令b1=b1+1;如果v2不大于阈值v*,则不提取API'i(k+1),继续后向考察其他相邻的API';
A3)当前向扫描提取到b0=0个API',而后向扫描提取到b1=b-1个API',则API'ik和后向扫描提取到的b1个API'按顺序排列,形成一种尺度为b的API特征序列;
当前向扫描提取到b0=1个API',而后向扫描提取到b1=b-2个API',则前向扫描提取到的b0个API'、API'ik和后向扫描提取到的b1个API'按顺序排列,形成一种尺度为b的API特征序列;
依此类推
当前向扫描提取到b0=b-1个API',而后向扫描提取到b1=0个API',则前向扫描提取到的b0个API'和API'ik按顺序排列,形成一种尺度为b的API特征序列;
因此,以上各种随机性扫描形成的尺度为b的API特征序列,均存入API特征序列集合C(API);
步骤4,利用统计频率筛选API特征序列集合C(API)中的各个API特征序列,得到筛选后的API特征序列集合C'(API),方法为:
设正常软件样本的总数量为|NS|,对于API特征序列集合C(API)中的每个API特征序列,统计其在所有正常软件样本的精简后的API调用序列中出现的次数F,计算该API特征序列的正常样本覆盖率F/|NS|;如果F/|NS|低于阈值C,则保留该API特征序列;否则,从API特征序列集合C(API)中剔除该API特征序列,进而得...

【专利技术属性】
技术研发人员:莫毓昌
申请(专利权)人:莫毓昌
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1