CN114510713A - 检测恶意软件的方法、装置、电子设备及存储介质 - Google Patents
检测恶意软件的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114510713A CN114510713A CN202111626261.0A CN202111626261A CN114510713A CN 114510713 A CN114510713 A CN 114510713A CN 202111626261 A CN202111626261 A CN 202111626261A CN 114510713 A CN114510713 A CN 114510713A
- Authority
- CN
- China
- Prior art keywords
- code file
- file
- similarity
- known malicious
- function
- 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.)
- Pending
Links
Images
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
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种检测恶意软件的方法、装置、电子设备及存储介质,包括:获取目标软件的代码文件;根据代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算代码文件与已知恶意代码文件之间的第一相似度;根据代码文件中各函数的模糊哈希与已知恶意代码文件中各函数的模糊哈希确定代码文件与已知恶意代码文件之间的第二相似度;根据第一相似度和第二相似度确定代码文件与已知恶意代码文件之间的综合相似度;将代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到代码文件的动态行为特征匹配结果;根据综合相似度和代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果。本申请可提高恶意软件的检测准确度。
Description
技术领域
本申请涉及信息安全技术领域,更具体地,涉及一种检测恶意软件的方法、装置、电子设备及存储介质。
背景技术
随着互联网通信技术的快速发展,恶意软件也逐渐威胁到网络信息安全。相关技术中,利用一些杀毒引擎或杀毒软件来检测软件的静态特征,并通过静态特征匹配来判断该软件是否为恶意软件,该种检测恶意软件的方法发生漏报误报的情况较多,检测准确度低。因此,如何提高恶意软件的检测准确度是相关技术中亟待解决的技术问题。
发明内容
鉴于上述问题,本申请实施例提出了一种检测恶意软件的方法、装置、电子设备及存储介质,以改善上述问题。
根据本申请实施例的一个方面,提供了一种检测恶意软件的方法,包括:获取目标软件的代码文件;根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度;根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度;根据所述第一相似度和所述第二相似度,确定所述代码文件与所述已知恶意代码文件之间的综合相似度;将所述代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到所述代码文件的动态行为特征匹配结果;所述代码文件的动态行为特征是在沙箱中运行所述代码文件中的代码的过程中采集到的;根据所述代码文件与所述已知恶意代码文件之间的综合相似度,和所述代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果。
在一些实施例中,所述根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度,包括:根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,计算所述代码文件中各函数与所述已知恶意代码文件中各函数之间的函数相似度;根据所述代码文件中各函数与所述已知恶意代码文件中各函数之间的函数相似度,确定所述代码文件中函数相似度超过函数相似度阈值的目标函数;根据所述目标函数的数量、所述代码文件中函数的数量和所述已知恶意代码文件中函数的数量,确定所述代码文件与所述已知恶意代码文件之间的第二相似度。
在一些实施例中,所述根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度之前,所述方法还包括:对所述代码文件进行反汇编处理,得到反汇编代码;将所述反汇编代码中各函数中的操作数移除;计算移除操作数后所述反汇编代码中各函数的模糊哈希,得到所述代码文件中各函数的模糊哈希。
在一些实施例中,所述根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度之前,所述方法还包括:确定所述代码文件的文件类型;若所述代码文件的文件类型为文档类型,则移除所述代码文件中的宏代码。
在一些实施例中,所述确定所述待检测文件的类型之后,所述方法还包括:若所述代码文件的文件类型为脚本语言类型,则判断所述代码文件中是否存在被混淆的代码;若所述代码文件中存在被混淆的代码,则对所述代码文件中被混淆的代码进行解混淆。
在一些实施例中,所述根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度之前,所述方法还包括:检测所述代码文件是否加壳;若确定所述代码文件加壳,则对所述代码文件进行脱壳处理。
在一些实施例中,所述根据所述代码文件与所述已知恶意代码文件之间的综合相似度,和所述代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果,包括:综合所述代码文件与所述已知恶意代码文件之间的综合相似度、所述代码文件的动态行为特征匹配结果和静态特征匹配结果,确定所述目标软件的恶意软件检测结果。
根据本申请实施例的一个方面,提供了一种检测恶意软件的装置,包括:获取模块,用于获取目标软件的代码文件;第一相似度计算模块,用于根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度;第二相似度计算模块,用于根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度;综合相似度确定模块,用于根据所述第一相似度和所述第二相似度,确定所述代码文件与所述已知恶意代码文件之间的综合相似度;匹配模块,用于将所述代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到所述代码文件的动态行为特征匹配结果;所述代码文件的动态行为特征是在沙箱中运行所述代码文件中的代码的过程中采集到的;检测结果确定模块,用于根据所述代码文件与所述已知恶意代码文件之间的综合相似度,和所述代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果。
在一些实施例中,第二相似度确定模块包括:函数相似度计算单元,用于根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,计算所述代码文件中各函数与所述已知恶意代码文件中各函数之间的函数相似度;目标函数确定单元,用于根据所述代码文件中各函数与所述已知恶意代码文件中各函数之间的函数相似度,确定所述代码文件中函数相似度超过函数相似度阈值的目标函数;第二相似度确定单元,用于根据所述目标函数的数量、所述代码文件中函数的数量和所述已知恶意代码文件中函数的数量,确定所述代码文件与所述已知恶意代码文件之间的第二相似度。
在一些实施例中,该检测恶意文件的装置还包括:反汇编模块,用于对所述代码文件进行反汇编处理,得到反汇编代码;第一处理模块,用于将所述反汇编代码中各函数中的操作数移除;函数模糊哈希计算模块,用于计算移除操作数后所述反汇编代码中各函数的模糊哈希,得到所述代码文件中各函数的模糊哈希。
在一些实施例中,检测恶意文件的装置还包括:文件类型第一确定模块,用于确定所述代码文件的文件类型;第二处理模块,用于若所述代码文件的文件类型为文档类型,则移除所述代码文件中的宏代码。
在一些实施例中,检测恶意文件的装置还包括:文件类型第二确定模块,用于若所述代码文件的文件类型为脚本语言类型,则判断所述代码文件中是否存在被混淆的代码;第三处理模块,用于若所述代码文件中存在被混淆的代码,则对所述代码文件中被混淆的代码进行解混淆。
在一些实施例中,检测恶意文件的装置还包括:检测模块,用于检测所述代码文件是否加壳;第四处理模块,用于若确定所述代码文件加壳,则对所述代码文件进行脱壳处理。
在一些实施例中,检测结果确定模块包括:检测结果确定单元,用于综合所述代码文件与所述已知恶意代码文件之间的综合相似度、所述代码文件的动态行为特征匹配结果和静态特征匹配结果,确定所述目标软件的恶意软件检测结果。
根据本申请实施例的一个方面,提供了一种电子设备,包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如上所述检测恶意软件的方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现如上所述检测恶意软件的方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述检测恶意软件的方法。
在本申请方案中,在获取目标软件的代码文件后,根据代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第一相似度;根据代码文件中各函数的模糊哈希与已知恶意代码文件中各函数的模糊哈希,确定代码文件与已知恶意代码文件之间的第二相似度;根据第一相似度和第二相似度,确定代码文件与所述已知恶意代码文件之间的综合相似度,并且还将代码文件在沙箱运行时的动态行为特征与已知恶意动态行为特征进行匹配,得到代码文件的动态行为特征匹配结果。最后通过结合综合相似度以及动态行为特征匹配结果来确定目标软件的恶意软件检测结果。在本申请方案中,根据代码文件与已知恶意代码文件在文件整体维度、函数维度以及动态行为特征维度这多个维度上的检测结果来确定目标软件的恶意软件检测结果,相较于现有技术中从单一的静态特征维度上确定待检测的目标软件的恶意检测结果,能够提高检测结果的准确性。
应当理解的是,以上的一般描述和后文细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1根据本申请一实施例示出的检测恶意软件的方法的流程图。
图2是根据本申请一实施例示出的步骤130的具体步骤流程图。
图3a是根据本申请一实施例示出的使用Yara规则进行匹配的命中情况的示意图。
图3b是根据本申请一实施例示出的使用Sigma规则进行匹配的命中情况的示意图。
图4是根据本申请一实施例示出的利用脱壳软件检测出代码文件加壳的类型的示意图。
图5是根据本申请一实施例示出的步骤130之前的具体步骤流程图。
图6是根据本申请另一实施例示出的检测恶意文件的方法的流程示意图。
图7是根据本申请另一实施例示出的同源相似度分析的具体步骤流程图。
图8是根据本申请一实施例示出的一种检测恶意文件的装置的框图。
图9示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在进行具体说明之前,对本申请涉及的术语进行如下解释:
Yara:是一种旨在(但不限于)帮助恶意软件研究人员识别和分类恶意软件样本的开源工具。Yara中包括各种Yara规则,Yara规则是由一系列特征字符串和一个确定其逻辑的布尔表达式构成,用于描述某恶意家族的特征或任意可描述的特征。Yara可以根据Yara规则检测静态文件或运行的进程,来帮助研究人员识别其是否含有规则描述的特征。
Sigma:是一种通用且开放的签名格式,以直接的方式描述相关的日志事件。Sigma规则格式非常灵活,易于编写,适用于任何类型的日志文件。Sigma规则指定检测签名,该签名以通用形式描述对日志文件中数据的搜索。Sigma用于日志文件,而Yara用于文件。
ssdeep:是一个用于计算上下文分段哈希(CTPH:context triggered piecewisehashes)的开源工具,上下文分段哈希也被称为模糊哈希(fuzzy hashes)。通过比较计算出的模糊哈希值,可以关联出原始文件(或上下文)之间的相似程度。
Jaccard index:雅卡尔指数(Jaccard index),又称为并交比(Intersectionover Union)、雅卡尔相似系数(Jaccard similarity coefficient),是用于比较样本集的相似性与多样性的统计量。
APT(advanced persistent threat,高级持续性威胁):其本质是一种针对性极强的网络攻击,通常指经过精心策划,利用先进的攻击手段,针对特定的目标,发起的长期且隐蔽威胁攻击。高级持续性威胁包含三个基本要素:高级、长期、威胁。
图1是根据本申请一实施例示出的检测恶意软件的方法的流程示意图,本申请的方法可以由具备处理能力的电子设备执行,该电子设备例如服务器、云服务器等,在此不进行具体限定。如图1所示,该方法包括:
步骤110,获取目标软件的代码文件。
在本申请中,目标软件泛指待检测的软件。
步骤120,根据代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算代码文件与已知恶意代码文件之间的第一相似度。
已知恶意代码文件是指已知的在运行时存在恶意行为的代码文件,恶意行为例如对某一软件进行恶意攻击的行为、未经用户允许读取用户信息(用户信息例如位置信息、购物记录、浏览记录等信息)、强制安装行为、浏览器劫持行为、恶意卸载行为、恶意捆绑行为等,在此不进行具体限定。已知恶意代码文件可以是已知的计算机病毒的代码文件、计算机蠕虫的代码文件等。
在一些实施例中,可以预先构建恶意代码文件集合,该恶意代码文件集合中包括多个已知恶意代码文件,在步骤120中,根据代码文件的文件模糊哈希与每一已知恶意代码文件的文件模糊哈希,计算代码文件与每一已知恶意代码文件之间的相似度。
在本申请中,将根据文件模糊哈希所计算得到的两代码文件之间的相似度称为第一相似度。
在一些实施例中,可以将代码文件进行分片,得到代码文件的多个分片内容,然后计算每一分片内容的哈希值,再将代码文件中全部分片内容的哈希值进行拼接,得到该代码文件的文件模糊哈希;也可以先将每一分片内容的哈希值进行压缩后,将代码文件中全部分片内容压缩后的哈希值进行拼接,得到该代码文件的文件模糊哈希。同理,可以按照相同的方式计算已知恶意代码文件的文件模糊哈希。在一些实施例中,可以通过利用ssdeep这个工具来计算文件模糊哈希。
代码文件以及已知恶意代码文件的文件模糊哈希是字符串序列,在具体实施例中,可以计算代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希之间的编辑距离,然后根据该编辑距离来确定代码文件与已知恶意代码文件之间的第一相似度。
编辑距离又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个字符串的相似度越大。
步骤130,根据代码文件中各函数的模糊哈希与已知恶意代码文件中各函数的模糊哈希,确定代码文件与已知恶意代码文件之间的第二相似度。
代码文件包括多个函数,代码文件中的函数又称为应用程序接口(ApplicationProgramming Interface,API),其中,每一函数包括多个字符,例如表示该函数的函数名的字符,以及函数的输入参数等,因此,可以理解为函数为一串字符串。在此基础上,可以将函数进行分段,然后计算每一分段的哈希值,之后,将各分段的哈希值进行连接,得到该函数的模糊哈希,或者将各分段的哈希值进行压缩后再连接,得到该函数的模糊哈希。同理可以计算得到已知恶意代码文件中各函数的模糊哈希。
在本申请中,可以通过计算代码文件中各函数与已知恶意文件中各函数的相似度,来确定在函数维度上代码文件与已知恶意代码文件之间的相似度。在本申请中,将在函数维度上代码文件与已知恶意代码文件之间的相似度称为第二相似度。
在一些实施例中,代码文件中各函数的模糊哈希、以及已知恶意代码文件中各函数的模糊哈希可以是通过ssdeep计算得到。
在一些实施例中,如图2所示,步骤130包括:
步骤210,根据代码文件中各函数的模糊哈希与已知恶意代码文件中各函数的模糊哈希,计算代码文件中各函数与已知恶意代码文件中各函数之间的函数相似度。
在一些实施例中,针对代码文件中的一函数(为便于描述,假设为函数I)和已知恶意代码文件中的一函数(为便于描述,假设为函数II),在确定函数I的模糊哈希和函数II的模糊哈希后,可以计算函数I的模糊哈希与函数II的模糊哈希之间的编辑距离,然后根据函数I的模糊哈希与函数II的模糊哈希之间的编辑距离来确定函数I与函数II之间的函数相似度,可以理解的是,函数I的模糊哈希与函数II的模糊哈希之间的编辑距离越小,则函数I与函数II之间的函数相似度越高。
步骤220,根据代码文件中各函数与已知恶意代码文件中各函数之间的函数相似度,确定代码文件中函数相似度超过函数相似度阈值的目标函数。
目标函数是指目标软件的代码文件中与已知恶意代码文件中函数之间函数相似度超过函数相似度阈值的函数。函数相似度阈值根据用户的实际需要来进行设置,在此不进行具体限定。
步骤230,根据目标函数的数量、代码文件中函数的数量和已知恶意代码文件中函数的数量,确定代码文件与已知恶意代码文件之间的第二相似度。
在一些实施例中,可通过利用雅卡尔指数(Jaccard index)来确定代码文件与已知恶意代码文件之间的相似度。
雅卡尔指数,又称为并交比(Intersection over Union)、雅卡尔相似系数(Jaccard similarity coefficient),是用于比较样本集的相似性与多样性的统计量,表示了两个集合的交集大小与并集大小之间的比例。例如,一集合为A,另一集合为B,则集合A和集合B之间的雅卡尔指数为:
其中,A∩B为集合A和集合B的交集,A∪B为集合A与集合B的并集。
具体应用到本方案中,集合A为代码文件中的函数集合,集合B为一已知恶意代码文件(假设为已知恶意代码文件T1)中的函数集合,则集合A与集合B的并集即为目标函数的集合,集合A与集合B的并集即为代码文件中的函数与已知恶意代码文件中的函数的并集,在此基础上,假设代码文件中的函数总数为m1,已知恶意代码文件T1中的函数总数为m2,代码文件相对于已知恶意代码文件T1的目标函数的总数为m3,则代码文件与已知恶意代码文件T1之间的第二相似度S为:S=m3/(m1+m2-m3)。
请继续参阅图1,步骤140,根据第一相似度和第二相似度,确定代码文件与已知恶意代码文件之间的综合相似度。
综合相似度是结合代码文件与已知恶意代码文件之间的第一相似度和第二相似度得到的相似度,综合相似度能够在文件整体维度和函数维度上来反映代码文件与已知恶意代码文件之间的相似程度。
在一些实施例中,综合相似度可以是将第一相似度与第二相似度进行加权计算得到,其中,为第一相似度所设定的加权系数与为第二相似度所设定的加权系数可根据实际需要设定,在此不进行具体限定。
在另一些实施例中,若确定代码文件与已知恶意代码文件之间的第一相似度大于第一相似度阈值,可以将第一相似度确定为代码文件与已知恶意代码文件之间的综合相似度。
在另一些实施例中,若确定代码文件与已知恶意代码文件之间的第一相似度不大于第一相似度阈值,可以将代码文件与已知恶意代码文件之间的第二相似度确定为代码文件与已知恶意代码文件之间的综合相似度。
在另一些实施例中,若确定代码文件与已知恶意代码文件之间的第一相似度不大于第一相似度阈值,可以将代码文件与已知恶意代码文件之间的第二相似度以及第二相似度进行加权计算,将加权结果作为代码文件与已知恶意代码文件之间的综合相似度。
步骤150,将代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到代码文件的动态行为特征匹配结果;代码文件的动态行为特征是在沙箱中运行代码文件中的代码的过程中采集到的。
动态行为特征用于指示程序(或代码)在运行过程中所表现出的行为,例如删除文件、新增文件、读取文件的行为、注册表行为、网络行为、进程行为等。对应的,已知恶意动态行为特征是指已知的恶意代码在运行中所表现出存在恶意行为的特征。
在一些实施例中,可以针对已知恶意代码文件,在沙箱中运行已知恶意代码文件,并根据已知恶意代码文件在运行过程中所呈现的行为来确定已知恶意动态行为特征。
代码文件的动态行为特征匹配结果指示了代码文件中与已知恶意动态行为特征相匹配的动态行为特征。
在一些实施例中,可以将代码文件的动态行为特征与已知恶意代码文件中的已知恶意动态行为特征进行匹配,从而,通过代码文件中所存在与已知恶意动态行为特征相匹配的动态行为特征数量,来确定代码文件与该已知恶意代码文件之间的第三相似度。在该种情况下,代码文件的动态行为特征匹配结果还可以指示代码文件与各已知恶意代码文件之间的第三相似度,进一步的,代码文件的动态行为特征匹配结果还可以进一步指示所匹配到的已知恶意动态行为特征。
沙箱(Sandboxie,也叫沙盘)是一个虚拟系统程序,是一种按照安全策略限制程序行为的执行环境。在一些实施例中,沙箱可用来测试不受信任的文件或应用程序等。沙箱的工作原理是将代码或程序运行在一个隔离的空间内,且在沙箱中运行的代码和/或程序可读不可写,从而避免代码和/或程序对终端设备以及终端设备上的其它程序和数据造成永久性的修改或造成破坏。
在一些实施例中,在沙箱中运行代码文件中的代码的过程中,由于恶意代码一定会在内存中执行的,因此可以在沙箱中使用Yara来扫描进程内存,以此来采集代码文件的动态行为特征。
图3a是根据本申请一实施例示出的使用Yara规则进行匹配的命中情况的示意图。如图3a所示,在沙箱中运行代码文件后与Yara规则进行匹配,得到代码文件的动态行为特征匹配结果。
在一些实施例中,在沙箱中运行代码文件中的代码的过程中,会生成对应的日志,该日志指示了代码文件在运行过程中所表现的动态行为,因此,还可以从在沙箱中运行代码文件的过程中所生成的日志中确定与已知恶意动态行为特征相匹配的动态行为特征。具体的,可以根据已知恶意动态行为特征来设定Sigma规则,将日志与所设定的Sigma规则进行匹配,从而确定与已知恶意动态行为特征相匹配的动态行为特征。
图3b是根据本申请一实施例示出的使用Sigma规则进行匹配的命中情况的示意图。如图3b所示,在沙箱中运行代码文件后,将运行产生的行为日志文件与Sigma规则进行匹配,得到的匹配结果为未匹配到已知恶意动态行为特征。
请继续参阅图1,步骤160,根据代码文件与已知恶意代码文件之间的综合相似度,和代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果。
在一些实施例中,目标软件的恶意软件检测结果可以指示该目标软件与已知恶意代码文件同源的概率,可以理解的,目标软件与一已知恶意代码文件之间的相似度越高,则表明该目标软件为恶意软件的概率越高,而且,也表明该目标软件与该已知恶意代码文件同源的概率越高。
在一些实施例中,目标软件的恶意软件检测结果可以包括代码文件与已知恶意代码文件之间的综合相似度,和代码文件的动态行为特征匹配结果,从而,便于用户根据综合相似度、以及动态行为特征匹配结果来进行析和验证,确定该目标软件是否为恶意软件,以及是否与一已知恶意代码同源。
在一些实施例中,通过代码文件与已知恶意代码文件之间的综合相似度,和代码文件的动态行为特征匹配结果来进行综合分析,当代码文件与一已知恶意代码文件之间的综合相似度大于综合相似度阈值,并且在代码文件的动态行为特征匹配结果所指示匹配到的该已知恶意代码文件中的已知恶意动态行为特征的数量超过数量阈值,则确定目标软件为恶意软件,且与该已知恶意文件同源。
在一些实施例中,步骤160包括:综合代码文件与已知恶意代码文件之间的综合相似度、代码文件的动态行为特征匹配结果和静态特征匹配结果,确定目标软件的恶意软件检测结果。
在一些实施例中,静态特征匹配结果可以是通过静态扫描引擎或杀毒软件对代码文件进行静态查杀,并将代码文件的静态特征与已知恶意代码文件的静态特征进行匹配,从而,确定代码文件与该已知恶意代码文件的静态特征匹配结果。静态查杀主要是对代码文件的静态特征进行识别,静态特征包括但不限于函数方法名、字符串、导出函数、文件大小、资源图标、签名等。
在本实施例中,进一步综合代码文件的静态特征匹配结果来确定目标软件的恶意软件检测结果,从而,进一步提升恶意软件检测结果的准确性。
在本申请方案中,在获取目标软件的代码文件后,根据代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,确定代码文件与已知恶意代码文件之间的第一相似度;根据代码文件中各函数的模糊哈希与已知恶意代码文件中各函数的模糊哈希,确定代码文件与已知恶意代码文件之间的第二相似度;根据第一相似度和第二相似度,确定代码文件与已知恶意代码文件之间的综合相似度,并且还将代码文件在沙箱运行时的动态行为特征与已知恶意动态行为特征进行匹配,得到代码文件的动态行为特征匹配结果。最后结合综合相似度以及动态行为特征匹配结果来确定目标软件的恶意软件检测结果。在本方案中,根据代码文件与已知恶意代码文件之间在文件整体维度、函数维度以及动态行为特征维度这多个维度上的检测结果来确定目标软件的恶意软件检测结果,相较于现有技术中从单一的静态特征维度上确定待检测的目标软件的恶意检测结果,能够提高检测结果的准确性,可以降低误检和漏检的概率。
在一些实施例中,步骤120之前,该方法还包括:确定代码文件的文件类型;若代码文件的文件类型为文档类型,则移除代码文件中的宏代码。
在文档类型的代码文件中可能会包括宏代码,宏代码能将一些命令组织到一起作为一独立的命令使用完成特定的任务,如自动执行。宏代码是计算机的一种编程语言,把复杂的源文件变成简单、精短的代码。可以理解的是,在确定代码文件的文件类型为文档类型时,对应检测代码文件中是否包括宏代码,如果包括,则移除代码文件中的宏代码。移除宏代码能够避免代码文件中的某些恶意代码恶意利用宏代码来进行自动执行等。
在一些实施例中,在确定待检测文件的类型之后,该方法还包括:若代码文件的文件类型为脚本语言类型,则判断代码文件中是否存在被混淆的代码;若代码文件中存在被混淆的代码,则对代码文件中被混淆的代码进行解混淆。
脚本语言是一种计算机编程语言,例如Python、Vbscript、Javascript等,脚本语言缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程,脚本语言在执行时不需要编译,可以直接用,由解释器来负责解释执行。
脚本语言类型的恶意代码文件通常会使用各种各样的混淆技术来保护自己,这样可以躲避一些基于静态的特征值检测的杀毒软件,同时还可以阻止安全研究人员的逆向分析。对脚本语言进行混淆通常采用如下三种方法:1、对字符串进行加密;2、对程序的类名,方法名,用无意义的字符串代替;3、打乱程序原本的结构,减低可读性。
由于一定程度的混淆,可避免明显的加壳特征,降低代码的熵值,能避免代码文件被静态特征扫描,所以在代码文件中存在被混淆的代码时,进行解混淆,增强了代码文件的可读性,可以便于后续对代码文件进行分析,例如判断代码文件是否加壳等。在一些实施例中,可通过一些反混淆的工具来进行解混淆,例如:Threadtear和CyberChef等。
在一些实施例中,步骤120之前,该方法还包括:检测代码文件是否加壳;若确定代码文件加壳,则对代码文件进行脱壳处理。
在网络安全中,壳是一段执行于原始程序代码前的代码,为了隐藏程序真正的OEP(Original Entry Point,入口点)防止被破解。壳的类型有压缩壳、加密壳、伪装壳等。
壳具有一定的特征(签名特征),不同的壳都有自己的特征,根据壳的特征判断代码文件是否加壳或是否脱壳成功。可使用工具来检测是否加壳,例如PEID、exeinfoPE等。
图4是根据本申请一实施例示出的利用脱壳软件检测出代码文件加壳的类型的示意图。如图4所示,通过利用Detect it Easy工具,检测出代码文件中含有UPX(压缩壳)。
虽然加过壳的代码文件可以直接运行,但是不能查看源代码,因此,如果代码文件加过壳,无法确定代码文件的文件模糊哈希,以及代码文件中各函数的模糊哈希,因此,若确定代码文件加壳时,对代码文件进行脱壳处理,便于计算代码文件的文件模糊哈希和其中各函数的模糊哈希。
在具体实施例中,可通过利用脱壳工具来对加壳代码文件进行脱壳处理,脱壳工具例如File Scanner、Detect it Easy、ExeinfoPe等。在另一些实施例中,可由工程师手工进行脱壳,主要是通过寻找代码文件中代码的入口点,将代码转储为静态形式,修复PE(Portable Executable,可移植文件)文件,即可达到脱壳效果。
图5是根据本申请一实施例示出的步骤130之前的具体步骤流程图。在一些实施例中,如图5所示,步骤130之前,该方法还包括:
步骤510,对代码文件进行反汇编处理,得到反汇编代码。
反汇编处理是指把代码文件转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级。
步骤520,将反汇编代码中各函数中的操作数移除。
反汇编代码包括按照一定顺序排列的多条指令,通常的,一条指令包括操作码和操作数,操作码决定要完成的操作,操作数是指参加运算的数据及其所在的单元地址。
步骤530,计算移除操作数后反汇编代码中各函数的模糊哈希,得到代码文件中各函数的模糊哈希。
由于反汇编代码中,来自不同恶意代码文件的相同函数的操作数可能会不同,若在基于反汇编代码计算各函数的模糊哈希前不移除操作数,会导致两函数的模糊哈希出现较大差别。又因为,反汇编代码中的操作数是通过编译器添加的,使用不同的编译器会导致操作数不同,若同一代码文件使用不同编译器进行反汇编,若计算该反汇编代码中相同函数的模糊哈希前不移除操作数,会导致反汇编代码中相同函数的模糊哈希存在差异。因此,移除反汇编代码中各函数中的操作数可以避免因操作数、或者使用不同的编译器所导致相同函数的模糊哈希不同,由此,可以避免因相同函数的操作数不同、以及使用不同的编译器影响函数相似度的计算,从而,保证所计算得到函数相似度的可靠性和准确性。
图6是根据本申请另一实施例示出的检测恶意文件的方法的流程示意图。如图6所示,该方法包括:
步骤610,获取目标软件的代码文件。
步骤620,对代码文件进行预处理。
在一些实施例中,预处理包括解压、解混淆等。在具体实施例中,如果代码文件是压缩文件便进行解压;如果是代码文件的文件类型是文档类型,则移除代码文件中的宏代码;如果代码文件的文件类型是脚本语言类型,则判断是代码文件中的代码是否含有混淆,如果有混淆则代码文件中被混淆的代码进行解混淆。由于一定程度的混淆,可避免明显的加壳特征,降低代码的熵值,能避免代码文件被静态特征扫描,所以在代码文件中的代码存在被混淆的代码则需要进行解混淆。
步骤630,检测代码文件是否加壳;若加壳,则执行步骤640,若未加壳,则执行步骤650。
步骤640,对代码文件进行脱壳处理。
步骤650,判断是否脱壳成功;若脱壳成功,则执行步骤660以及步骤670,若脱壳失败,则执行步骤680。
步骤660,对代码文件进行静态特征匹配,得到代码文件的静态特征匹配结果。
在一些实施例中,静态特征匹配可以是通过Yara规则进行匹配,也可以是利用常见的杀毒软件进行静态特征匹配,可根据实际需要来设定,在此不进行具体限定。
步骤670,将代码文件与已知恶意代码文件进行同源相似分析,得到代码文件的同源相似分析结果。
同源相似分析是指为确定代码文件与已知恶意代码文件是否同源所进行的分析。可以理解的是,若代码文件与一已知恶意代码文件之间的相似程度越高,则该代码文件与该已知恶意代码文件同源的概率越高,其中,代码文件与该已知恶意代码文件同源是指该代码文件与已知恶意代码文件来自相同的恶意代码家族。
同源相似分析结果可以用于指示代码文件与已知恶意代码文件是否同源,或者用于指示代码文件与已知恶意代码文件同源的概率,可以理解的是,若代码文件与已知恶意代码文件同源、或者同源的概率越高,则表明目标软件为恶意软件。
可以理解的是,同源相似分析结果可以包括指示目标软件与已知恶意代码文件同源的第一同源分析结果、指示目标软件与已知恶意代码文件不同源(或者同源的概率不高)但目标软件为恶意软件的概率较高的第二同源分析结果、以及指示目标软件为恶意软件的概率较低的第三同源分析结果。
步骤680,将代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到代码文件的动态行为特征匹配结果。
步骤690,根据代码文件的脱壳结果、同源分析相似度结果、静态特征匹配结果、动态行为特征匹配结果,确定目标软件的恶意软件检测结果。
在本实施例中,通过结合代码文件的脱壳结果、同源分析相似度结果、静态特征匹配结果、动态行为特征匹配结果多个方面来综合确定目标软件恶意软件检测结果,能够提高检测结果的准确性,可以挖据出高价值、高威胁的恶意软件。
图7是根据本申请另一实施例示出的同源相似度分析的具体步骤流程图。如图7所示,同源相似度分析具体包括:
步骤710,提取代码文件中的函数。
步骤720,确定代码文件与已知恶意代码文件之间的第二相似度。
步骤730,判断第二相似度是否大于第二相似度阈值;若第二相似度大于第二相似度阈值,则确定目标软件与已知恶意代码文件同源,即可以确定目标软件来源于已知的恶意代码家族;反之,若第二相似度不大于第二相似度阈值,则执行步骤740。
步骤740,计算代码文件与已知恶意代码文件之间的第一相似度。
步骤750,判断第一相似度是否大于第一相似度阈值;若第一相似度大于第一相似度阈值,则确定目标软件来源于未知的恶意代码家族;反之,若第一相似度不大于第一相似度阈值,则确定该目标软件为孤立样本。
对于确定为来源于未知的恶意代码家族以及孤立样本的目标软件,可以将其添加到样本库中,便于之后结合更多的软件以及更丰富的已知恶意代码文件来进行进一步的分析。
图8是根据本申请一实施例示出的一种检测恶意文件的装置的框图,如8所示,该检测恶意文件的装置800包括:
获取模块810,用于获取目标软件的代码文件;第一相似度计算模块820,用于根据代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算代码文件与已知恶意代码文件之间的第一相似度;第二相似度计算模块830,用于根据代码文件中各函数的模糊哈希与已知恶意代码文件中各函数的模糊哈希,确定代码文件与已知恶意代码文件之间的第二相似度;综合相似度确定模块840,用于根据第一相似度和第二相似度,确定代码文件与已知恶意代码文件之间的综合相似度;匹配模块850,用于将代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到代码文件的动态行为特征匹配结果;代码文件的动态行为特征是在沙箱中运行代码文件中的代码的过程中采集到的;检测结果确定模块860,用于根据代码文件与已知恶意代码文件之间的综合相似度,和代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果。
在一些实施例中,第二相似度确定模块830包括:函数相似度计算单元,用于根据代码文件中各函数的模糊哈希与已知恶意代码文件中各函数的模糊哈希,计算代码文件中各函数与已知恶意代码文件中各函数之间的函数相似度;目标函数确定单元,用于根据代码文件中各函数与已知恶意代码文件中各函数之间的函数相似度,确定代码文件中函数相似度超过函数相似度阈值的目标函数;第二相似度确定单元,用于根据目标函数的数量、代码文件中函数的数量和已知恶意代码文件中函数的数量,确定代码文件与已知恶意代码文件之间的第二相似度。
在一些实施例中,该检测恶意文件的装置800还包括:反汇编模块,用于对代码文件进行反汇编处理,得到反汇编代码;第一处理模块,用于将反汇编代码中各函数中的操作数移除;函数模糊哈希计算模块,用于计算移除操作数后反汇编代码中各函数的模糊哈希,得到代码文件中各函数的模糊哈希。
在一些实施例中,检测恶意文件的装置800还包括:文件类型第一确定模块,用于确定代码文件的文件类型;第二处理模块,用于若代码文件的文件类型为文档类型,则移除代码文件中的宏代码。
在一些实施例中,检测恶意文件的装置800还包括:文件类型第二确定模块,用于若代码文件的文件类型为脚本语言类型,则判断代码文件中是否存在被混淆的代码;第三处理模块,用于若代码文件中存在被混淆的代码,则对代码文件中被混淆的代码进行解混淆。
在一些实施例中,检测恶意文件的装置800还包括:检测模块,用于检测代码文件是否加壳;第四处理模块,用于若确定代码文件加壳,则对代码文件进行脱壳处理。
在一些实施例中,检测结果确定模块860包括:检测结果确定单元,用于综合代码文件与已知恶意代码文件之间的综合相似度、代码文件的动态行为特征匹配结果和静态特征匹配结果,确定目标软件的恶意软件检测结果。
图9示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图9示出的电子设备的计算机系统900仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理单元(Central Processing Unit,CPU)901,其可以根据存储在只读存储器(Read-Only Memory,ROM)902中的程序或者从存储部分908加载到随机访问存储器(Random Access Memory,RAM)903中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 903中,还存储有系统操作所需的各种程序和数据。CPU901、ROM902以及RAM 903通过总线904彼此相连。输入/输出(Input/Output,I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分906。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分908从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载计算机可读指令,当该计算机可读存储指令被处理器执行时,实现上述任一实施例中的方法。
根据本申请的一个方面,还提供了一种电子设备,其包括:处理器;存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时,实现上述任一实施例中的方法。
根据本申请实施例的一个方面,提供了计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例中的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (11)
1.一种检测恶意软件的方法,其特征在于,所述方法包括:
获取目标软件的代码文件;
根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度;
根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度;
根据所述第一相似度和所述第二相似度,确定所述代码文件与所述已知恶意代码文件之间的综合相似度;
将所述代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到所述代码文件的动态行为特征匹配结果;所述代码文件的动态行为特征是在沙箱中运行所述代码文件中的代码的过程中采集到的;
根据所述代码文件与所述已知恶意代码文件之间的综合相似度,和所述代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度,包括:
根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,计算所述代码文件中各函数与所述已知恶意代码文件中各函数之间的函数相似度;
根据所述代码文件中各函数与所述已知恶意代码文件中各函数之间的函数相似度,确定所述代码文件中函数相似度超过函数相似度阈值的目标函数;
根据所述目标函数的数量、所述代码文件中函数的数量和所述已知恶意代码文件中函数的数量,确定所述代码文件与所述已知恶意代码文件之间的第二相似度。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度之前,所述方法还包括:
对所述代码文件进行反汇编处理,得到反汇编代码;
将所述反汇编代码中各函数中的操作数移除;
计算移除操作数后所述反汇编代码中各函数的模糊哈希,得到所述代码文件中各函数的模糊哈希。
4.根据权利要求1所述的方法,其特征在于,所述根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度之前,所述方法还包括:
确定所述代码文件的文件类型;
若所述代码文件的文件类型为文档类型,则移除所述代码文件中的宏代码。
5.根据权利要求4所述的方法,其特征在于,所述确定所述待检测文件的类型之后,所述方法还包括:
若所述代码文件的文件类型为脚本语言类型,则判断所述代码文件中是否存在被混淆的代码;
若所述代码文件中存在被混淆的代码,则对所述代码文件中被混淆的代码进行解混淆。
6.根据权利要求1所述的方法,其特征在于,所述根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度之前,所述方法还包括:
检测所述代码文件是否加壳;
若确定所述代码文件加壳,则对所述代码文件进行脱壳处理。
7.根据权利要求1所述的方法,其特征在于,所述根据所述代码文件与所述已知恶意代码文件之间的综合相似度,和所述代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果,包括:
综合所述代码文件与所述已知恶意代码文件之间的综合相似度、所述代码文件的动态行为特征匹配结果和静态特征匹配结果,确定所述目标软件的恶意软件检测结果。
8.一种检测恶意软件的装置,其特征在于,所述装置包括:
获取模块,用于获取目标软件的代码文件;
第一相似度计算模块,用于根据所述代码文件的文件模糊哈希与已知恶意代码文件的文件模糊哈希,计算所述代码文件与所述已知恶意代码文件之间的第一相似度;
第二相似度计算模块,用于根据所述代码文件中各函数的模糊哈希与所述已知恶意代码文件中各函数的模糊哈希,确定所述代码文件与所述已知恶意代码文件之间的第二相似度;
综合相似度确定模块,用于根据所述第一相似度和所述第二相似度,确定所述代码文件与所述已知恶意代码文件之间的综合相似度;
匹配模块,用于将所述代码文件的动态行为特征与已知恶意动态行为特征进行匹配,得到所述代码文件的动态行为特征匹配结果;所述代码文件的动态行为特征是在沙箱中运行所述代码文件中的代码的过程中采集到的;
检测结果确定模块,用于根据所述代码文件与所述已知恶意代码文件之间的综合相似度,和所述代码文件的动态行为特征匹配结果,确定目标软件的恶意软件检测结果。
9.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储器,与所述一个或多个处理器电连接;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行如权利要求1至6任一项所述的方法。
10.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1至6任一项所述的方法。
11.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111626261.0A CN114510713A (zh) | 2021-12-28 | 2021-12-28 | 检测恶意软件的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111626261.0A CN114510713A (zh) | 2021-12-28 | 2021-12-28 | 检测恶意软件的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114510713A true CN114510713A (zh) | 2022-05-17 |
Family
ID=81548706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111626261.0A Pending CN114510713A (zh) | 2021-12-28 | 2021-12-28 | 检测恶意软件的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114510713A (zh) |
-
2021
- 2021-12-28 CN CN202111626261.0A patent/CN114510713A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yakura et al. | Malware analysis of imaged binary samples by convolutional neural network with attention mechanism | |
Chowdhury et al. | Malware analysis and detection using data mining and machine learning classification | |
US10956477B1 (en) | System and method for detecting malicious scripts through natural language processing modeling | |
Mosli et al. | Automated malware detection using artifacts in forensic memory images | |
Alazab | Profiling and classifying the behavior of malicious codes | |
CN112041815B (zh) | 恶意软件检测 | |
US9015814B1 (en) | System and methods for detecting harmful files of different formats | |
KR102323290B1 (ko) | 알려진 및/또는 알려지지 않은 사이버 보안 위협들의 모폴로지들을 분석함으로써 데이터 이상들을 검출하기 위한 시스템 및 방법 | |
US9953162B2 (en) | Rapid malware inspection of mobile applications | |
RU2614557C2 (ru) | Система и способ обнаружения вредоносных файлов на мобильных устройствах | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
US10445501B2 (en) | Detecting malicious scripts | |
Sun et al. | Malware family classification method based on static feature extraction | |
Zakeri et al. | A static heuristic approach to detecting malware targets | |
US10237285B2 (en) | Method and apparatus for detecting macro viruses | |
CN111222137A (zh) | 一种程序分类模型训练方法、程序分类方法及装置 | |
Nguyen et al. | Detecting repackaged android applications using perceptual hashing | |
US20180285565A1 (en) | Malware detection in applications based on presence of computer generated strings | |
Aslan | Performance comparison of static malware analysis tools versus antivirus scanners to detect malware | |
US20180341770A1 (en) | Anomaly detection method and anomaly detection apparatus | |
Alshamrani | Design and analysis of machine learning based technique for malware identification and classification of portable document format files | |
CN108319853B (zh) | 病毒特征码处理方法及装置 | |
CN107368740B (zh) | 一种针对数据文件中可执行代码的检测方法及系统 | |
CN114143074B (zh) | webshell攻击识别装置及方法 | |
Vahedi et al. | Cloud based malware detection through behavioral entropy |
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 |