CN116578981A - 基于关键片段提取的恶意软件检测模型训练、方法和系统 - Google Patents
基于关键片段提取的恶意软件检测模型训练、方法和系统 Download PDFInfo
- Publication number
- CN116578981A CN116578981A CN202310848755.6A CN202310848755A CN116578981A CN 116578981 A CN116578981 A CN 116578981A CN 202310848755 A CN202310848755 A CN 202310848755A CN 116578981 A CN116578981 A CN 116578981A
- Authority
- CN
- China
- Prior art keywords
- api
- software
- model
- slice
- key
- 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.)
- Granted
Links
- 238000000605 extraction Methods 0.000 title claims abstract description 85
- 238000012549 training Methods 0.000 title claims abstract description 84
- 238000000034 method Methods 0.000 title claims abstract description 55
- 239000012634 fragment Substances 0.000 title claims abstract description 22
- 238000001514 detection method Methods 0.000 claims abstract description 82
- 230000001149 cognitive effect Effects 0.000 claims abstract description 47
- 230000006399 behavior Effects 0.000 claims abstract description 35
- 238000007781 pre-processing Methods 0.000 claims description 46
- 230000006870 function Effects 0.000 claims description 44
- 239000011159 matrix material Substances 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 15
- 238000004422 calculation algorithm Methods 0.000 claims description 11
- 239000000284 extract Substances 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005457 optimization Methods 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 6
- 238000003064 k means clustering Methods 0.000 claims description 6
- 238000010801 machine learning Methods 0.000 claims description 6
- 230000015654 memory Effects 0.000 claims description 6
- 238000002372 labelling Methods 0.000 claims description 5
- 239000002131 composite material Substances 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000003062 neural network model Methods 0.000 claims description 3
- 210000004556 brain Anatomy 0.000 abstract description 3
- 230000007246 mechanism Effects 0.000 abstract description 3
- 230000003936 working memory Effects 0.000 abstract description 2
- 238000012360 testing method Methods 0.000 description 24
- 238000012795 verification Methods 0.000 description 18
- 238000010200 validation analysis Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- SLXKOJJOQWFEFD-UHFFFAOYSA-N 6-aminohexanoic acid Chemical compound NCCCCCC(O)=O SLXKOJJOQWFEFD-UHFFFAOYSA-N 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Virology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及恶意软件检测技术领域,尤其是一种基于关键片段提取的恶意软件检测模型训练、方法和系统。本发明中的基于关键片段提取的恶意软件检测模型的训练方法,提供了一种基于API调用的特征值构成的切片识别软件类别的恶意软件检测模型。本发明中,基于人脑工作记忆机制训练认知判别器,从而根据相关性得分除去无关API调用,提取具有关键行为语义的API调用片段,然后基于关键行为语义识别软件的类别。本发明中通过API调用的切片、关键切片的提取等,减少了计算工作量,提供了计算效率和检测精度。
Description
技术领域
本发明涉及恶意软件检测技术领域,尤其是一种基于关键片段提取的恶意软件检测模型训练、方法和系统。
背景技术
目前的恶意软件检测方法主要为静态检测。静态恶意软件检测方法,如基于签名和基于规则的方法,在不运行软件的情况下,通过分析软件的源代码、二进制文件或其他文件的结构实现检测,所需检测代价小。然而,恶意软件可以通过混淆、加壳、动态加载等技术使其避免被静态方法检测出来,同时新型的恶意软件可能不会被静态分析的检测规则所覆盖,因此存在误报或漏报等问题,使得检测性能大大降低。
发明内容
为了克服上述现有技术中恶意软件检测准确率低的缺陷,本发明提出了一种基于关键片段提取的恶意软件检测模型的训练方法,基于API调用进行关键行为语义的提取,再基于关键行为语义识别软件类别,解决了过长API调用序列使得检测效率低、精度差的问题。
本发明提出的一种基于关键片段提取的恶意软件检测模型的训练方法,包括以下步骤;
St1、构建第三基础模型和软件训练样本;第三基础模型包括预处理模块和待训练的认知判别器以及待训练的多步推理器;
预处理模块用于获取软件的API调用的特征值组成的切片集合S;
认知判别器用于计算切片集合S中各切片的相关性得分;
多步推理器包括关键语义提取模块和软件识别模块;关键语义提取模块基于相关性得分从切片集合S中选择切片,并提取被选择切片的关键行为语义;软件识别模块根据关键行为语义判断软件的类别是良性还是恶意;
软件训练样本记作(S_Q,y),S_Q表示软件的API调用序列,y表示软件的类别,即良性还是恶意;预处理模块基于S_Q获取API调用特征序列W,并对W进行切片,以获取切片集合S;
S_Q={S(Q,1),S(Q,2),…,S(Q,a),…,S(Q,A)};
W={API(1);API(2);API(3);…;API(a);…;API(A)};
S(Q,1)、S(Q,2)、…,S(Q,a)、…、S(Q,A)为软件运行过程中顺序产生的A个API调用;a为序数,1≦a≦A;API(a)表示API调用S(Q,a)的特征值;
S={S(1);S(2);…;S(n);…S(N)}
n为序数,S(n)表示S中第n个切片,1≤n≤N;切片S(n)的长度小于或者等于设定的切片长度n0;所有切片的长度之和等于API调用特征序列W的长度;
结合软件训练样本和以下步骤St2-St8对第三基础模型进行第h次迭代,h初始值为1;
St2、从切片集合S中筛选相关性切片集合Z(h-1),Z0从S中随机选择切片构成;将切片集合S和相关性切片集合Z(h-1)输入认知判别器;认知判别器输出为切片集合S中每个切片的相关性得分向量;RA(h,n)为S(n)的相关性得分向量,RA(h,n)为一维向量,其元素为与切片S(n)中API调用一一对应的相关性分值;令切片S(n)的相关性得分记作sco(h,n),sco(h,n)为RA(h,n)的元素均值;
St3、令切片集合S中相关性得分sco(h,n)大于或者等于设定的相关性阈值t0的切片构成相关性切片集合Z(h),令切片集合S中剩余切片构成不相关切片集合S-Z(h);
St4、结合切片的相关性得分向量RA(h,n)和相关性标签RL(h-1,n)计算各切片S(n)的相关性损失τ(h,n);相关性标签RL(h-1,n)为单位向量或者零向量,RL(0,n)初始化为0向量;
St5、结合切片S(n)的相关性损失τ(h,n)标注切片集合S中各个切片的相关性标签,令切片S(n)的相关性标签记作RL(h,n),RL(h,n)为一维单位向量或者一维零向量,RL(h,n)中的元素与S(n)中的API调用一一对应;结合切片的相关性得分向量RA(h,n)和相关性标签RL(h,n)构建第一损失函数,并根据设定的第一损失函数对认知判别器进行策略梯度更新;
St6、根据相关性得分sco(h,n)由高到低的顺序从S中选择n1个切片构建关键切片集合Z(h,1);n1为L(max)/L(snippet)的取整数值;
St7、将关键切片集合Z(h,1)输入关键语义提取模块,关键语义提取模块从Z(h,1)提取关键行为语义IR(h),软件识别模块根据IR(h)判断软件的类别是良性还是恶意;
St8、判断第三基础模型是否收敛;否,则令h=h+1,结合设定的第二损失函数更新多步推理器,然后返回步骤St2;是,则结合收敛后的第三基础模型中的认知判别器和多步推理器与预处理模块构建恶意软件检测模型;收敛后的第三基础模型中的认知判别器为St5中根据第一损失函数更新后的认知判别器。
本发明提出的一种基于关键片段提取的恶意软件检测方法,大大提高软件检测精度,该检测方法首先采用所述的基于关键片段提取的恶意软件检测模型的训练方法获取恶意软件检测模型,然后获取待检测的软件在运行过程中产生的API调用序列并输入所述恶意软件检测模型,获取恶意软件检测模型输出的软件类别作为检测结果。
本发明提出的基于关键片段提取的恶意软件检测系统,为本发明的提供的恶意软件检测模型提供了载体,有利于本发明的推广和应用。
本发明提出的一种基于关键片段提取的恶意软件检测系统,包括存储器,存储器中存储有计算机程序和恶意软件检测模型,所述计算机程序被执行时用于实现所述的基于关键片段提取的恶意软件检测方法。
本发明提出的另一种基于关键片段提取的恶意软件检测系统,包括存储器,存储器中存储有计算机程序,所述计算机程序被执行时用于实现所述的基于关键片段提取的恶意软件检测模型的训练方法,以获取恶意软件检测模型。
本发明的优点在于:
(1)本发明中的基于关键片段提取的恶意软件检测模型的训练方法,提供了一种基于API调用的特征值构成的切片识别软件类别的恶意软件检测模型。本发明中,基于人脑工作记忆机制训练认知判别器,从而根据相关性得分除去无关API调用,提取具有关键行为语义的API调用片段,然后基于关键行为语义识别软件的类别。本发明中通过API调用的切片、关键切片的提取等,减少了计算工作量,提供了计算效率和检测精度。
(2)本发明提出的恶意软件检测方法,提高了检测精度,降低了检测时间,实现了更精确、更有效地恶意软件检测。
(3)本发明结合微观层次的API调用的敏感语义嵌入和宏观层次的关键行为语义构成软件的信息表示,然后基于该信息表示识别软件的类别。通过实验数据证明,本发明提供的恶意软件检测模型相对于现有的基于神经网络的恶意软件检测方法,具有更好的识别表现,大大提高了模型的检测精度,本发明提供的训练方法很好的克服了模型训练过度拟合的缺陷,大大提高了模型的泛化能力。
(4)本发明实际运行过程中,模型的输入的API调用序列可以是软件运行产生的完整的API调用组成的,也可以是软件运行一段时间内的API调用组成的。本发明更加适用于运行时间漫长的软件的检测,灵活性更高,适用场景广泛,且可以很好的避免无效API调用等软件检测干扰手段。
附图说明
图1为恶意检测模型训练方法流程图;
图2为第一种恶意检测模型的示意图;
图3为第二种恶意检测模型的示意图;
图4为敏感语义聚类方法流程图;
图5为第四种恶意检测模型示意图;
图6为第一个实施例中实验组和对照组在训练集上的对比;
图7为第一个实施例中实验组和对照组在验证集上的对比;
图8为第一个实施例中实验组和对照组在测试集上的对比;
图9为第二个实施例中实验组和对照组在训练集上的对比;
图10为第二个实施例中实验组和对照组在验证集上的对比;
图11为第二个实施例中实验组和对照组在测试集上的对比。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施方式中,定义软件在运行过程中顺序产生的A个API调用构成API调用序列S_Q;记作:
S_Q={S(Q,1),S(Q,2),…,S(Q,a),…,S(Q,A)};
S(Q,a)={Na(Q,a);P(Q,a_1),P(Q,a_2),…,P(Q,a_g),…,P(Q,a_G(a));Re(Q,a)};
S(Q,a)表示S_Q中的第a个API调用,1≦a≦A。具体实施时,可定义所述A个API调用为软件运行过程中产生的所有的API调用,也可定义为软件在一定时间上产生的API调用;
Na(Q,a)表示S(Q,a)的名称,Re(Q,a)表示S(Q,a)的返回值;P(Q,a_g)表示S(Q,a)产生的第g个运行参数,G(a)表示S(Q,a)产生的运行参数的总数量,1≦g≦G(a)。
本实施方式提出的恶意软件检测模型基于软件运行过程中生成的API调用判断软件类别,即软件是良性软件还是恶意软件。即,恶意软件检测模型的输入为API调用序列,其输出为软件的类别。
本实施方式中,提出了四种恶意软件检测模型。
第一种恶意软件检测模型
如图2所示,本实施方式中提出的第一种恶意软件检测模型包括预处理模块、认知判别器和多步推理器。
预处理模块的输入为软件运行产生的API调用序列,其输出为由多个切片组成的切片集合。切片由API调用的特征值组成。
令软件运行过程中产生的API调用序列S_Q对应的API调用特征序列为W,即:
W={API(1);API(2);API(3);…;API(a);…;API(A)};
API(a)表示API调用S(Q,a)的特征值。
令S表示W的切片集合,切片长度为L(snippet)=n0,切片总数量为N;则:
S={S(1);S(2);…;S(n);…S(N)};
n为序数,S(n)表示S中第n个切片,1≤n≤N;
当1≤n≤N-1,则S(n)={API(n0×(n-1)+1),API(n0×(n-1)+2),…,API(n0×n)};
当n=N,则S(N)={API(n0×(N-1)+1),API(n0×(N-1)+2),…,API(A)};
A-(n0×(N-1)+1)≤n0。
在对软件Q进行判别时,预处理模块的输入为API调用序列S_Q,预处理模块的输出为切片集合S。
该第一种恶意软件检测模型中,预处理模块直接对API调用序列进行切片,以获取切片集合;即API调用的特征值包含API调用的名称、参数和返回值,公式表示为:
API(a)=S(Q,a)={Na(Q,a);P(Q,a_1),P(Q,a_2),…,P(Q,a_g),…,P(Q,a_G(a));Re(Q,a)};
W=S_Q。
认知判别器的输入连接预处理模块的输出,认知判别器用于计算切片集合S中各切片的相关性得分。即认知判别器的输入为切片集合S,其输出为切片集合S中各切片的相关性得分。
多步推理器包括关键语义提取模块和软件识别模块;关键语义提取模块的输入连接认知判别器的输出,根据认知判别器输出的切片集合S中各切片的相关性得分从高到低的顺序,令切片集合S中相关性得分最高的n1个切片作为关键切片。
关键语义提取模块用于提取各关键切片的关键行为语义;软件识别模块根据关键行为语义判断软件的类别是良性还是恶意。
该第一种恶意软件检测模型的获取,包括以下步骤St1-St8。
St1、构建第三基础模型和软件训练样本;第三基础模型包括预训练的预处理模块和待训练的认知判别器以及待训练的多步推理器;
预处理模块用于获取软件的API调用的特征值组成的切片集合S。
认知判别器用于计算切片集合S中各切片的相关性得分;
多步推理器包括关键语义提取模块和软件识别模块;关键语义提取模块基于相关性得分和设定规则从切片集合S中选择切片,并提取被选择切片的关键行为语义;软件识别模块根据关键行为语义判断软件的类别是良性还是恶意。
软件训练样本记作(S_Q,y),S_Q表示软件的API调用序列,y表示软件的类别,即良性还是恶意;预处理模块基于S_Q获取API调用特征序列W,并对W进行切片,以获取切片集合S;
如图1所示,结合软件训练样本和以下步骤St2-St8对第三基础模型进行第h次迭代,h初始值为1。
St2、从切片集合S中筛选相关性切片集合Z(h-1),Z0从S中随机选择切片构成;将切片集合S和相关性切片集合Z(h-1)输入认知判别器,Z(h-1)∈S;认知判别器输出为切片集合S中每个切片的相关性得分向量,相关性得分向量RA(h,n)为一维向量,其元素为与切片S(n)中API调用一一对应的相关性分值;令切片S(n)的相关性得分记作sco(h,n),sco(h,n)为S(n)对应的相关性得分向量的元素均值。
St3、令切片集合S中相关性得分sco(h,n)大于或者等于设定的相关性阈值t0的切片构成相关性切片集合Z(h),令切片集合S中相关性得分小于设定的相关性阈值t0的切片构成不相关切片集合S-Z(h);相关性阈值t0可在区间(0,1)上取值,具体可设置为0.5。
St4、根据设定的相关性损失策略计算各切片S(n)的相关性损失τ(h,n);相关性损失策略为:
如果S(n)∈Z(h),则τ(h,n)=Lrea[Z(h)-S(n)]-Lrea(Z(h));
如果S(n)∈{S-Z(h)},则τ(h,n)=Lrea[Z(h)+S(n)]-Lrea(Z(h));
Lrea[Z(h)-S(n)]表示集合Z(h)-S(n)中所有切片的相关性得分向量RA(h,n)和相关性标签RL(h-1,n)的交叉熵损失函数;Lrea[Z(h)+S(n)]表示集合Z(h)+S(n)中所有切片的RA(h,n)和RL(h-1,n)的交叉熵损失函数;Lrea(Z(h))表示集合Z(h)中所有切片的RA(h,n)和RL(h-1,n)的交叉熵损失函数;
相关性标签RL(h-1,n)为单位向量或者零向量,RL(0,n)初始化为0向量。
Lrea表示交叉熵损失函数,计算规则如下:
令集合U中包含多个切片u,切片u包含多个API调用,每个切片u的相关性得分向量RA(u)和相关性标签RL(u)已知,Lrea(U)表示集合U中所有切片的RA(u)和RL(u)的交叉熵损失函数;
RA(u)={p(u,1);p(u,2);……p(u,Nu)}
RL(u)={q(u,1);q(u,2);……q(u,Nu)}
Lrea(U)=∑u∈U∑i2∈u[q(u,i2)×lnp(u,i2)+(1-q(u,i2))×ln(1-p(u,i2))]
p(u,i2)表示切片u中第i2个API调用在RA(u)中对应的元素,q(u,i2)表示切片u中第i2个API调用在RL(u)中对应的元素,i2为序数,1≤i2≤Nu,Nu为切片u中的API调用数量。
St5、结合设定的相关性标注策略获取切片集合S中各个切片的相关性标签,令切片S(n)的相关性标签记作RL(h,n),RL(h,n)为一维向量,RL(h,n)中的元素与S(n)中的API调用一一对应;结合切片的相关性得分向量RA(h,n)和相关性标签RL(h,n)构建第一损失函数,并根据设定的第一损失函数对认知判别器进行策略梯度更新。
相关性标注策略为:
如果S(n)∈Z(h),且τ(h,n)≥t(max),则RL(h,n)为一维单位向量;
如果S(n)∈Z(h),且t(min)<τ(h,n)<t(max),则RL(h,n)为一维零向量;
如果S(n)∈{S-Z(h)},且τ(h,n)≤t(min),则RL(h,n)为一维单位向量;
如果S(n)∈{S-Z(h)},且t(min)<τ(h,n)<t(max),则RL(h,n)为一维零向量;
t(max)为设定的相关性损失变化最大阈值,t(min)为设定的相关性损失变化最小阈值。
第一损失函数为:
L1=Lrea(S(rand,h))+Lrea(S(relev,h))
令S中随机选择的n2个切片构成的集合记作随机样本训练集S(rand,h),n2≤L(max);
令从Z(h)中所有切片加上从S-Z(h)中随机选择的部分切片构成的集合记作有关样本训练集S(relev,h),有关样本训练集S(relev,h)的样本数量为n3,n3≤L(max);
Lrea(S(rand,h))为随机样本训练集S(rand,h)上的RA(h,n)和RL(h,n)的交叉熵损失函数;Lrea(S(relev,h))为有关样本训练集S(relev,h)上的RA(h,n)和RL(h,n)的交叉熵损失函数。
St6、结合Z(h)和S-Z(h)构建关键切片集合Z(h,1);关键切片集合Z(h,1)包含n1个切片,n1为L(max)/n0的取整数值,具体可选择四舍五入、向上取整或者向下取整;
如果Z(h)中的片段数量大于或者等于n1,则根据相关性得分从高到低的顺序从Z(h)中选择n1个切片组成备选切片集合Z(h,1);
如果Z(h)中的片段数量小于n1,则将Z(h)中切片全部写入Z(h,1),并从S-Z(h)中选择切片补充到Z(h,1)中,直至Z(h,1)中的切片数量达到n1;具体的,本步骤中从S-Z(h)中根据相关性得分从高到低的顺序选择切片补充到Z(h,1)中。
St7、将关键切片集合Z(h,1)输入关键语义提取模块,关键语义提取模块从Z(h,1)提取关键行为语义IR(h),软件识别模块根据IR(h)判断软件的类别是良性还是恶意。
St8、判断第三基础模型是否收敛;否,则令h=h+1,结合第二损失函数更新多步推理器,然后返回步骤St2;是,则令收敛后的第三基础模型作为恶意软件检测模型;收敛后的第三基础模型中的认知判别器为St5中根据第一损失函数更新后的认知判别器。
第二损失函数为软件测试样本集上软件的真实类别和模型标注类别的交叉熵损失函数。
即L2=∑x∈B[y(x)×ln(Y(x))+(1-y(x))×ln(1-Y(x))];
B表示软件测试样本集,即选做测试样本的软件训练样本的集合;x为B中已知类别的软件,y(x)为x的已知类别,Y(x)为第三基础模型对x的标注类别。
第二种恶意软件检测模型
如图3所示,该第二种恶意软件检测模型相对于第一种恶意软件检测模型,对预处理模块进行了改变。
该第二种恶意软件检测模型中的预处理模块基于API调用的敏感语义进行聚类,将聚类后的类别作为API的特征值,以构建API调用特征序列。具体的,本实施方式中,基于预处理模块实现API调用的敏感语义提取和敏感语义聚类,预处理模块的获取包括图4所示步骤SA1-SA10。
SA1、采集良性软件和恶意软件在虚拟沙箱环境中运行时产生的API调用序列;定义良性软件的集合记作Xb,良性软件运行产生的API调用的集合为良性集合Sb;恶意软件的集合记作Xm,恶意软件运行产生的API调用的集合为恶意集合Sm。
定义API总集合为良性集合Sb和恶意集合Sm的并集,API总集合中第i个API调用记作Si;
Si={Na(i);P(i_1),P(i_2),…,P(i_f),…,P(i_F(i));Re(i)};
Na(i)表示Si的名称,Re(i)表示Si的返回值;P(i_f)表示Si的第f个运行参数,F(i)为Si的运行参数总数量,1≦f≦F(i);
定义软件总集合为Xb和Xm的并集。
SA2、定义API总集合中各API调用的初始标记,将初始标记为“良性”的API调用和初始标记为“恶意”的API调用统一称为API语义训练样本,集合所有API语义训练样本构建API语义训练数据集。
具体的,本步骤中,首先计算各API调用的评分指标,然后结合评分指标和初始标记策略定义API调用的初始标记。
评分指标包括:API调用在良性样本中的频率比例TFb、包含API调用的良性样本的频率比例DFb、描述良性敏感意图的综合评分TDb、API调用在恶意样本中的频率比例TFm、包含API调用的恶意样本的频率比例DFm和描述恶意敏感意图的综合评分TDm。
评分指标计算公式如下:
TFb=N(s|s∈Sb)/|Sb|
DFb=N(s|s∈Xb)/|Xb|
TDb=TFb×DFb
TFm=N(s|s∈Sm)/|Sm|
DFm=N(s|s∈Xm)/|Xm|
TDm=TFm×DFm
其中,N(s|s∈Sb)表示该API调用在良性软件的API调用序列中出现次数的总和,N(s|s∈Xb)表示包含该API调用的良性软件的数量;N(s|s∈Sm)表示该API调用在恶意软件的API调用序列中出现次数的总和,N(s|s∈Xm)表示包含该API调用的恶意软件的数量;|Sb|表示Sb中的API调用的数量,|Sm|表示Sm中的API调用的数量;|Xb|表示Xb中的软件数量,|Xm|表示Xm中的软件数量。
初始标记策略如下:
(1)当TDb≠0,TDm=0,且DFb>1/|Xb|,则API调用的初始标记为“良性”;
(2)当TDm≠0,TDb=0,且DFm>1/|Xm|,则API调用的初始标记为“恶意”;
(3)不属于(1)(2),则标记为“未知”。
SA3、结合API语义训练样本训练获得敏感语义提取器;
获取敏感语义提取器的方式为:构建第一基础模型,第一基础模型包括敏感语义提取模块和API类别判断模块;敏感语义提取模块用于提取API调用Si的敏感语义嵌入Ii,API类别判断模块根据敏感语义嵌入Ii判断API调用Si类别;结合SA2构建的API语义训练数据集对第一基础模型进行训练,获取收敛后的第一基础模型中的敏感语义提取模块作为敏感语义提取器。第一基础模型为神经网络模型,具体实施时,第一基础模型采用BERT模型,将BERT模型的第一层至倒数第二层Dense层记作敏感语义提取模块,将BERT模型的最后一层作为API类别判断模块;第一基础模型对API语义训练数据集中已知初始标记的API语义训练样本进行机器学习,学习过程中采用交叉熵损失函数更新第一基础模型参数。
SA4、通过敏感语义提取器提取API总集合中各API调用的敏感语义嵌入作为聚类样本,对聚类样本进行聚类,获得的聚类类别记作初始类别,初始类别的数量为设定值N0;获取特征类别数量N1,N1为包含的聚类样本大于设定值N(ave)的初始类别数量;N(ave)为设定值,表示预期的簇平均大小。
具体实施时,根据敏感语义嵌入对API总集合中API调用进行聚类时可采用K-Means聚类算法,设定值N0可设置为已知意图类别的多倍数,例如已知意图类别为两个,即“良性”和“恶意”时,可设置N0=10,即将API语义训练样本聚类为10个初始类别;令第j个初始类别中的API语义训练样本数量为Cj;
设置二值数F(j);当Cj≥N(ave),则F(j)=1;当Cj<N(ave),则F(j)=0;
N1=F(1)+F(2)+……F(j)+……+F(N0);
具体实施时,通过N(ave)的设置,可约束N1在区间[5,9]上取值,根据现有研究,5-9是人脑归类机制中的有效感知类别数量区间。
SA5、构建由特征提取模块和K-Means聚类算法组成的聚类模型记作模型M(0,pre);特征提取模块为神经网络模型,其输入为API调用,其输出为API调用的敏感语义嵌入,特征提取模块的初始状态为SA3获得的敏感语义提取器;K-Means聚类算法的输入为特征提取模块输出的敏感语义嵌入,K-Means聚类算法的输出为敏感语义嵌入的聚类结果,即各API调用所归属的类别。
令模型M(0,pre)经过k次迭代后记作模型M(k,pre),模型M(k,pre)的输入为API调用,输出为敏感语义嵌入的聚类结果,即各API调用所归属的聚类类别;k初始值为0;令模型M(k,pre)对API调用的敏感语义嵌入进行聚类后,API调用Si归属的聚类类别记作y(i,k);
y(i,k)∈{聚类类别1,聚类类别2,……,聚类类别n1,……,聚类类别N1}。
SA6、通过模型M(k,pre)对聚类样本进行聚类,获取聚类结果,聚类类别y(i,k)的质心记作O(y(i,k));聚类后所有聚类类别的质心O(y(i,k))构成聚类质心矩阵O(k)。
SA7、结合设定的聚类优化目标优化质心矩阵和各API调用归属的聚类类别,令优化后的质心矩阵记作O(k,1),API调用Si优化后的类别记作y(i,k,1)。
聚类优化目标为:首先优化各API的归属类别,使得Ii-O(y(i,k))的二范数的平方||Ii-O(y(i,k))||2 2最小化;再调整聚类质心矩阵O(k),使得||Ii-O(y(i,k))||2 2的平均值最小化;
聚类优化目标公式表示如下:
其中,N(tr)表示API语义训练数据集中API语义训练样本的数量,I(i,k)为模型M(k,pre)中的敏感语义提取器提取的API调用Si的敏感语义嵌入。
SA8、获取聚类质心矩阵O(k)到质心矩阵O(k,1)的映射函数Φ,采用映射函数Φ的逆函数优化聚类结果,令优化后的API调用归属的类别记作y(i,k,2);公式表示为:
O(k,1)=Φ[O(k,1)]
y(i,k,2)=Φ-1[y(i,k,1)]
其中,Φ-1表示Φ的逆函数。
SA9、结合损失函数L反向更新模型M(k,pre);
损失函数为:
模型M(k,pre)的输出为与输入的API调用一一对应的类别概率矩阵;H(i,k)表示S(i)的类别概率矩阵,其为1行N1列矩阵,N1个元素分别对应API调用归属于各个类别的概率;y(i,k)为H(i,k)中最大概率对应的类别;φ(y(i,k,2))表示类别概率矩阵H(i,k)中指向类别y(i,k,2)的概率值,φ(Ii,j)表示类别概率矩阵H(i,k)中指向类别j的概率值;exp表示以自然数e为底的指数函数,N(tr)表示语义训练数据集中的API语义训练样本的数量。
SA10、令k更新为k+1,判断模型M(k,pre)是否收敛;否,则返回步骤SA6;是,则输出模型M(k,pre)作为敏感语义聚类子模型;获取敏感语义提取器和敏感语义聚类子模型构成预处理模块,预处理模块的输入即为敏感语义提取器的输入,敏感语义提取器的输出即为敏感语义聚类子模型的输入,预处理模块将各API调用的类别作为特征值,并构建切片集合S作为输出。
模型M(k,pre)的收敛条件为:k大于设定值。
如此,本实施方式中,结合步骤SA1-SA10获得预处理模块,将软件运行过程中产生的API调用序列S_Q输入预处理模块,预处理模块输出API调用序列S_Q中各API调用的类别序列Y_Q;
Y_Q={Na(Q,1),y(Q,1);Na(Q,2),y(Q,2);…;Na(Q,a),y(Q,a);…;Na(Q,A),y(Q,A)}
y(Q,a)为S_Q中API调用S(Q,a)的类别。
该第二种恶意软件检测模型相对于第一种恶意软件检测模型,仅改变了预处理模块,第二种软件检测模型在训练时,将预先训练的预处理模块与待训练的认知判别器和待训练的多步推理器组合成第三基础模型,然后执行上述的St1-St8,以训练认知判别器和多步推理器,从而获得收敛后的第三基础模型作为恶意检测模型。
本实施方式中,令API调用的特征值包括其类别,具体可设置为:
API(a)={Na(Q,a),y(Q,a)};
其中,Na(Q,a)为S_Q的名称。
第三种恶意检测模型
本实施例方式中,在第二种恶意检测模型的基础上,将收敛后的第三基础模型中的认知判别器和关键行为提取模块与预训练的预处理模块以及待训练的识别网络进行组合,形成第四基础模型。
预处理模块基于API调用序列生产切片集合S,认知判别器计算切片集合S中的切片的相关性得分;关键语义提取模块根据相关性得分从切片集合S中提取关键切片,并进一步提取关键切片的关键行为语义;识别网络基于关键行为语义判断软件类别。令第四基础模型对软件训练样本进行机器学习,学习过程中通过损失反向更新识别网络,直至模型收敛时,获取第四基础模型作为恶意软件检测模型。
第四种恶意检测模型
如图5所示,本实施例方式中,在第二种恶意检测模型的基础上,将收敛后的第三基础模型中的认知判别器和关键行为提取模块与预训练的预处理模块以及待训练的识别网络进行组合,形成第二基础模型。
预处理模块基于API调用序列生产切片集合S,认知判别器计算切片集合S中的切片的相关性得分;关键语义提取模块根据相关性得分从切片集合S中提取关键切片,并进一步提取关键切片的关键行为语义;
令API调用序列中API调用的敏感语义的集合记作API语义序列;
识别网络的输入连接预处理模块中敏感语义提取器的输出和关键行为提取模块的输出,识别网络的输入为软件的API语义序列与关键行为语义的组合,识别网络的输出为软件类别。
令第二基础模型对软件训练样本进行机器学习,学习过程中通过损失反向更新识别网络,直至模型收敛时,获取第二基础模型作为恶意软件检测模型。
值得注意的是,本发明中在进行模型训练时,模型收敛的条件可设置为模型损失收敛、模型迭代次数达到设定值或者模型损失低于设定值。
以下结合具体的实施例对本发明提供的恶意软件检测模型进行验证。
本实施例中,认知判别器、多步推理器和敏感语义提取器均基于BERT模型构建,聚类算法采用K-Means聚类算法。
本实施例的实验样本来源于某大数据安全分析大赛所使用的数据集,数据集包含了20000个恶意软件样本和20000个良性软件样本。将该数据集划分为训练集、验证集和测试集。
训练集包含10000个恶意软件样本和10000个良性软件样本;
验证集包含2000个恶意软件样本和2000个良性软件样本;
测试集包含8000个恶意软件样本和8000个良性软件样本。
本实施例中,首先将训练集、验证集和测试集中的软件样本在虚拟沙箱环境中运行,以软件样本在虚拟沙箱环境中运行产生的前1000个API调用作为API调用序列。
本实施例的实验采用的软件样本均是基于Windows操作系统的运行软件。
本实施例中,采用的对比模型包括嵌入表示提取模块和软件识别模块,嵌入表示提取模块基于Word2Vec网络获得API调用的语义嵌入表示,软件识别模块根据软件API调用序列对应的语义嵌入表示序列判断软件类别。对比模型基于训练集和测试集进行机器学习。
实施例中首先对第一种恶意软件检测模型进行验证,为了更好的验证第一种恶意软件检测模型的精确性,本实施例中首先结合训练集和测试集,采用上述步骤St1-St8获取第一种恶意软件检测模型;然后将训练完成的第一种恶意软件检测模型的软件识别模块替换为待训练的基线网络,基线网络基于关键行为提取模块提取的关键行为语义判断软件的类别;再令替换识别网络后的第一种恶意软件检测模型对训练集和测试集进行机器学习,直至模型收敛,将收敛后的模型作为验证模型。
对比模型和验证模型训练完成后,基于测试集分别测试验证模型和对比模型的性能,以观测本发明提出的认知判别器和多步推理器的性能。
本实施例结合准确率、F1-分数、检测时间来衡量模型的性能。
为方便观察结果,本实施例中基于10-基线网络构建验证模型中的识别网络和对比模型中的软件识别模块。10-基线网络采用LR网络、SVM网络、KNN网络、NB网络、DT网络、RF网络、Text-CNN网络、BiRNN-A网络、BiLSTM-A网络和BiGRU-A网络构建。
验证模型和对比模型在每个基线网络下在训练集、验证集和测试集的检测性能结果分别如表1、表2、表3、图6、图7和图8所示;其中实验组数据为验证模型的检测数据统计,对照组为对比模型的检测数据统计。
由数据结果可以看出,相对于对比模型,验证模型在准确率、F1分数和时间上均具有更好的表现;在训练集上,检测准确率和F1-分数最高提升11.05%和11.74%,在时间上最多可减少27.42%;在验证集上,检测准确率和F1-分数最高提升18.8%和19.51%,在时间上最多可减少23.61%;在测试集上,检测准确率和F1-分数最高提升19.05%和19.89%,在时间上最多可减少23.66%。
表4所示为实验组相对于对照组在各性能变化平均值上的表现;可见,验证模型相对于对比模型在验证集和测试集上的性能提升更加明显,检测时间在训练集、验证集和测试集上均有明显降低。可见本发明提供的恶意软件检测模型能有效解决模型过拟合问题,具有更好的泛化能力。
表1、训练集对比结果
表2验证集对比结果
表3测试集对比结果
表4、实验组相对于对照组在各性能变化平均值上的表现
本实施例中还对第四种恶意软件检测模型进行验证。
本实施例中首先结合步骤SA1-SA9获取预处理模块,然后结合训练集和测试集训练第二种恶意软件检测模型,再从第二种恶意软件检测模型中提取认知判别器和关键行为提取模块,再结合预处理模块、认知判别器、关键行为提取模块和识别网络构建第二基础模型,再结合训练集和测试集训练第二基础模型,将收敛后的第二基础模型作为第四种恶意软件检测模型,然后将第四种恶意软件检测模型和对比模型进行对比验证。
本实施例中基于10-基线网络构建第二基础模型中的识别网络和对比模型中的软件识别模块。10-基线网络采用LR网络、SVM网络、KNN网络、NB网络、DT网络、RF网络、Text-CNN网络、BiRNN-A网络、BiLSTM-A网络和BiGRU-A网络构建。
第四恶意软件检测模型和对比模型在每个基线网络下在训练集、验证集和测试集的检测性能结果分别如表5、表6、表7、图9、图10和图11所示;其中实验组数据为第四恶意软件检测模型的检测数据统计,对照组为对比模型的检测数据统计。
由数据结果可以看出,相对于对比模型,第四恶意软件检测模型在准确率、F1分数和时间上均具有更好的表现;在训练集上,检测准确率和F1-分数最高提升14.83%和16.48%,在时间上最多可减少9.32%;在验证集上,检测准确率和F1-分数最高提升27.18%和27.8%,在时间上最多可减少12.15%;在测试集上,检测准确率和F1-分数最高提升27.00%和27.75%,在时间上最多可减少12.15%。
表8所示为实验组相对于对照组在各性能变化平均值上的表现;可见,第四恶意软件检测模型相对于对比模型在验证集和测试集上的性能提升更加明显,检测时间在训练集、验证集和测试集上均有明显降低。可见本发明提供的恶意软件检测模型能有效解决模型过拟合问题,具有更好的泛化能力。
且该第四种恶意软件检测模型相对于上述验证模型在验证集和测试集上具有更好的表现。
表5、训练集对比结果
表6、验证集对比结果
表7、测试集对比结果
表8、实验组相对于对照组在各性能变化平均值上的表现
/>
以上仅为本发明创造的较佳实施例而已,并不用以限制本发明创造,凡在本发明创造的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明创造的保护范围之内。
Claims (16)
1.一种基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,包括以下步骤;
St1、构建第三基础模型和软件训练样本;第三基础模型包括预处理模块和待训练的认知判别器以及待训练的多步推理器;
预处理模块用于获取软件的API调用的特征值组成的切片集合S;
认知判别器用于计算切片集合S中各切片的相关性得分;
多步推理器包括关键语义提取模块和软件识别模块;关键语义提取模块基于相关性得分从切片集合S中选择切片,并提取被选择切片的关键行为语义;软件识别模块根据关键行为语义判断软件的类别是良性还是恶意;
软件训练样本记作(S_Q,y),S_Q表示软件的API调用序列,y表示软件的类别,即良性还是恶意;预处理模块基于S_Q获取API调用特征序列W,并对W进行切片,以获取切片集合S;
S_Q={S(Q,1),S(Q,2),…,S(Q,a),…,S(Q,A)};
W={API(1);API(2);API(3);…;API(a);…;API(A)};
S(Q,1)、S(Q,2)、…,S(Q,a)、…、S(Q,A)为软件运行过程中顺序产生的A个API调用;a为序数,1≦a≦A;API(a)表示API调用S(Q,a)的特征值;
S={S(1);S(2);…;S(n);…S(N)}
n为序数,S(n)表示S中第n个切片,1≤n≤N;切片S(n)的长度小于或者等于设定的切片长度n0;所有切片的长度之和等于API调用特征序列W的长度;
结合软件训练样本和以下步骤St2-St8对第三基础模型进行第h次迭代,h初始值为1;
St2、从切片集合S中筛选相关性切片集合Z(h-1),Z0从S中随机选择切片构成;将切片集合S和相关性切片集合Z(h-1)输入认知判别器;认知判别器输出为切片集合S中每个切片的相关性得分向量;RA(h,n)为S(n)的相关性得分向量,RA(h,n)为一维向量,其元素为与切片S(n)中API调用一一对应的相关性分值;令切片S(n)的相关性得分记作sco(h,n),sco(h,n)为RA(h,n)的元素均值;
St3、令切片集合S中相关性得分sco(h,n)大于或者等于设定的相关性阈值t0的切片构成相关性切片集合Z(h),令切片集合S中剩余切片构成不相关切片集合S-Z(h);
St4、结合切片的相关性得分向量RA(h,n)和相关性标签RL(h-1,n)计算各切片S(n)的相关性损失τ(h,n);相关性标签RL(h-1,n)为单位向量或者零向量,RL(0,n)初始化为0向量;
St5、结合切片S(n)的相关性损失τ(h,n)标注切片集合S中各个切片的相关性标签,令切片S(n)的相关性标签记作RL(h,n),RL(h,n)为一维单位向量或者一维零向量,RL(h,n)中的元素与S(n)中的API调用一一对应;结合切片的相关性得分向量RA(h,n)和相关性标签RL(h,n)构建第一损失函数,并根据设定的第一损失函数对认知判别器进行策略梯度更新;
St6、根据相关性得分sco(h,n)由高到低的顺序从S中选择n1个切片构建关键切片集合Z(h,1);n1为L(max)/n0的取整数值,L(max)为设定值;
St7、将关键切片集合Z(h,1)输入关键语义提取模块,关键语义提取模块从Z(h,1)提取关键行为语义IR(h),软件识别模块根据IR(h)判断软件的类别是良性还是恶意;
St8、判断第三基础模型是否收敛;否,则令h=h+1,结合设定的第二损失函数更新多步推理器,然后返回步骤St2;是,则结合收敛后的第三基础模型中的认知判别器和多步推理器与预处理模块构建恶意软件检测模型;收敛后的第三基础模型中的认知判别器为St5中根据第一损失函数更新后的认知判别器。
2.如权利要求1所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,St4中根据以下相关性损失策略计算切片的相关性损失:
如果S(n)∈Z(h),则τ(h,n)=Lrea[Z(h)-S(n)]-Lrea(Z(h));
如果S(n)∈{S-Z(h)},则τ(h,n)=Lrea[Z(h)+S(n)]-Lrea(Z(h));
Lrea[Z(h)-S(n)]表示集合Z(h)-S(n)中所有切片的相关性得分向量RA(h,n)和相关性标签RL(h-1,n)的交叉熵损失函数;Lrea[Z(h)+S(n)]表示集合Z(h)+S(n)中所有切片的RA(h,n)和RL(h-1,n)的交叉熵损失函数;Lrea(Z(h))表示集合Z(h)中所有切片的RA(h,n)和RL(h-1,n)的交叉熵损失函数。
3.如权利要求2所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,St5中根据相关性标注策略获取各切片S(n)的相关性标签记作RL(h,n);相关性标注策略为:
如果S(n)∈Z(h),且τ(h,n)≥t(max),则RL(h,n)为一维单位向量;
如果S(n)∈Z(h),且t(min)<τ(h,n)<t(max),则RL(h,n)为一维零向量;
如果S(n)∈{S-Z(h)},且τ(h,n)≤t(min),则RL(h,n)为一维单位向量;
如果S(n)∈{S-Z(h)},且t(min)<τ(h,n)<t(max),则RL(h,n)为一维零向量;
t(max)为设定的相关性损失变化最大阈值,t(min)为设定的相关性损失变化最小阈值。
4.如权利要求3所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,第一损失函数为:
L1=Lrea(S(rand,h))+Lrea(S(relev,h));
令从S中随机选择的n2个切片构成的集合记作随机样本训练集S(rand,h),n2≤L(max);L(max)为设定值;令Z(h)中所有切片加上从S-Z(h)中随机选择的部分切片构成的集合记作有关样本训练集S(relev,h),有关样本训练集S(relev,h)的样本数量为n3,n3≤L(max);
Lrea(S(rand,h))为随机样本训练集S(rand,h)上的RA(h,n)和RL(h,n)的交叉熵损失函数;Lrea(S(relev,h))为有关样本训练集S(relev,h)上的RA(h,n)和RL(h,n)的交叉熵损失函数。
5.如权利要求1所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,预处理模块为预训练的神经网络模型,预处理模块的获取包括以下步骤SA1-SA10:
SA1、采集良性软件和恶意软件在虚拟沙箱环境中运行时产生的API调用序列;定义良性软件的集合记作Xb,良性软件运行产生的API调用的集合为良性集合Sb;恶意软件的集合记作Xm,恶意软件运行产生的API调用的集合为恶意集合Sm;定义API总集合为良性集合Sb和恶意集合Sm的并集,API总集合中第i个API调用记作Si;定义软件总集合为Xb和Xm的并集;
SA2、定义API总集合中各API调用的初始标记,将初始标记为“良性”的API调用和初始标记为“恶意”的API调用统一称为API语义训练样本,集合所有API语义训练样本构建API语义训练数据集;
SA3、构建第一基础模型,第一基础模型包括敏感语义提取模块和API类别判断模块;敏感语义提取模块用于提取API调用Si的敏感语义嵌入Ii,API类别判断模块根据敏感语义嵌入Ii判断API调用Si类别;结合SA2构建的API语义训练数据集对第一基础模型进行训练,获取收敛后的第一基础模型中的敏感语义提取模块作为敏感语义提取器;
SA4、通过敏感语义提取器提取API总集合中各API调用的敏感语义嵌入作为聚类样本,对聚类样本进行聚类,获得的聚类类别记作初始类别,初始类别的数量为设定值N0;获取特征类别数量N1,N1为包含的聚类样本大于N(ave)的初始类别数量;N(ave)为设定值,表示预期的簇平均大小;
SA5、构建由特征提取模块和聚类算法组成的聚类模型记作模型M(0,pre);特征提取模块的初始状态为SA3获得的敏感语义提取器;聚类算法的输入为特征提取模块输出的敏感语义嵌入,聚类算法的输出为敏感语义嵌入的聚类结果,即各API调用所归属的类别;令模型M(0,pre)经过k次迭代后记作模型M(k,pre),模型M(k,pre)的输入为API调用,输出为敏感语义嵌入的聚类结果,即各API调用所归属的聚类类别;k初始值为0;令模型M(k,pre)对API调用的敏感语义嵌入进行聚类后,API调用Si归属的聚类类别记作y(i,k);
y(i,k)∈{聚类类别1,聚类类别2,……,聚类类别n1,……,聚类类别N1};
SA6、通过模型M(k,pre)对聚类样本进行聚类,获取聚类结果,聚类类别y(i,k)的质心记作O(y(i,k));聚类后所有聚类类别的质心O(y(i,k))构成聚类质心矩阵O(k);
SA7、结合设定的聚类优化目标优化质心矩阵和各API调用归属的聚类类别,令优化后的质心矩阵记作O(k,1),API调用Si优化后的类别记作y(i,k,1);
SA8、获取聚类质心矩阵O(k)到质心矩阵O(k,1)的映射函数Φ,采用映射函数Φ的逆函数优化聚类结果,令优化后的API调用归属的类别记作y(i,k,2);
SA9、结合设定的损失函数L反向更新模型M(k,pre);
SA10、令k更新为k+1,判断模型M(k,pre)是否收敛;否,则返回步骤SA6;是,则输出模型M(k,pre)作为敏感语义聚类子模型,获取敏感语义提取器和敏感语义聚类子模型构成预处理模块,预处理模块的输入即为敏感语义提取器的输入,敏感语义提取器的输出即为敏感语义聚类子模型的输入,预处理模块将各API调用的类别作为特征值,并构建切片集合S作为输出。
6.如权利要求5所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,SA2中,首先计算各API调用的评分指标,然后结合评分指标和初始标记策略定义API调用的初始标记;评分指标包括:API调用在良性样本中的频率比例TFb、包含API调用的良性样本的频率比例DFb、描述良性敏感意图的综合评分TDb、API调用在恶意样本中的频率比例TFm、包含API调用的恶意样本的频率比例DFm和描述恶意敏感意图的综合评分TDm;
评分指标计算公式如下:
TFb=N(s|s∈Sb)/|Sb|
DFb=N(s|s∈Xb)/|Xb|
TDb=TFb×DFb
TFm=N(s|s∈Sm)/|Sm|
DFm=N(s|s∈Xm)/|Xm|
TDm=TFm×DFm
其中,N(s|s∈Sb)表示该API调用在良性软件的API调用序列中出现次数的总和,N(s|s∈Xb)表示包含该API调用的良性软件的数量;N(s|s∈Sm)表示该API调用在恶意软件的API调用序列中出现次数的总和,N(s|s∈Xm)表示包含该API调用的恶意软件的数量;|Sb|表示Sb中的API调用的数量,|Sm|表示Sm中的API调用的数量;|Xb|表示Xb中的软件数量,|Xm|表示Xm中的软件数量;
初始标记策略如下:
(1)当TDb≠0,TDm=0,且DFb>1/|Xb|,则API调用的初始标记为“良性”;
(2)当TDm≠0,TDb=0,且DFm>1/|Xm|,则API调用的初始标记为“恶意”;
(3)不属于(1)(2),则标记为“未知”。
7.如权利要求5所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,SA7中聚类优化目标为:首先优化各API的归属类别,使得Ii-O(y(i,k))的二范数的平方||Ii-O(y(i,k))||2 2最小化;再调整聚类质心矩阵O(k),使得||Ii-O(y(i,k))||2 2的平均值最小化。
8.如权利要求5所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,SA9中损失函数L为:
模型M(k,pre)的输出为与输入的API调用一一对应的类别概率矩阵;H(i,k)表示S(i)的类别概率矩阵,其为1行N1列矩阵,N1个元素分别对应API调用归属于各个类别的概率;y(i,k)为H(i,k)中最大概率对应的类别;φ(y(i,k,2))表示类别概率矩阵H(i,k)中指向类别y(i,k,2)的概率值,φ(Ii,j)表示类别概率矩阵H(i,k)中指向类别j的概率值;exp表示以自然数e为底的指数函数,N(tr)表示语义训练数据集中的API语义训练样本的数量。
9.如权利要求5所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,第一基础模型基于BERT模型构建,聚类算法采用K-Means聚类算法。
10.如权利要求1所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,API调用的特征值包含API调用的名称、参数和返回值。
11.如权利要求1所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,认知判别器和多步推理器均基于BERT模型构建。
12.如权利要求1所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,第二损失函数为软件测试样本集上软件的真实类别和模型标注类别的交叉熵损失函数;软件测试样本集为标注有软件类别的软件样本集合。
13.如权利要求5所述的基于关键片段提取的恶意软件检测模型的训练方法,其特征在于,St8中结合收敛后的第三基础模型与预处理模块构建恶意软件检测模型的方法包括以下分步骤:
St81、从收敛后的第三基础模型中提取认知判别器和关键行为提取模块,将认知判别器和关键行为提取模块与预训练的预处理模块和待训练的识别网络进行组合,形成第二基础模型;
预处理模块的输入即为第二基础模型的输入,认知判别器的输入连接预处理模块的输出,认知判别器的输出连接关键行为提取模块的输入,识别网络的输入分别连接预处理模块中敏感语义提取器的输出和关键行为提取模块的输出,识别网络的输出即为第二基础模型的输出;
预处理模块基于软件在运行过程中产生的API调用序列获取切片集合S;认知判别器计算切片集合S中的切片的相关性得分;关键语义提取模块根据相关性得分从切片集合S中提取关键切片,并进一步提取关键切片的关键行为语义;识别网络基于软件的API语义序列与关键行为语义的组合获取软件类别;API语义序列为API调用序列中API调用的敏感语义的集合;
St82、令第二基础模型对软件训练样本进行机器学习,学习过程中通过损失反向更新识别网络,直至模型收敛时,获取第二基础模型作为恶意软件检测模型。
14.一种基于关键片段提取的恶意软件检测方法,其特征在于,首先采用权利要求1-13任一项所述的基于关键片段提取的恶意软件检测模型的训练方法获取恶意软件检测模型,然后获取待检测的软件在运行过程中产生的API调用序列并输入所述恶意软件检测模型,获取恶意软件检测模型输出的软件类别作为检测结果。
15.一种基于关键片段提取的恶意软件检测系统,其特征在于,包括存储器,存储器中存储有计算机程序和恶意软件检测模型,所述计算机程序被执行时用于实现如权利要求14所述的基于关键片段提取的恶意软件检测方法。
16.一种基于关键片段提取的恶意软件检测系统,其特征在于,包括存储器,存储器中存储有计算机程序,所述计算机程序被执行时用于实现如权利要求1-13任一项所述的基于关键片段提取的恶意软件检测模型的训练方法,以获取恶意软件检测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310848755.6A CN116578981B (zh) | 2023-07-12 | 2023-07-12 | 基于关键片段提取的恶意软件检测模型训练、方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310848755.6A CN116578981B (zh) | 2023-07-12 | 2023-07-12 | 基于关键片段提取的恶意软件检测模型训练、方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116578981A true CN116578981A (zh) | 2023-08-11 |
CN116578981B CN116578981B (zh) | 2023-09-22 |
Family
ID=87543506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310848755.6A Active CN116578981B (zh) | 2023-07-12 | 2023-07-12 | 基于关键片段提取的恶意软件检测模型训练、方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116578981B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190014130A1 (en) * | 2017-07-04 | 2019-01-10 | Chronicle Llc | Detecting safe internet resources |
CN112000954A (zh) * | 2020-08-25 | 2020-11-27 | 莫毓昌 | 一种基于特征序列挖掘和精简的恶意软件检测方法 |
CN112446026A (zh) * | 2019-09-03 | 2021-03-05 | 中移(苏州)软件技术有限公司 | 一种恶意软件的检测方法、装置及存储介质 |
US20210141897A1 (en) * | 2019-11-11 | 2021-05-13 | Microsoft Technology Licensing, Llc | Detecting unknown malicious content in computer systems |
CN115982706A (zh) * | 2022-12-30 | 2023-04-18 | 上海交通大学 | 基于api调用序列行为多视角融合的恶意软件检测方法 |
-
2023
- 2023-07-12 CN CN202310848755.6A patent/CN116578981B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190014130A1 (en) * | 2017-07-04 | 2019-01-10 | Chronicle Llc | Detecting safe internet resources |
CN112446026A (zh) * | 2019-09-03 | 2021-03-05 | 中移(苏州)软件技术有限公司 | 一种恶意软件的检测方法、装置及存储介质 |
US20210141897A1 (en) * | 2019-11-11 | 2021-05-13 | Microsoft Technology Licensing, Llc | Detecting unknown malicious content in computer systems |
CN112000954A (zh) * | 2020-08-25 | 2020-11-27 | 莫毓昌 | 一种基于特征序列挖掘和精简的恶意软件检测方法 |
CN115982706A (zh) * | 2022-12-30 | 2023-04-18 | 上海交通大学 | 基于api调用序列行为多视角融合的恶意软件检测方法 |
Non-Patent Citations (3)
Title |
---|
张涛;王俊峰;: "基于文本嵌入特征表示的恶意软件家族分类", 四川大学学报(自然科学版), no. 03 * |
王兴凤;黄琨茗;张文杰;: "基于API序列和卷积神经网络的恶意代码检测", 信息安全研究, no. 03 * |
高洋;王礼伟;任望;谢丰;莫晓锋;罗熊;王卫苹;杨玺;: "基于强化学习的工控系统恶意软件行为检测方法", 工程科学学报, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
CN116578981B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108632279B (zh) | 一种基于网络流量的多层异常检测方法 | |
CN104715021B (zh) | 一种基于哈希方法的多标记学习的学习方法 | |
Wang et al. | Protein subcellular localization prediction for Gram-negative bacteria using amino acid subalphabets and a combination of multiple support vector machines | |
CN112201300B (zh) | 基于深度图像特征和阈值学习策略的蛋白质亚细胞定位的方法 | |
CN112235327A (zh) | 异常日志检测方法、装置、设备和计算机可读存储介质 | |
CN113887643B (zh) | 一种基于伪标签自训练和源域再训练的新对话意图识别方法 | |
CN112926045B (zh) | 一种基于逻辑回归模型的群控设备识别方法 | |
CN111325264A (zh) | 一种基于熵的多标签数据分类方法 | |
Rossel et al. | Automatic specimen identification of Harpacticoids (Crustacea: Copepoda) using Random Forest and MALDI‐TOF mass spectra, including a post hoc test for false positive discovery | |
CN110265085A (zh) | 一种蛋白质相互作用位点识别方法 | |
CN114897085A (zh) | 一种基于封闭子图链路预测的聚类方法及计算机设备 | |
CN116578981B (zh) | 基于关键片段提取的恶意软件检测模型训练、方法和系统 | |
Ravi et al. | Behavior-based malware analysis using profile hidden markov models | |
Dotan et al. | Effect of tokenization on transformers for biological sequences | |
CN115662595A (zh) | 基于在线诊疗系统的用户信息管理方法及系统 | |
CN108805162A (zh) | 一种基于粒子群优化的酵母菌多标记特征选择方法及装置 | |
CN113837293A (zh) | mRNA亚细胞定位模型训练方法、定位方法及可读存储介质 | |
CN115062301A (zh) | 指令与系统调用序列关联重构的可进化恶意软件识别方法 | |
Merschmann et al. | A lazy data mining approach for protein classification | |
CN114139617A (zh) | 一种基于深度聚类的新类目标识别方法及装置 | |
KR20170085876A (ko) | 데이터 마이닝을 이용한 질병 연관성 분석 방법 | |
CN116578969B (zh) | 基于感知归类的软件检测模型训练方法、检测方法和系统 | |
Eftekhar | Prediction of protein subcellular localization using deep learning and data augmentation | |
Li et al. | An overview of cluster analysis based on particle swarm optimization | |
Ma et al. | Clustering and re-clustering for pattern discovery in gene expression data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |