CN117034275B - 基于Yara引擎的恶意文件检测方法、设备及介质 - Google Patents

基于Yara引擎的恶意文件检测方法、设备及介质 Download PDF

Info

Publication number
CN117034275B
CN117034275B CN202311303198.6A CN202311303198A CN117034275B CN 117034275 B CN117034275 B CN 117034275B CN 202311303198 A CN202311303198 A CN 202311303198A CN 117034275 B CN117034275 B CN 117034275B
Authority
CN
China
Prior art keywords
operation code
code word
word segmentation
character string
special character
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.)
Active
Application number
CN202311303198.6A
Other languages
English (en)
Other versions
CN117034275A (zh
Inventor
封元华
康学斌
肖新光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Antiy Network Technology Co Ltd
Original Assignee
Beijing Antiy Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Antiy Network Technology Co Ltd filed Critical Beijing Antiy Network Technology Co Ltd
Priority to CN202311303198.6A priority Critical patent/CN117034275B/zh
Publication of CN117034275A publication Critical patent/CN117034275A/zh
Application granted granted Critical
Publication of CN117034275B publication Critical patent/CN117034275B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Machine Translation (AREA)

Abstract

本发明提供了一种基于Yara引擎的恶意文件检测方法、设备及介质,涉及恶意文件检测领域,所述方法包括:获取待检测文件A;若A的若干预设特征与预设Yara引擎的检测规则库中的任一检测规则符合预设的匹配条件,则将A确定为恶意文件;获取若干已知的恶意文件;根据每一恶意文件的属性,对所有的已知恶意文件进行聚类,以得到恶意文件组集B;获取B中每一恶意文件组对应的目标操作码分词列表集EB;获取B中每一恶意文件组对应的目标特殊字符串列表HB;根据EB和HB生成若干目标检测规则;通过预设Yara引擎将所有的目标检测规则进行加载,以得到所述检测规则库;本发明能够提高检测规则库的生成效率。

Description

基于Yara引擎的恶意文件检测方法、设备及介质
技术领域
本发明涉及恶意文件检测领域,特别是涉及一种基于Yara引擎的恶意文件检测方法、设备及介质。
背景技术
随着互联网不断普及,越来越多的单位和个人计算机都连接到互联网,随着网络安全问题也日益严重;如病毒、木马及其他恶意文件也层出不穷,恶意文件通常会在用户不知情的情况下渗入计算机系统,对用户的计算机造成严重损坏;针对恶意文件的检测,需要建立包含有若干检测规则的检测规则库,目前,检测规则库建立时,需要大量的人工分析和样本测试后才能得到所需要的检测规则,导致恶意文件的检测规则库的生成效率较低。
发明内容
基于此,本发明提供一种基于Yara引擎的恶意文件检测方法、设备及介质,以解决现有技术中需要大量的人工分析和样本测试后才能得到所需要的检测规则,导致恶意文件的检测规则生成效率较低的问题。
根据本申请的第一方面,提供了一种基于Yara引擎的恶意文件检测方法,所述方法包括:
获取待检测文件A;
若A的若干预设特征与预设Yara引擎的检测规则库中的任一目标检测规则符合预设的匹配条件,则将A确定为恶意文件;所述检测规则库通过以下步骤生成:
获取若干已知恶意文件;
根据每一已知恶意文件的预设属性,对所有的已知恶意文件进行聚类,以得到已知恶意文件组集B=(B1,B2,…,Bi,…,Bn),i=1,2,…,n;其中,Bi为对所有的已知恶意文件进行聚类得到的第i个已知恶意文件组,n为对所有的已知恶意文件进行聚类得到的已知恶意文件组的数量;每一已知恶意文件组对应一个预设属性;
获取B中每一已知恶意文件组对应的目标操作码分词列表集EB=(EB1,EB2,…,EBi,…,EBn);其中,EBi为Bi对应的目标操作码列表;EBi根据操作码分词白名单库以及Bi中的每一已知恶意文件对应的若干目标操作码分词得到;目标操作码分词根据对应的已知恶意文件的若干操作码得到;
获取B中每一已知恶意文件组对应的目标特殊字符串列表HB=(HB1,HB2,…,HBi,…,HBn);其中,HBi为Bi对应的目标特殊字符串列表;HBi根据预设的字符串白名单库、预设特殊字符串词典以及每一已知恶意文件对应的若干特殊字符串得到;特殊字符串用于表征对应的文件具有恶意属性;
根据EB和HB生成若干目标检测规则;
通过预设Yara引擎将所有的目标检测规则进行加载,以得到所述检测规则库。
可选的,EBi通过以下步骤得到:
获取Bi=(Bi,1,Bi,2,…,Bi,m,…,Bi,f(i)),m=1,2,…,f(i);Bi,m为Bi中的第m个已知恶意文件,f(i)为Bi中已知恶意文件的数量;
通过OpCode N-gram算法,对Bi中的每一已知恶意文件进行操作码提取,以得到Bi对应的操作码序列集CBi=(CBi,1,CBi,2,…,CBi,m,…,CBi,f(i));其中,CBi,m为Bi,m对应的操作码序列;CBi,m中包含Bi,m中的所有操作码;
遍历CBi,将CBi,m中连续的Q个操作码确定为Bi,m对应的一个操作码分词,以得到Bi对应的初始操作码分词列表集LBi=(LBi,1,LBi,2,…,LBi,m,…,LBi,f(i));其中,LBi,m为Bi,m对应的初始操作码分词列表;
根据预设的操作码分词白名单库,将LBi中的每一初始操作码分词列表中属于操作码分词白名单库的所有操作码分词删除,以得到Bi对应的中间操作码分词列表集DBi=(DBi,1,DBi,2,…,DBi,m,…,DBi,f(i));其中,DBi,m为将LBi,m中属于操作码分词白名单库的所有操作码分词删除后得到的中间操作码分词列表;
将DBi中相同的操作码分词聚类为一组,以得到Bi对应的操作码分词组集KBi=(KBi,1,KBi,2,…,KBi,x,…,KBi,y(i)),x=1,2,…,y(i);其中,KBi,x为Bi对应的操作码分词组集中的第x个操作码分词组,y(i)为Bi对应的操作码分词组集中操作码分词组的数量;KBi,x中任意两个操作码分词相同;
获取KBi对应的初始操作码分词优先级列表αi=(αi,1,αi,2,…,αi,x,…,αi,y(i));其中,αi,x为KBi,x对应的操作码分词优先级;αi,x=num(i,x)/∑y(i) x=1num(i,x);num(i,x)为KBi,x中操作码分词的数量;
根据αi,将KBi中的部分操作码分词组中每一操作码分词组对应的操作码分词确定为目标操作码分词,以得到EBi
可选的,所述根据αi,将KBi中的部分操作码分词组中每一操作码分词组对应的操作码分词确定为目标操作码分词,以得到EBi,包括:
根据αi中每一操作码分词优先级的大小,对αi中所有的操作码分词优先级进行排序,以得到KBi对应的中间操作码分词优先级列表α’i=(α’i,1,α’i,2,…,α’i,x,…,α’i,y(i));其中,α’i,x为对αi中所有的操作码分词优先级进行排序后的第x个操作码分词优先级;α’i,j>α’i,j+1,j=1,2,…,y(i)-1;
根据预设的操作码分词优先级数量权重η,将α’i中的前w个操作码分词优先级确定为目标操作码分词优先级,以得到目标操作码分词优先级列表Tα’i=(α’i,1,α’i,2,…,α’i,v,…,α’i,w),v=1,2,…,w;其中,α’i,v为α’i中的前w个操作码分词优先级中的第v个操作码分词优先级;,0<η<1;/>为预设的向上取整函数;
根据Tα’i,将Tα’i对应的操作码分词组中的操作码分词确定为目标操作码分词,以得到EBi
可选的,HBi通过以下步骤得到:
获取Bi=(Bi,1,Bi,2,…,Bi,m,…,Bi,f(i)),m=1,2,…,f(i);Bi,m为Bi中的第m个已知恶意文件,f(i)为Bi中已知恶意文件的数量;
通过BoW算法,对Bi中的每一已知恶意文件进行特殊字符串提取,以得到Bi对应的初始特殊字符串列表集TBi=(TBi,1,TBi,2,…,TBi,m,…,TBi,f(i));其中,TBi,m为Bi,m对应的初始特殊字符串列表;TBi,m中包含Bi,m中的所有特殊字符串; WQ包含TBi,m,WQ为预设特殊字符串词典,WQ=(WQ1,WQ2,…,WQc,…,WQd),c=1,2,…,d;WQc为预设特殊字符串词典中的第c个预设特殊字符串,d为预设特殊字符串词典中预设特殊字符串的数量;
根据预设的字符串白名单库,将TBi中的每一初始特殊字符串列表中属于字符串白名单库的所有特殊字符串删除,以得到Bi对应的中间特殊字符串列表集RBi=(RBi,1,RBi,2,…,RBi,m,…,RBi,f(i));其中,RBi,m为Bi,m对应的中间特殊字符串列表;RBi,m=(RBi m,1,RBi m,2,…,RBi m,a,…,RBi m,b(i,m)),a=1,2,…,b(i,m);其中,RBi m,a为Bi,m对应的中间特殊字符串列表中的第a个特殊字符串,b(i,m)为Bi,m对应的中间特殊字符串列表中特殊字符串的数量;
根据WQ和RBi,构建特殊字符串权重确定矩阵;其中,特殊字符串权重确定矩阵包括f(i)行和d列,每一行对应Bi中的一个已知恶意文件,每一列对应WQ中的一个预设特殊字符串;
遍历RBi,m,若RBi m,a∈WQ,则将RBi m,a填入特殊字符串权重确定矩阵中的m行以及与RBi m,a相同的特殊字符串对应的列内;
根据特殊字符串权重确定矩阵,确定WQ中每一预设特殊字符串权重,以得到Bi对应的初始预设特殊字符串权重列表θi=(θi,1,θi,2,…,θi,c,…,θi,d);其中,θi,c为WQc对应的预设特殊字符串权重;θi,c=NWQc/f(i),NWQc为特殊字符串频率确定矩阵中WQc对应的列中WQc的数量;
遍历θi,若θi,c>Tθ,则将θi,c确定为目标预设特殊字符串权重;其中,Tθ为预设的目标特殊预设字符串权重阈值;
将每一目标特殊预设字符串权重对应的特殊字符串确定为目标特殊字符串,以得到HBi
可选的,所述操作码分词白名单库通过以下步骤生成:
获取若干已知的非恶意文件;
通过OpCode N-gram算法,获取每一非恶意文件对应的若干操作码分词,以得到候选操作码分词列表HX=(HX1,HX2,…,HXp1,…,HXq1);其中,HXp1为对获取到的所有非恶意文件对应的若干操作码分词中的第p1个操作码分词,q1为获取到的所有非恶意文件对应的操作码分词的数量;
将HX中相同的操作码分词聚类为一组,以得到非恶意文件对应的操作码分词组集FX=(FX1,FX2,…,FXj1,…,FXk1),j1=1,2,…,k1;其中,FXj1为非恶意文件对应的操作码分词组集中的第j1个操作码分词组,k1为非恶意文件对应的操作码分词组集中操作码分词组的数量;
获取FX对应的候选操作码分词优先级列表β=(β1,β2,…,βj1,…,βk1);其中,βj1为FXj1对应的操作码分词优先级;βj1=num(j1)/∑k1 j1=1num(j1),num(j1)为FXj1中操作码分词的数量;
遍历β,若βj1>Tβ,则将βj1对应的操作码分词组中的操作码分词确定为指定操作码分词,以得到所述操作码分词白名单库;否则,将βj1对应的操作码分词组中的操作码分词确定为备用操作码分词,以得到备用操作码分词库。
可选的,所述根据EB和HB生成若干目标检测规则,包括:
根据EB中的每一目标操作码分词列表中的任一目标操作码分词,生成一条对应的操作码分词检测规则,以得到B对应的操作码分词检测规则列表集GC=(GC1,GC2,…,GCi,…,GCn);其中,GCi为Bi对应的操作码分词检测规则列表;GCi中包括若干操作码分词检测规则;
根据HB中的每一目标特殊字符串列表中的任一目标特殊字符串,生成一条对应的特殊字符串检测规则,以得到B对应的特殊字符串检测规则列表集WD=(WD1,WD2,…,WDi,…,WDn);其中,WDi为Bi对应的特殊字符串检测规则列表;WDi中包括若干特殊字符串检测规则。
可选的,所述根据EB和HB生成若干目标检测规则,还包括:
获取GCj中的任一操作码分词检测规则TGC对应的目标操作码分词YU;
若YU属于备用操作码分词库,则获取YU对应的恶意文件WU;
获取WU对应的所有的特殊字符串,以得到WU对应的特殊字符串列表TU=(TU1,TU2,…,TUm1,…,TUn1);其中,TUm1为WU对应的所有特殊字符串中的第m1个特殊字符串,n1为WU对应的特殊字符串的数量;
若γTU>γ0,则从WD中获取WU对应的至少一条特殊字符串检测规则;其中,γTU为TU对应的特殊字符串出现率,γTU=NTU/NHB,NTU为TU中存在于HB的特殊字符串的数量,NHB为HB中特殊字符串的数量;γ0为预设的出现率阈值;
根据TGC以及从WD中获取WU对应的至少一条特殊字符串检测规则融合生成至少一条融合检测规则。
可选的,所述方法还包括:
若A为恶意文件,则将A添加至对应的已知恶意文件组中,以通过A更新所述检测规则库。
根据本申请的另一方面,还提供了一种非瞬时性计算机可读存储介质,存储介质中存储有至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现上述基于Yara引擎的恶意文件检测方法。
根据本申请的另一方面,还提供了一种电子设备,包括处理器和上述非瞬时性计算机可读存储介质。
本发明至少具有以下有益效果:
本发明的基于Yara引擎的恶意文件检测方法,获取若干已知恶意文件,根据每一已知恶意文件的预设属性,对所有的已知恶意文件进行聚类,从而得到若干组具有相同的属性的已知恶意文件组;针对任一已知恶意文件组,获取该已知恶意文件组对应的目标操作码分词列表以及目标字符串列表,然后根据目标操作码分词列表以及目标字符串列表生成若干条检测规则,通过预设Yara引擎将所有的目标检测规则进行加载,以得到所述检测规则库;当待检测文件A的若干预设特征与预设Yara引擎的检测规则库中的任一目标检测规则符合预设的匹配条件时,则将待检测文件A确定为恶意文件;本发明中,在对已知恶意文件进行目标操作码分词以及目标特殊字符串获取,生成以及加载检测规则均能够自动执行,无需人工手动编写检测规则,因此,本发明能够提高检测规则库的生成效率。
进一步的,Yara引擎能够建立索引结构,该索引结构能够根据待检测文件A的预设特征快速的从检测规则库中匹配检测规则,从而使得恶意文件的检测效率较高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于Yara引擎的恶意文件检测方法的流程图;
图2为本发明实施例提供的检测规则库生成步骤的流程图;
图3为本发明实施例提供的基于Yara引擎的恶意文件检测方法的应用场景图;
图4为本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其他方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其他结构及/或功能性实施此设备及/或实践此方法。
下面将参照图1所述的基于Yara引擎的恶意文件检测方法的流程图,对一种基于Yara引擎的恶意文件检测方法进行介绍;所述方法包括以下步骤:
S100,获取待检测文件A。
本实施例中,待检测文件为不能够确定是否为恶意文件的文件,待检测文件可以为可执行文件;例如,待检测文件为exe文件、dll文件。
S110,若A的若干预设特征与预设Yara引擎的检测规则库中的任一目标检测规则符合预设的匹配条件,则将A确定为恶意文件。
本实施例中,对于待检测文件A,能够获取其对应的若干预设特征;例如,获取待检测文件A的文件类型、文件大小、签名信息等特征;然后将待检测文件A的若干预设特征通过Yara引擎进行检测规则匹配,如果待检测文件A的若干预设特征能够与检测规则库中的任一目标检测规则符合预设的匹配条件,则将A确定为恶意文件;预设的匹配条件可以为,待检测文件A的若干预设特征中能够与检测规则库中的任一目标检测规则相匹配的预设特征的数量,与待检测文件A对应的预设特征的数量的比值大于预设值。
参见图2,所述检测规则库通过以下步骤生成:
S200,获取若干已知恶意文件。
本实施例中,已知恶意文件可以通过已知的病毒库进行获取;可以理解的是,若干已知恶意文件为进行特征提取的样本文件。
S210,根据每一已知恶意文件的预设属性,对所有的已知恶意文件进行聚类,以得到已知恶意文件组集B=(B1,B2,…,Bi,…,Bn),i=1,2,…,n;其中,Bi为对所有的已知恶意文件进行聚类得到的第i个已知恶意文件组,n为对所有的已知恶意文件进行聚类得到的已知恶意文件组的数量;每一已知恶意文件组对应一个预设属性。
具体的,上述的文件的预设属性可以为恶意文件所属的家族分类、恶意攻击的类型等。以家族分类为例,将所有的已知恶意文件分为若干已知恶意文件组后,使得每一已知恶意文件组内的已知恶意文件所述的家族分类相同,且任意两个已知恶意文件组内的已知恶意文件所述的家族分类不同。
S220,获取B中每一已知恶意文件组对应的目标操作码分词列表集EB=(EB1,EB2,…,EBi,…,EBn);其中,EBi为Bi对应的目标操作码列表;EBi根据操作码白名单库以及Bi中的每一已知恶意文件对应的若干目标操作码分词得到;目标操作码分词根据对应的已知恶意文件的若干操作码得到。
本实施例中,对于每一已知恶意文件组,能够获取对应的目标操作码分词列表,以得到EB;其中,EBi可以通过以下步骤得到:
S221,获取Bi=(Bi,1,Bi,2,…,Bi,m,…,Bi,f(i)),m=1,2,…,f(i);Bi,m为Bi中的第m个已知恶意文件,f(i)为Bi中已知恶意文件的数量。
可以理解的是,由于本实施例中,每个已知恶意文件组中的已知恶意文件的数量是不同的,故而,本实施例中,f(i)不是指代一个具体的函数或函数结果值,而是指代一个随着i的具体值的不同而可能的值,例如,当i=1时,f(i)=300;i=2时,f(i)=400;i=3时,f(i)=300。
S222,通过OpCode N-gram算法,对Bi中的每一已知恶意文件进行操作码提取,以得到Bi对应的操作码序列集CBi=(CBi,1,CBi,2,…,CBi,m,…,CBi,f(i));其中,CBi,m为Bi,m对应的操作码序列;CBi,m中包含Bi,m中的所有操作码。
本实施例中,每一已知恶意文件组内包含若干已知恶意文件,可以解析每一已知恶意文件的文件结构,从而获取对应的操作码;可以理解的是,每一已知恶意文件对应有若干操作码,从而形成操作码序列,即每一已知恶意文件对应一个操作码序列,操作码序列内的操作码是按照时序进行排列的;需要说明的是,本领域技术人员能够根据需要采用现有的OpCode N-gram算法对恶意文件进行操作码分词提取,此处不加赘述。
S223,遍历CBi,将CBi,m中连续的Q个操作码确定为Bi,m对应的一个操作码分词,以得到Bi对应的初始操作码分词列表集LBi=(LBi,1,LBi,2,…,LBi,m,…,LBi,f(i));其中,LBi,m为Bi,m对应的初始操作码分词列表。
本实施例中,根据OpCode N-gram算法原理,可以将NBi,m中连续的Q个操作码确定为Bi,m对应的一个操作码分词;例如,Q=2,即将CBi,m中连续的2个操作码确定为Bi,m对应的一个操作码分词;从而能够得到每一恶意文件对应的初始操作码分词列表。
S224,根据预设的操作码分词白名单库,将LBi中的每一初始操作码分词列表中属于操作码分词白名单库的所有操作码分词删除,以得到Bi对应的中间操作码分词列表集DBi=(DBi,1,DBi,2,…,DBi,m,…,DBi,f(i));其中,DBi,m为将LBi,m中属于操作码分词白名单库的所有操作码分词删除后得到的中间操作码分词列表。
本实施例中,DBi,m中的操作码分词是通过提取Bi,m中的每一已知恶意文件的所有操作码分词得到的,因此,在DBi,m中包含有正常的操作码分词和恶意的操作码分词;本实施例通过预设的操作码分词白名单库将LBi,m中正常的操作码分词过滤掉,只保留恶意的操作码分词;从而降低后期恶意文件检测的误报率,可以理解的是,操作码分词白名单库中所包括的操作码分词均为正常的操作码分词;操作码分词白名单库可以通过对若干已知的白文件,即正常文件进行操作码分词提取得到。
S225,将DBi中相同的操作码分词聚类为一组,以得到Bi对应的操作码分词组集KBi=(KBi,1,KBi,2,…,KBi,x,…,KBi,y(i)),x=1,2,…,y(i);其中,KBi,x为Bi对应的操作码分词组集中的第x个操作码分词组,y(i)为Bi对应的操作码分词组集中操作码分词组的数量;KBi,x中任意两个操作码分词相同。
本实施例中,DBi为Bi对应的中间操作码分词列表集,Bi中的所有已知恶意文件是属于同一家族分类的,具有较高的相似性;因此,Bi中的任意两个已知恶意文件分别对应的中间操作码分词列表中会存在相同的操作码分词;将DBi中的所有中间操作码分词列表中相同的操作码分词聚类为一组,以得到Bi对应的操作码分词组集KBi;即每一家族分类的已知恶意文件对应一个操作码分词组集。
S226,获取KBi对应的初始操作码分词优先级列表αi=(αi,1,αi,2,…,αi,x,…,αi,y(i));其中,αi,x为KBi,x对应的操作码分词优先级;αi,x=num(i,x)/∑y(i) x=1num(i,x);num(i,x)为KBi,x中操作码分词的数量。
本实施例中,能够获取到KBi,x中操作码分词的数量num(i,x),以及KBi中每一操作码分词组中操作码分词的数量的总和,可得到αi,x;可以理解的是,αi,x表征的是KBi,x中的操作码分词在KBi中所有的操作码分词中所占的比例,αi,x越大,表示KBi,x中的操作码分词的操作码分词优先级越高;即KBi,x中的操作码分词在对应的家族分类的已知恶意文件中出现的频率较高。
S227,根据αi,将KBi中的部分操作码分词组中每一操作码分词组对应的操作码分词确定为目标操作码分词,以得到EBi
本实施例中,步骤S227中,EBi可以通过以下步骤得到:
S11,根据αi中每一操作码分词优先级的大小,对αi中所有的操作码分词优先级进行排序,以得到KBi对应的中间操作码分词优先级列表α’i=(α’i,1,α’i,2,…,α’i,x,…,α’i,y(i));其中,α’i,x为对αi中所有的操作码分词优先级进行排序后的第x个操作码分词优先级;α’i,j>α’i,j+1,j=1,2,…,y(i)-1;
S12,根据预设的操作码分词优先级数量权重η,将α’i中的前w个操作码分词优先级确定为目标操作码分词优先级,以得到目标操作码分词优先级列表Tα’i=(α’i,1,α’i,2,…,α’i,v,…,α’i,w),v=1,2,…,w;其中,α’i,v为α’i中的前w个操作码分词优先级中的第v个操作码分词优先级;,0<η<1;/>为预设的向上取整函数;
S13,根据Tα’i,将Tα’i对应的操作码分词组中的操作码分词确定为目标操作码分词,以得到EBi
本实施例中,将KBi中操作码分词优先级较高的操作码分词确定为目标操作码分词,进而根据每一目标操作码分析生成对应的一条检测规则,在通过预设Yara引擎加载生成的检测规则;在对待检测文件进行检测时,操作码分词优先级较低的操作码分词可能会大量出现在正常的待检测文件中,如果不将操作码分词优先级较低的操作码分词过滤掉,会使得恶意文件检测时的误报率较高;因此,本实施例中将操作码分词优先级较低的操作码分词过滤掉,能够降低恶意文件检测时的误报率。
S230,获取B中每一已知恶意文件组对应的目标特殊字符串列表HB=(HB1,HB2,…,HBi,…,HBn);其中,HBi为Bi对应的目标特殊字符串列表;HBi根据预设的字符串白名单库、预设特殊字符串词典以及每一已知恶意文件对应的若干特殊字符串得到;特殊字符串用于表征对应的文件具有恶意属性。
本实施例中,对于每一已知恶意文件组,能够获取对应的目标特殊字符串列表,以得到HB,具体的,HBi可以通过以下步骤得到:
S231,获取Bi=(Bi,1,Bi,2,…,Bi,m,…,Bi,f(i)),m=1,2,…,f(i);Bi,m为Bi中的第m个已知恶意文件,f(i)为Bi中已知恶意文件的数量。
可以理解的是,由于本实施例中,每个已知恶意文件组中的已知恶意文件的数量是不同的,故而,本实施例中,f(i)不是指代一个具体的函数或函数结果值,而是指代一个随着i的具体值的不同而可能的值,例如,当i=1时,f(i)=300;i=2时,f(i)=400;i=3时,f(i)=300。
S232,通过BoW算法,对Bi中的每一已知恶意文件进行特殊字符串提取,以得到Bi对应的初始特殊字符串列表集TBi=(TBi,1,TBi,2,…,TBi,m,…,TBi,f(i));其中,TBi,m为Bi,m对应的初始特殊字符串列表;TBi,m中包含Bi,m中的所有特殊字符串;WQ包含TBi,m,WQ为预设特殊字符串词典,WQ=(WQ1,WQ2,…,WQc,…,WQd),c=1,2,…,d;WQc为预设特殊字符串词典中的第c个预设特殊字符串,d为预设特殊字符串词典中预设特殊字符串的数量。
本实施例中,可以将任一已知恶意文件进行反汇编处理,得到该已知恶意文件对应的二进制文件,然后通过BoW算法对该已知恶意文件对应的二进制文件进行特殊字符串提取,进而得到Bi对应的初始特殊字符串列表集TBi;可以理解的是,特殊字符串为恶意文件的重要特征,例如,文件执行驻留、命令控制等操作时,严重依赖的文件路径、url等字符串均可作为特殊字符串进行提取;特殊字符串词典可以通过对大量的已知的恶意文件样本进行特殊字符串提取,统计分析得到,特殊字符串词典中包含了在已知恶意文件中出现频率较高的特殊字符串。
S233,根据预设的字符串白名单库,将TBi中的每一初始特殊字符串列表中属于字符串白名单库的所有特殊字符串删除,以得到Bi对应的中间特殊字符串列表集RBi=(RBi,1,RBi,2,…,RBi,m,…,RBi,f(i));其中,RBi,m为Bi,m对应的中间特殊字符串列表;RBi,m=(RBi m,1,RBi m,2,…,RBi m,a,…,RBi m,b(i,m)),a=1,2,…,b(i,m);其中,RBi m,a为Bi,m对应的中间特殊字符串列表中的第a个特殊字符串,b(i,m)为Bi,m对应的中间特殊字符串列表中特殊字符串的数量。
本实施例中,字符串白名单库可以通过对若干已知的白文件,即正常文件进行字符串提取,然后将出现频率较高的若干字符串确定为字符串白名单库中的字符串;可以理解的是,字符串白名单库中所包含的字符串均为正常文件对应的字符串;因此,可以遍历TBi中的每一初始特殊字符串列表,任意特殊字符串属于字符串白名单库,则将该特殊字符串删除,从而得到RBi;本实施例中,将TBi中的属于字符串白名单库的特殊字符串删除,能够有效的降低后期恶意文件检测的误报率,从而提高恶意文件检测的准确性。
S234,根据WQ和RBi,构建特殊字符串权重确定矩阵;其中,特殊字符串权重确定矩阵包括f(i)行和d列,每一行对应Bi中的一个已知恶意文件,每一列对应WQ中的一个预设特殊字符串。
本实施例中,WQ中包括d个特殊字符串,Bi中包括f(i)个恶意文件,因此,能够构建f(i)行、d列的特殊字符串权重确定矩阵。
S235,遍历RBi,m,若RBi m,a∈WQ,则将RBi m,a填入特殊字符串权重确定矩阵中的m行以及与RBi m,a相同的特殊字符串对应的列内;
本实施例中,遍历RBi中的每一中间特殊字符串列表,将每一特殊字符串填入特殊字符串权重确定矩阵中对应的位置,使得特殊字符串权重确定矩阵中任一列内的特殊字符串均与该列对应的WQ中的特殊字符串相同。
S236,根据特殊字符串权重确定矩阵,确定WQ中每一预设特殊字符串权重,以得到Bi对应的初始预设特殊字符串权重列表θi=(θi,1,θi,2,…,θi,c,…,θi,d);其中,θi,c为WQc对应的预设特殊字符串权重;θi,c=NWQc/f(i),NWQc为特殊字符串频率确定矩阵中WQc对应的列中WQc的数量。
本实施例中,θi,c表示WQc在f(i)个恶意文件中出现的频率,θi,c越大,表示WQc在f(i)个恶意文件中出现的频率越高,也表示WQc为较为重要的用于表征恶意文件的特殊字符串。
S237,遍历θi,若θi,c>Tθ,则将θi,c确定为目标预设特殊字符串权重;其中,Tθ为预设的目标特殊预设字符串权重阈值。
S238,将每一目标特殊预设字符串权重对应的特殊字符串确定为目标特殊字符串,以得到HBi
本实施例中,选取属于预设特殊字符串词典且在同一家族分类的若干已知恶意文件中出现频率较高的特殊字符串作为目标特殊字符串,由此,在后期对待检测文件进行检测时,能够有效的降低恶意文件检测的误报率,提高恶意文件检测的准确性。
S240,根据EB和HB生成若干目标检测规则。
本实施例中,能够根据EB中的一个目标操作码分词单独生成一条检测规则,同时,根据HB中的一个目标特殊字符串单独生成一条检测规则,进而得到所述检测规则库。
进一步的,本实施例中,操作码分词白名单库通过以下步骤生成:
S31,获取若干已知的非恶意文件。
S32,通过OpCode N-gram算法,获取每一非恶意文件对应的若干操作码分词,以得到候选操作码分词列表HX=(HX1,HX2,…,HXp1,…,HXq1);其中,HXp1为对获取到的所有非恶意文件对应的若干操作码分词中的第p1个操作码分词,q1为获取到的所有非恶意文件对应的操作码分词的数量。
S33,将HX中相同的操作码分词聚类为一组,以得到非恶意文件对应的操作码分词组集FX=(FX1,FX2,…,FXj1,…,FXk1),j1=1,2,…,k1;其中,FXj1为非恶意文件对应的操作码分词组集中的第j1个操作码分词组,k1为非恶意文件对应的操作码分词组集中操作码分词组的数量。
S34,获取FX对应的候选操作码分词优先级列表β=(β1,β2,…,βj1,…,βk1);其中,βj1为FXj1对应的操作码分词优先级;βj1=num(j1)/∑k1 j1=1num(j1),num(j1)为FXj1中操作码分词的数量。
S35,遍历β,若βj1>Tβ,则将βj1对应的操作码分词组中的操作码分词确定为指定操作码分词,以得到所述操作码分词白名单库;否则,将βj1对应的操作码分词组中的操作码分词确定为备用操作码分词,以得到备用操作码分词库。
本实施例中,需要说明的是,通过上述方法生成的操作码分词白名单库中的操作码分词为在非恶意文件中出现频率较高的操作码分词,备用操作码分词库中的操作码分词则为在非恶意文件中出现频率较低的操作码分词,理论上,二者中的操作码分词均为正常文件对应的操作码分词。
进一步的,步骤S240包括以下步骤:
S241,根据EB中的每一目标操作码分词列表中的任一目标操作码分词,生成一条对应的操作码分词检测规则,以得到B对应的操作码分词检测规则列表集GC=(GC1,GC2,…,GCi,…,GCn);其中,GCi为Bi对应的操作码分词检测规则列表;GCi中包括若干操作码分词检测规则;
S242,根据HB中的每一目标特殊字符串列表中的任一目标特殊字符串,生成一条对应的特殊字符串检测规则,以得到B对应的特殊字符串检测规则列表集WD=(WD1,WD2,…,WDi,…,WDn);其中,WDi为Bi对应的特殊字符串检测规则列表;WDi中包括若干特殊字符串检测规则。
本实施例中,能够根据目标操作码分词和目标特殊字符串单独生成对应的检测规则,也可以采用融合的方式生成融合检测规则,具体为:
S21,获取GCj中的任一操作码分词检测规则TGC对应的目标操作码分词YU。
本实施例中,在生成每一操作码分词检测规则时,均记录有对应的目标操作码分词,因此,可以通过反向查找的方式,确定生成TGC对应的目标操作码分词YU。
S22,若YU属于备用操作码分词库,则获取YU对应的恶意文件WU。
本实施例中,目标操作码分词YU是经过操作码分词白名单库过滤后得到的,因此,YU不会存在于操作码分词白名单库中;但是,操作码分词白名单库只是选取了在非恶意文件中出现频率相对较高的操作码分词,并不是非恶意文件中所有的操作码分词;如果YU为正常文件对应的操作码分词,但是属于备用操作码分词库,那么,在采用操作码分词白名单库进行过滤时,并不会将YU过滤掉,YU被误判为恶意文件的目标操作码分词,此时,在对待检测文件进行检测时,会产生误报;同样,可以通过反向查找的方式,确定YU对应的恶意文件WU。
S23,获取WU对应的所有的特殊字符串,以得到WU对应的特殊字符串列表TU=(TU1,TU2,…,TUm1,…,TUn1);其中,TUm1为WU对应的所有特殊字符串中的第m1个特殊字符串,n1为WU对应的特殊字符串的数量。
本实施例中,可以采用上述实施例中的特殊字符串获取的方法获取WU对应的若干特殊字符串,也可以采用反向查找的方式,确定WU对应的若干字符串。
S24,若γTU>γ0,则从WD中获取WU对应的至少一条特殊字符串检测规则;其中,γTU为TU对应的特殊字符串出现率,γTU=NTU/NHB,NTU为TU中存在于HB的特殊字符串的数量,NHB为HB中特殊字符串的数量;γ0为预设的出现率阈值。
本实施例中,TU中的特殊字符串确定为目标特殊字符串的数量有可能为一个,也有可能为多个,每一目标特殊字符串均能够生成一条特殊字符串检测规则;γ0可以通过大量的文件样本分析得到。
S25,根据TGC以及从WD中获取WU对应的至少一条特殊字符串检测规则融合生成至少一条融合检测规则。
本实施例中,通过上述方法得到的融合检测规则根据TGC以及WD中获取WU对应的至少一条特殊字符串检测规则融合生成,因此,待检测文件的若干预设特征如果与该条检测规则相匹配,则表示待检测文件的操作码分词以及字符串均满足融合检测规则的匹配条件,那么,该待检测文件为恶意文件的概率极高;因此,本实施例的上述融合检测规则的生成方法能够提高待检测文件的检测准确性,以及降低误报率。
本实施例中,生成融合检测规则后,可以将TGC以及从WD中获取WU对应的至少一条特殊字符串检测规则删除,以防止对后续恶意文件检测时,再次产生误报。
S250,通过预设Yara引擎将所有的目标检测规则进行加载,以得到所述检测规则库。
本实施例中,预设Yara引擎将所有的检测规则加载完之后,会生成索引结构,通过该索引结构,使得在对待检测文件进行检测时,快速匹配对应的规则,以提高检测效率。
进一步的,如果待检测文件A为恶意文件,则根据A对应的属性将A添加至对应的已知恶意文件组中,以通过A更新所述检测规则库;从而使得检测规则库中的检测规则能够实时更新,以提高恶意文件检测的准确性。
本实施例的基于Yara引擎的恶意文件检测方法,获取若干已知恶意文件,根据每一已知恶意文件的预设属性,对所有的已知恶意文件进行聚类,从而得到若干组具有相同的属性的已知恶意文件组;针对任一已知恶意文件组,获取该已知恶意文件组对应的目标操作码分词列表以及目标字符串列表,然后根据目标操作码分词列表以及目标字符串列表生成若干条检测规则,通过预设Yara引擎将所有的目标检测规则进行加载,以得到所述检测规则库;当待检测文件A的若干预设特征与预设Yara引擎的检测规则库中的任一目标检测规则符合预设的匹配条件时,则将待检测文件A确定为恶意文件;本实施例中,在对已知恶意文件进行目标操作码分词以及目标特殊字符串获取,生成以及加载检测规则均能够自动执行,无需人工手动编写检测规则,因此,本发明能够提高检测规则库的生成效率。
进一步的,Yara引擎能够建立索引结构,该索引结构能够根据待检测文件A的预设特征快速的从检测规则库中匹配检测规则,从而使得恶意文件的检测效率较高。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
本发明的实施例还提供了一种非瞬时性计算机可读存储介质,该存储介质可设置于电子设备之中以保存用于实现方法实施例中一种方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述实施例提供的方法。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。参见图3,程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
参见图4,本发明的实施例还提供了一种电子设备,包括处理器和前述的非瞬时性计算机可读存储介质。
本申请的这种实施方式的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:上述至少一个处理器、上述至少一个储存器、连接不同系统组件(包括储存器和处理器)的总线。
其中,所述储存器存储有程序代码,所述程序代码可以被所述处理器执行,使得所述处理器执行本说明书中描述的各种实施例的步骤。
储存器可以包括易失性储存器形式的可读介质,例如随机存取储存器(RAM)和/或高速缓存储存器,还可以进一步包括只读储存器(ROM)。
储存器还可以包括具有一组(至少一个)程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线可以为表示几类总线结构中的一种或多种,包括储存器总线或者储存器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,电子设备还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器通过总线与电子设备的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
本发明的实施例还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明开的范围由所附权利要求来限定。

Claims (9)

1.一种基于Yara引擎的恶意文件检测方法,其特征在于,所述方法包括:
获取待检测文件A;
若A的若干预设特征与预设Yara引擎的检测规则库中的任一目标检测规则符合预设的匹配条件,则将A确定为恶意文件;
所述检测规则库通过以下步骤生成:
获取若干已知恶意文件;
根据每一已知恶意文件的预设属性,对所有的已知恶意文件进行聚类,以得到已知恶意文件组集B=(B1,B2,…,Bi,…,Bn),i=1,2,…,n;其中,Bi为对所有的已知恶意文件进行聚类得到的第i个已知恶意文件组,n为对所有的已知恶意文件进行聚类得到的已知恶意文件组的数量;每一已知恶意文件组对应一个预设属性;
获取B中每一已知恶意文件组对应的目标操作码分词列表集EB=(EB1,EB2,…,EBi,…,EBn);其中,EBi为Bi对应的目标操作码分词列表;EBi根据操作码分词白名单库以及Bi中的每一已知恶意文件对应的若干目标操作码分词得到;目标操作码分词根据对应的已知恶意文件的若干操作码得到;
获取B中每一已知恶意文件组对应的目标特殊字符串列表集HB=(HB1,HB2,…,HBi,…,HBn);其中,HBi为Bi对应的目标特殊字符串列表;HBi根据预设的字符串白名单库、预设特殊字符串词典以及每一已知恶意文件对应的若干特殊字符串得到;特殊字符串用于表征对应的文件具有恶意属性;
根据EB和HB生成若干目标检测规则;
通过预设Yara引擎将所有的目标检测规则进行加载,以得到所述检测规则库;
所述操作码分词白名单库通过以下步骤生成:
获取若干已知的非恶意文件;
通过OpCode N-gram算法,获取每一非恶意文件对应的若干操作码分词,以得到候选操作码分词列表HX=(HX1,HX2,…,HXp1,…,HXq1);其中,HXp1为对获取到的所有非恶意文件对应的若干操作码分词中的第p1个操作码分词,q1为获取到的所有非恶意文件对应的操作码分词的数量;
将HX中相同的操作码分词聚类为一组,以得到非恶意文件对应的操作码分词组集FX=(FX1,FX2,…,FXj1,…,FXk1),j1=1,2,…,k1;其中,FXj1为非恶意文件对应的操作码分词组集中的第j1个操作码分词组,k1为非恶意文件对应的操作码分词组集中操作码分词组的数量;
获取FX对应的候选操作码分词优先级列表β=(β1,β2,…,βj1,…,βk1);其中,βj1为FXj1对应的操作码分词优先级;βj1=num(j1)/∑k1 j1=1num(j1),num(j1)为FXj1中操作码分词的数量;
遍历β,若βj1>Tβ,则将βj1对应的操作码分词组中的操作码分词确定为指定操作码分词,以得到所述操作码分词白名单库;否则,将βj1对应的操作码分词组中的操作码分词确定为备用操作码分词,以得到备用操作码分词库。
2.根据权利要求1所述的基于Yara引擎的恶意文件检测方法,其特征在于,EBi通过以下步骤得到:
获取Bi=(Bi,1,Bi,2,…,Bi,m,…,Bi,f(i)),m=1,2,…,f(i);Bi,m为Bi中的第m个已知恶意文件,f(i)为Bi中已知恶意文件的数量;
通过OpCode N-gram算法,对Bi中的每一已知恶意文件进行操作码提取,以得到Bi对应的操作码序列集CBi=(CBi,1,CBi,2,…,CBi,m,…,CBi,f(i));其中,CBi,m为Bi,m对应的操作码序列;CBi,m中包含Bi,m中的所有操作码;
遍历CBi,将CBi,m中连续的Q个操作码确定为Bi,m对应的一个操作码分词,以得到Bi对应的初始操作码分词列表集LBi=(LBi,1,LBi,2,…,LBi,m,…,LBi,f(i));其中,LBi,m为Bi,m对应的初始操作码分词列表;
根据预设的操作码分词白名单库,将LBi中的每一初始操作码分词列表中属于操作码分词白名单库的所有操作码分词删除,以得到Bi对应的中间操作码分词列表集DBi=(DBi,1,DBi,2,…,DBi,m,…,DBi,f(i));其中,DBi,m为将LBi,m中属于操作码分词白名单库的所有操作码分词删除后得到的中间操作码分词列表;
将DBi中相同的操作码分词聚类为一组,以得到Bi对应的操作码分词组集KBi=(KBi,1,KBi,2,…,KBi,x,…,KBi,y(i)),x=1,2,…,y(i);其中,KBi,x为Bi对应的操作码分词组集中的第x个操作码分词组,y(i)为Bi对应的操作码分词组集中操作码分词组的数量;KBi,x中任意两个操作码分词相同;
获取KBi对应的初始操作码分词优先级列表αi=(αi,1,αi,2,…,αi,x,…,αi,y(i));其中,αi,x为KBi,x对应的操作码分词优先级;αi,x=num(i,x)/∑y(i) x=1num(i,x);num(i,x)为KBi,x中操作码分词的数量;
根据αi,将KBi中的部分操作码分词组中每一操作码分词组对应的操作码分词确定为目标操作码分词,以得到EBi
3.根据权利要求2所述的基于Yara引擎的恶意文件检测方法,其特征在于,所述根据αi,将KBi中的部分操作码分词组中每一操作码分词组对应的操作码分词确定为目标操作码分词,以得到EBi,包括:
根据αi中每一操作码分词优先级的大小,对αi中所有的操作码分词优先级进行排序,以得到KBi对应的中间操作码分词优先级列表α’i=(α’i,1,α’i,2,…,α’i,x,…,α’i,y(i));其中,α’i,x为对αi中所有的操作码分词优先级进行排序后的第x个操作码分词优先级;α’i,j>α’i,j+1,j=1,2,…,y(i)-1;
根据预设的操作码分词优先级数量权重η,将α’i中的前w个操作码分词优先级确定为目标操作码分词优先级,以得到目标操作码分词优先级列表Tα’i=(α’i,1,α’i,2,…,α’i,v,…,α’i,w),v=1,2,…,w;其中,α’i,v为α’i中的前w个操作码分词优先级中的第v个操作码分词优先级;,0<η<1;/>为预设的向上取整函数;
根据Tα’i,将Tα’i对应的操作码分词组中的操作码分词确定为目标操作码分词,以得到EBi
4.根据权利要求1所述的基于Yara引擎的恶意文件检测方法,其特征在于,HBi通过以下步骤得到:
获取Bi=(Bi,1,Bi,2,…,Bi,m,…,Bi,f(i)),m=1,2,…,f(i);Bi,m为Bi中的第m个已知恶意文件,f(i)为Bi中已知恶意文件的数量;
通过BoW算法,对Bi中的每一已知恶意文件进行特殊字符串提取,以得到Bi对应的初始特殊字符串列表集TBi=(TBi,1,TBi,2,…,TBi,m,…,TBi,f(i));其中,TBi,m为Bi,m对应的初始特殊字符串列表;TBi,m中包含Bi,m中的所有特殊字符串; WQ包含TBi,m,WQ为预设特殊字符串词典,WQ=(WQ1,WQ2,…,WQc,…,WQd),c=1,2,…,d;WQc为预设特殊字符串词典中的第c个预设特殊字符串,d为预设特殊字符串词典中预设特殊字符串的数量;
根据预设的字符串白名单库,将TBi中的每一初始特殊字符串列表中属于字符串白名单库的所有特殊字符串删除,以得到Bi对应的中间特殊字符串列表集RBi=(RBi,1,RBi,2,…,RBi,m,…,RBi,f(i));其中,RBi,m为Bi,m对应的中间特殊字符串列表;RBi,m=(RBi m,1,RBi m,2,…,RBi m,a,…,RBi m,b(i,m)),a=1,2,…,b(i,m);其中,RBi m,a为Bi,m对应的中间特殊字符串列表中的第a个特殊字符串,b(i,m)为Bi,m对应的中间特殊字符串列表中特殊字符串的数量;
根据WQ和RBi,构建特殊字符串权重确定矩阵;其中,特殊字符串权重确定矩阵包括f(i)行和d列,每一行对应Bi中的一个已知恶意文件,每一列对应WQ中的一个预设特殊字符串;
遍历RBi,m,若RBi m,a∈WQ,则将RBi m,a填入特殊字符串权重确定矩阵中的m行以及与RBi m,a相同的特殊字符串对应的列内;
根据特殊字符串权重确定矩阵,确定WQ中每一预设特殊字符串权重,以得到Bi对应的初始预设特殊字符串权重列表θi=(θi,1,θi,2,…,θi,c,…,θi,d);其中,θi,c为WQc对应的预设特殊字符串权重;θi,c=NWQc/f(i),NWQc为特殊字符串频率确定矩阵中WQc对应的列中WQc的数量;
遍历θi,若θi,c>Tθ,则将θi,c确定为目标预设特殊字符串权重;其中,Tθ为预设的目标特殊预设字符串权重阈值;
将每一目标特殊预设字符串权重对应的特殊字符串确定为目标特殊字符串,以得到HBi
5.根据权利要求1所述的基于Yara引擎的恶意文件检测方法,其特征在于,所述根据EB和HB生成若干目标检测规则,包括:
根据EB中的每一目标操作码分词列表中的任一目标操作码分词,生成一条对应的操作码分词检测规则,以得到B对应的操作码分词检测规则列表集GC=(GC1,GC2,…,GCi,…,GCn);其中,GCi为Bi对应的操作码分词检测规则列表;GCi中包括若干操作码分词检测规则;
根据HB中的每一目标特殊字符串列表中的任一目标特殊字符串,生成一条对应的特殊字符串检测规则,以得到B对应的特殊字符串检测规则列表集WD=(WD1,WD2,…,WDi,…,WDn);其中,WDi为Bi对应的特殊字符串检测规则列表;WDi中包括若干特殊字符串检测规则。
6.根据权利要求5所述的基于Yara引擎的恶意文件检测方法,其特征在于,所述根据EB和HB生成若干目标检测规则,还包括:
获取GCj中的任一操作码分词检测规则TGC对应的目标操作码分词YU;
若YU属于备用操作码分词库,则获取YU对应的恶意文件WU;
获取WU对应的所有的特殊字符串,以得到WU对应的特殊字符串列表TU=(TU1,TU2,…,TUm1,…,TUn1);其中,TUm1为WU对应的所有特殊字符串中的第m1个特殊字符串,n1为WU对应的特殊字符串的数量;
若γTU>γ0,则从WD中获取WU对应的至少一条特殊字符串检测规则;其中,γTU为TU对应的特殊字符串出现率,γTU=NTU/NHB,NTU为TU中存在于HB的特殊字符串的数量,NHB为HB中特殊字符串的数量;γ0为预设的出现率阈值;
根据TGC以及从WD中获取WU对应的至少一条特殊字符串检测规则融合生成至少一条融合检测规则。
7.根据权利要求1所述的基于Yara引擎的恶意文件检测方法,其特征在于,所述方法还包括:
若A为恶意文件,则将A添加至对应的已知恶意文件组中,以通过A更新所述检测规则库。
8.一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,其特征在于,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-7中任意一项所述的基于Yara引擎的恶意文件检测方法。
9.一种电子设备,其特征在于,包括处理器和权利要求8所述的非瞬时性计算机可读存储介质。
CN202311303198.6A 2023-10-10 2023-10-10 基于Yara引擎的恶意文件检测方法、设备及介质 Active CN117034275B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311303198.6A CN117034275B (zh) 2023-10-10 2023-10-10 基于Yara引擎的恶意文件检测方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311303198.6A CN117034275B (zh) 2023-10-10 2023-10-10 基于Yara引擎的恶意文件检测方法、设备及介质

Publications (2)

Publication Number Publication Date
CN117034275A CN117034275A (zh) 2023-11-10
CN117034275B true CN117034275B (zh) 2023-12-22

Family

ID=88639504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311303198.6A Active CN117034275B (zh) 2023-10-10 2023-10-10 基于Yara引擎的恶意文件检测方法、设备及介质

Country Status (1)

Country Link
CN (1) CN117034275B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111639337A (zh) * 2020-04-17 2020-09-08 中国科学院信息工程研究所 一种面向海量Windows软件的未知恶意代码检测方法及系统
CN111680297A (zh) * 2020-07-09 2020-09-18 腾讯科技(深圳)有限公司 基于人工智能的脚本文件的检测方法、装置及电子设备
CN113360910A (zh) * 2021-06-30 2021-09-07 中国农业银行股份有限公司 恶意应用的检测方法、装置、服务器和可读存储介质
CN114386046A (zh) * 2021-12-28 2022-04-22 绿盟科技集团股份有限公司 一种未知漏洞检测方法、装置、电子设备及存储介质
CN114969725A (zh) * 2022-04-18 2022-08-30 中移互联网有限公司 目标命令识别方法、装置、电子设备及可读存储介质
CN115168851A (zh) * 2022-06-15 2022-10-11 阿里云计算有限公司 生成恶意文件检测规则、检测恶意文件的方法及装置
WO2023072002A1 (zh) * 2021-10-31 2023-05-04 华为技术有限公司 开源组件包的安全检测方法及装置
CN116821903A (zh) * 2023-05-24 2023-09-29 阿里云计算有限公司 检测规则确定及恶意二进制文件检测方法、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836251B2 (en) * 2020-03-12 2023-12-05 Dell Products L.P. Malware detection using a machine learning model

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111639337A (zh) * 2020-04-17 2020-09-08 中国科学院信息工程研究所 一种面向海量Windows软件的未知恶意代码检测方法及系统
CN111680297A (zh) * 2020-07-09 2020-09-18 腾讯科技(深圳)有限公司 基于人工智能的脚本文件的检测方法、装置及电子设备
CN113360910A (zh) * 2021-06-30 2021-09-07 中国农业银行股份有限公司 恶意应用的检测方法、装置、服务器和可读存储介质
WO2023072002A1 (zh) * 2021-10-31 2023-05-04 华为技术有限公司 开源组件包的安全检测方法及装置
CN116089938A (zh) * 2021-10-31 2023-05-09 华为技术有限公司 开源组件包的安全检测方法及装置
CN114386046A (zh) * 2021-12-28 2022-04-22 绿盟科技集团股份有限公司 一种未知漏洞检测方法、装置、电子设备及存储介质
CN114969725A (zh) * 2022-04-18 2022-08-30 中移互联网有限公司 目标命令识别方法、装置、电子设备及可读存储介质
CN115168851A (zh) * 2022-06-15 2022-10-11 阿里云计算有限公司 生成恶意文件检测规则、检测恶意文件的方法及装置
CN116821903A (zh) * 2023-05-24 2023-09-29 阿里云计算有限公司 检测规则确定及恶意二进制文件检测方法、设备及介质

Also Published As

Publication number Publication date
CN117034275A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
US8375450B1 (en) Zero day malware scanner
US11250137B2 (en) Vulnerability assessment based on machine inference
US8631498B1 (en) Techniques for identifying potential malware domain names
EP3748548A1 (en) Adversarial learning-based text annotation method and device
US20190258648A1 (en) Generating asset level classifications using machine learning
EP3346664B1 (en) Binary search of byte sequences using inverted indices
WO2020259280A1 (zh) 日志管理方法、装置、网络设备和可读存储介质
CN113609261B (zh) 基于网络信息安全的知识图谱的漏洞信息挖掘方法和装置
US11526608B2 (en) Method and system for determining affiliation of software to software families
US11836251B2 (en) Malware detection using a machine learning model
CN113408660A (zh) 图书聚类方法、装置、设备和存储介质
CN111062208A (zh) 一种文件审核的方法、装置、设备及存储介质
CN110674290A (zh) 一种用于重叠社区发现的关系预测方法、装置和存储介质
CN117034275B (zh) 基于Yara引擎的恶意文件检测方法、设备及介质
WO2024051196A1 (zh) 恶意代码检测方法、装置、电子设备及存储介质
US9934327B2 (en) Mining relevant approximate subgraphs from multigraphs
CN114155913B (zh) 一种基于高阶动态贝叶斯的基因调控网络构建方法
CN113239687B (zh) 一种数据处理方法和装置
CN115858776A (zh) 一种变体文本分类识别方法、系统、存储介质和电子设备
WO2022037677A1 (zh) 确定日志特征序列的方法、漏洞分析方法及系统、设备
US11244156B1 (en) Locality-sensitive hashing to clean and normalize text logs
CN115495740A (zh) 一种病毒检测方法和装置
CN110472415B (zh) 一种恶意程序的确定方法及装置
CN111400342A (zh) 数据库更新方法、装置、设备及存储介质
CN116992450B (zh) 一种文件检测规则确定方法及装置、电子设备及存储介质

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