掌桥专利:专业的专利平台
掌桥专利
首页

一种恶意代码的检测方法、装置和计算机可读介质

文献发布时间:2023-06-19 10:54:12


一种恶意代码的检测方法、装置和计算机可读介质

技术领域

本发明涉及网络安全技术领域,尤其涉及一种恶意代码的检测方法、装置和计算机可读介质。

背景技术

随着互联网的飞速发展和计算机的快速普及,在方便人们的同时,也带来了安全隐患。恶意代码对个人乃至社会和国家所带来的影响和危害也越来越大,在很多场景中用人来处置恶意代码是不现实的,需要一种能够自动化快速检测恶意代码的工具,来应对大规模感染恶意代码的场景。

目前,新技术文件系统(New Technology File System,NTFS)因为它的稳定性和强大的功能以及它所提供的安全性而成为一种更优越的文件系统,NTFS交换数据流是NTFS磁盘格式的一种特性,NTFS系统中的一个普通文件是可以拥有多个数据流文件的,而数据流文件的格式却没有限制,并且当我们运行这个文件时,其附带的数据流文件也会运行。由于现有系统自带的任务管理器、进程管理器等工具都不能很好的检测到NTFS交换数据流,这样,如果黑客将恶意代码程序作为数据流文件捆绑于正常的文件中,当用户运行这个文件,就会同时运行恶意代码程序。

因此,亟需提供一种恶意代码的检测方法,以解决上述现有技术的不足。

发明内容

本发明要解决的问题是当恶意代码程序作为数据流文件捆绑于NTFS系统中的正常文件中时,任务管理器、进程管理器等工具都不能很好的进行检测。本方案提供了一种恶意代码的检测方法、装置和计算机可读介质,能够对NTFS系统下隐藏的恶意代码进行有效的检测。

第一方面,本发明实施例提供了一种恶意代码的检测方法,该方法应用于新技术文件系统NTFS,可以包括:

对系统进行文件扫描,获得可疑文件;

对所述可疑文件进行解析,并根据解析后的数据判断所述可疑文件是否含有隐藏文件;

若所述可疑文件含有隐藏文件,则记录与所述隐藏文件相关的告警信息,并进行可视化输出,以由用户确定是否为恶意代码;

若所述可疑文件不含有隐藏文件,则确定所述可疑文件中不含有此类隐藏文件所对应的恶意代码,并进行可视化输出。

在一种可能的实现方式中,所述对系统进行文件扫描,获得可疑文件,包括:

在系统中指定的位置进行文件扫描,获得可疑文件;

和/或,

对系统的全盘进行文件扫描,获得可疑文件。

在一种可能的实现方式中,所述对所述可疑文件进行解析,并根据解析后的数据判断所述可疑文件是否含有隐藏文件,包括:

将所述可疑文件进行解析,获得所述可疑文件的至少一个NTFS属性;

从所述NTFS属性中查找数据属性;

判断查找出的所述数据属性的个数是否大于1;

若查找出的所述数据属性的个数大于1,则所述可疑文件包含隐藏文件;

若查找出的所述数据属性的个数不大于1,则所述可疑文件不包含隐藏文件。

在一种可能的实现方式中,在对系统进行文件扫描,获得可疑文件之后,在对所述可疑文件进行解析,判断所述可疑文件是否含有隐藏文件之前,进一步包括:

判断是否有程序调用了预先定义的应用函数;

若判断出有程序调用了预先定义的应用函数,则生成告警信息后输出,以及;

查询调用所述应用函数的程序的路径和名称,并根据所述路径和名称将该程序隐藏的文件提取出来后进行研判处理,以确定是否为恶意代码。

第二方面,本发明实施例还提供了一种恶意代码的检测装置,该装置应用于新技术文件系统NTFS,包括:扫描模块、解析判断模块和执行模块;

所述扫描模块,用于对系统进行文件扫描,获得可疑文件;

所述解析判断模块,用于对所述扫描模块扫描出的所述可疑文件进行解析,并根据解析后的数据判断所述可疑文件是否含有隐藏文件;

所述执行模块,用于在所述解析判断模块判断出所述可疑文件含有隐藏文件时,记录与所述隐藏文件相关的告警信息,并进行可视化输出,以由用户确定是否为恶意代码;以及在所述解析判断模块判断出所述可疑文件不含有隐藏文件时,确定所述可疑文件中不含有此类隐藏文件所对应的恶意代码,并进行可视化输出。

在一种可能的实现方式中,

所述扫描模块,用于在系统中指定的位置进行文件扫描,获得可疑文件;

和/或,

所述扫描模块,用于对系统的全盘进行文件扫描,获得可疑文件。

在一种可能的实现方式中,所述解析判断模块,用于执行如下操作:

将所述可疑文件进行解析,获得所述可疑文件的至少一个NTFS属性;

从所述NTFS属性中查找数据属性;

判断查找出的所述数据属性的个数是否大于1;

若查找出的所述数据属性的个数大于1,则所述可疑文件包含隐藏文件;

若查找出的所述数据属性的个数不大于1,则所述可疑文件不包含隐藏文件。

在一种可能的实现方式中,该恶意代码的检测装置进一步包括:应用函数调用判断模块;

所述应用函数调用判断模块,用于执行如下操作:

判断是否有程序调用了预先定义的应用函数;

若判断出有程序调用了预先定义的应用函数,则生成告警信息后输出,以及;

查询调用所述应用函数的程序的路径和名称,并根据所述路径和名称将该程序隐藏的文件提取出来后进行研判处理,以确定是否为恶意代码。

第三方面,本发明实施例还提供了一种恶意代码的检测装置,包括:至少一个存储器和至少一个处理器;

所述至少一个存储器,用于存储机器可读程序;

所述至少一个处理器,用于调用所述机器可读程序,执行上述第一方面任一实施例所述的方法。

第四方面,本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述第一方面任一实施例所述的方法。

实施本发明的一种恶意代码的检测方法、装置和计算机可读介质,至少具有以下有益效果:

由上述技术方案可知,该恶意代码的检测方案适用于新技术文件系统NTFS中,在进行恶意代码检测时,首先在系统中进行文件扫描,扫描出可疑的文件,然后对该可疑的文件进行解析,并根据解析后的数据判断该可疑文件是否包含隐藏文件,如果包含隐藏文件,则记录与该隐藏文件相关的告警信息,进一步通过可视化输出时用户确定该可疑文件是否为恶意代码,如果不包含隐藏文件,则可以直接可视化输出不含有此类隐藏文件所对应的恶意代码。由此可见,本方案通过对可疑文件进行解析,能够通过解析后的数据来确定该可疑文件是否包含隐藏文件,从而也就能够有效地检测出系统中是否有恶意代码。

附图说明

图1是本发明一个实施例提供的一种恶意代码的检测方法的流程图;

图2是本发明一个实施例提供的一种恶意代码的检测装置所在设备的示意图;

图3是本发明一个实施例提供的一种恶意代码的检测装置的结构示意图;

图4是本发明另一个实施例提供的一种恶意代码的检测装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种恶意代码的检测方法,该方法应用于新技术文件系统NTFS,可以包括以下步骤:

步骤101:对系统进行文件扫描,获得可疑文件;

步骤102:对可疑文件进行解析,并根据解析后的数据判断可疑文件是否含有隐藏文件;

步骤103:若可疑文件含有隐藏文件,则记录与隐藏文件相关的告警信息,并进行可视化输出,以由用户确定是否为恶意代码;

步骤104:若可疑文件不含有隐藏文件,则确定可疑文件中不含有此类隐藏文件所对应的恶意代码,并进行可视化输出。

在本发明实施例中,该恶意代码的检测方案适用于新技术文件系统NTFS中,在进行恶意代码检测时,首先在系统中进行文件扫描,扫描出可疑的文件,然后对该可疑的文件进行解析,并根据解析后的数据判断该可疑文件是否包含隐藏文件,如果包含隐藏文件,则记录与该隐藏文件相关的告警信息,进一步通过可视化输出时用户确定该可疑文件是否为恶意代码,如果不包含隐藏文件,则可以直接可视化输出不含有此类隐藏文件所对应的恶意代码。由此可见,本方案通过对可疑文件进行解析,能够通过解析后的数据来确定该可疑文件是否包含隐藏文件,从而也就能够有效地检测出系统中是否有恶意代码。

NTFS系统因为它的稳定性和强大的功能以及它所提供的安全性而成为一种更优越的文件系统,NTFS交换数据流是NTFS磁盘格式的一种特性,NTFS系统中的一个普通文件是可以拥有多个数据流文件的,而数据流文件的格式却没有限制,并且当我们运行这个文件时,其附带的数据流文件也会运行,这样,如果黑客将恶意代码程序作为数据流文件捆绑于正常的文件中,当用户运行这个文件,就会同时运行恶意代码程序。

现有技术中提供了一种方法通过Windows explorer来创建特殊的NTFS交换数据流,目前检测这种特殊的恶意代码ADSs的必要工具和功能相当缺乏。虽然无法看到数据流文件,但是它却是真实存在于实际的系统中的。由于兼容性的问题,系统自带的任务管理器、进程管理器等工具都不能很好的检测到NTFS交换数据流。因此NTFS交换数据流技术常常被黑客利用来隐藏文件、进程。本方案提供的恶意代码的检测方案能够很好的弥补当前恶意代码ADSs检测的缺乏,本方案在进行恶意代码的检测时采用轻量化专查工具,不会占用过多系统内存,也不会对正常使用造成影响。

例如,在本发明实施例中,在进行恶意代码的检测时,首先可以对可疑的文件进行指定位置扫描,使用定制化工具自动化对指定的文件或目录进行NTFS属性的解析,解析后查找数据属性(在NTFS系统中通常为80H属性)的值,判断80H属性值是否大于1,也就是说判断该NTFS系统中的文件表下是否存在多个80H属性的文件,如果80H属性的值大于1,则说明该可疑文件有隐藏文件,然后将分析的文件或目录进行可视化输出并告警,告警内容为该文件或目录中有隐藏的ADS流文件,请用户确认是否是正常文件。如果指定位置扫描未发现结果,对分析的文件或目录进行可视化输出,输出内容为该文件或目录中未发现有隐藏的ADS流文件。如果需要对整个操作系统进行全盘扫描,可对文件进行全盘扫描,扫描结束后,会将结果进行输出,具体输出方式与指定位置扫描一致。如此即实现了在NTFS系统中对隐藏文件的恶意代码进行检测。

再例如,Zeroaccess恶意代码的变种Trojan.Zeroaccess.C中使用ZwSetEaFileAPI函数将恶意的有效载荷分别写入%System%\services.exe和ZwQueryEaFile API函数的EA数据中,以进行检索和执行。该恶意代码通过覆盖部分原始初始化代码来修补代码,以将代码直接读取并执行EA数据到services.exe文件中。

通过使用本方案提供的检测方法,需要在受感染的计算机上执行轻量化定制工具,可以选择指定位置进行扫描或全盘进行扫描,扫描时工具中的解析模块会自动解析要扫描的文件或目录,将文件和目录转换成计算机可识别的十六进制数,在MFT属性中,查找是否带有两个或以上的80H属性,一旦发现带有多个80H属性的文件或目录,进行可视化输出。如果没有发现多个80H属性的文件或目录,自动检查下一个文件或目录,直到检查完毕。

在一种可能的实现方式中,对系统进行文件扫描,获得可疑文件,包括:

在系统中指定的位置进行文件扫描,获得可疑文件。

在本发明实施例中,在对系统文件进行扫描时,可以选择对指定的文件进行扫描,例如可以选择只在C盘进行扫描,或者只扫描C盘和D盘等。如此不用进行全盘的扫描,能够极大程度上提高可疑文件扫描的执行效率。尤其在能够确定可疑文件出现在哪个位置时,通过该指定位置的可疑文件扫描方式不仅能够节省时间,而且能够节省执行扫描任务时所占用的资源。

在一种可能的实现方式中,对系统进行文件扫描,获得可疑文件,包括:对系统的全盘进行文件扫描,获得可疑文件。

在本发明实施例中,考虑了对系统的全盘进行可疑文件的扫描方式,通过对全盘进行扫描,能够保证扫描可疑文件的彻底性,避免遗漏有些可疑文件。尤其是在完全不确定可疑文件存在于哪些位置时,更加适合采用全盘扫描来获得所有的可疑文件。

当然值得注意的是,指定位置的扫描方式和全盘的扫描方式并不一定是独立存在的,也就是说,在实际应用中,可以同时采用指定位置的扫描方式和全盘的扫描方式。比如先在指定位置进行可疑文件的扫描,如果扫描到了可疑文件,那么就可对该可疑文件进行后续的解析和研究分析;如果通过指定位置的可疑文件扫描方式没有扫描到可疑文件,可以进一步采用全盘扫描的方式来进行可疑文件的获取,从而能够使得系统资源得到合理的利用。

在一种可能的实现方式中,对可疑文件进行解析,并根据解析后的数据判断可疑文件是否含有隐藏文件,包括:

将可疑文件进行解析,获得可疑文件的至少一个NTFS属性;

从NTFS属性中查找数据属性;

判断查找出的数据属性的个数是否大于1;

若查找出的数据属性的个数大于1,则可疑文件包含隐藏文件;

若查找出的数据属性的个数不大于1,则可疑文件不包含隐藏文件。

在本发明实施例中,当获得到可疑文件之后,可以对该可疑文件进行解析,也就是获得该可疑文件的各种NTFS属性,然后从这些NTFS属性中查找数据属性,正常情况下只会存在一个数据属性,而通过查找数据属性就可以判断该可疑文件是否隐藏了文件,从而能够准确的确定对恶意代码做出检测。

本发明实施例提供的恶意代码检测的方法可以有效检测当前数据流文件中捆绑的ADSs恶意代码程序。例如,NTFS通常采用主文件表(MFT)对文件的各种数据信息进行组织和管理,每个MFT分配1024字节,即两扇区大小,包括从10H到B0H的多个属性,其中80H的属性名为$DATA,代表文件的数据属性。如果恶意代码程序要寄宿到一个正常的文件中,那么在MFT属性中,是可以看到MFT中存在两个80H属性,此时前一个是正常的文件,而后一个则是恶意代码程序隐藏的文件。

本方案提供的恶意代码检测的方法可以对怀疑的文件或目录进行分析,主要是对MFT进行分析,如果存在多个80H属性,则表明该文件中有寄宿的非主文件流,后续可以将分析的结果导出为日志信息,提供给专业的安全分析人员进行判断是否为恶意代码程序,从而有效的进行定点清除。

在有些可能中,在系统进行检测时,可能病毒或木马等恶意程序正在进行侵入过程,而此时还并没有将恶意程序隐藏在MFT属性中。此时,可以采用判断是否有程序调用了预先定义的应用函数来判断该类恶意程序。具体地在这种情况下,可以在对系统进行文件扫描,获得可疑文件之后,在对可疑文件进行解析,判断可疑文件是否含有隐藏文件之前通过如下步骤来进行确定:

判断是否有程序调用了预先定义的应用函数;

若判断出有程序调用了预先定义的应用函数,则生成告警信息后输出,以及;

查询调用所述应用函数的程序的路径和名称,并根据所述路径和名称将该程序隐藏文件提取出来后进行研判处理,以确定是否为恶意代码。

在本发明实施例中,通过判断是否有程序调用了预先定义的应用函数来进行恶意程序的判断。如果有程序调用了预先定义的应用函数,则可以生成告警信息后输出,并通过查询调用该应用函数的程序的路径和名称将该隐藏的文件提取出来,以确定是否为恶意代码。通过如此方式能够将正在处于侵入过程的恶意程序检测出来,从而能够提高恶意代码检测的及时性。

在本发明实施例中,预先定义的应用函数可以包括Windows API函数等等。例如,在对指定的文件或目录进行分析判断之后,进一步可以判断当前操作系统是否调用可疑的API函数,比如监视对ZwSetEaFile和ZwQueryEaFile API函数的调用情况,以及与EA系统进行二进制文件的交互情况等,如果发现有调用当前的API函数的情况,首先进行告警并输出,输出为系统中有对NTFS EA信息的恶意调用行为,然后给出具体的路径和名称,将隐藏在ADS流文件中的恶意程序提取出来,进行后续研判。

如图2和图3所示,本发明实施例提供了一种恶意代码的检测装置所在的设备和一种恶意代码的检测装置。该装置的实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图2所示,为本发明实施例提供了一种恶意代码的检测装置所在的设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中恶意代码的检测装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图3所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。如图3所示,本发明实施例提供了一种恶意代码的检测装置,该装置应用于新技术文件系统NTFS,包括:扫描模块301、解析判断模块302和执行模块303;

扫描模块301,用于对系统进行文件扫描,获得可疑文件;

解析判断模块302,用于对扫描模块301扫描出的可疑文件进行解析,并根据解析后的数据判断可疑文件是否含有隐藏文件;

执行模块303,用于在解析判断模块302判断出可疑文件含有隐藏文件时,记录与隐藏文件相关的告警信息,并进行可视化输出,以由用户确定是否为恶意代码;以及在解析判断模块302判断出可疑文件不含有隐藏文件时,确定可疑文件中不含有此类隐藏文件所对应的恶意代码,并进行可视化输出。

如图3所示的一种恶意代码的检测装置,在一种可能的实施例中,扫描模块301,用于在系统中指定的位置进行文件扫描,获得可疑文件。

如图3所示的一种恶意代码的检测装置,在另一种可能的实施例中,扫描模块301,用于对系统的全盘进行文件扫描,获得可疑文件。

如图3所示的一种恶意代码的检测装置,在一种可能的实施例中,解析判断模块302,用于执行如下操作:

将可疑文件进行解析,获得可疑文件的至少一个NTFS属性;

从NTFS属性中查找数据属性;

判断查找出的数据属性的个数是否大于1;

若查找出的数据属性的个数大于1,则可疑文件包含隐藏文件;

若查找出的数据属性的个数不大于1,则可疑文件不包含隐藏文件。

基于图3所示的一种恶意代码的检测装置,如图4所示,在一种可能的实施例中,该恶意代码的检测装置进一步包括:应用函数调用判断模块304;

应用函数调用判断模块304,用于执行如下操作:

判断是否有程序调用了预先定义的应用函数;

若判断出有程序调用了预先定义的应用函数,则生成告警信息后输出,以及;

查询调用所述应用函数的程序的路径和名称,并根据所述路径和名称将该程序隐藏的文件提取出来后进行研判处理,以确定是否为恶意代码。

本发明实施例还提供了一种恶意代码的检测装置,包括:至少一个存储器和至少一个处理器;

至少一个存储器,用于存储机器可读程序;

至少一个处理器,用于调用机器可读程序,执行本发明任一实施例中的恶意代码的检测方法。

本发明实施例还提供了一种计算机可读介质,该计算机可读介质存储有计算机指令,计算机指令在被处理器执行时,使处理器执行本发明任一实施例中的恶意代码的检测方法。具体地,可以提供配有存储介质的方法或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该方法或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。

在这种情况下,从计算机可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的计算机可读介质构成了本发明的一部分。

用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。

此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作方法等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。

需要说明的是,上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

综上,本发明各个实施例提供的一种恶意代码的检测方法、装置和计算机可读介质,至少具有如下有益效果:

1、在本发明实施例中,该恶意代码的检测方案适用于新技术文件系统NTFS中,在进行恶意代码检测时,首先在系统中进行文件扫描,扫描出可疑的文件,然后对该可疑的文件进行解析,并根据解析后的数据判断该可疑文件是否包含隐藏文件,如果包含隐藏文件,则记录与该隐藏文件相关的告警信息,进一步通过可视化输出时用户确定该可疑文件是否为恶意代码,如果不包含隐藏文件,则可以直接可视化输出不含有此类隐藏文件所对应的恶意代码。由此可见,本方案通过对可疑文件进行解析,能够通过解析后的数据来确定该可疑文件是否包含隐藏文件,从而也就能够有效地检测出系统中是否有恶意代码。

2、本方案提供的恶意代码的检测方案能够很好的弥补了当前ADSs检测的缺乏,本方案在进行恶意代码的检测时采用轻量化专查工具,不会占用过多系统内存,也不会对正常使用造成影响。

3、在本发明实施例中,在对系统文件进行扫描时,可以选择对指定的文件进行扫描,例如可以选择只在C盘进行扫描,或者只扫描C盘和D盘等。如此不用进行全盘的扫描,能够极大程度上提高可疑文件扫描的执行效率。尤其在能够确定可疑文件出现在哪个位置时,通过该指定位置的可疑文件扫描方式不仅能够节省时间,而且能够节省执行扫描任务时所占用的资源。还可以考虑对系统的全盘进行可疑文件的扫描方式,通过对全盘进行扫描,能够保证扫描可疑文件的彻底性,避免遗漏有些可疑文件。尤其是在完全不确定可疑文件存在于哪些位置时,更加适合采用全盘扫描来获得所有的可疑文件。

4、在本发明实施例中,在实际应用时,可以同时采用指定位置的扫描方式和全盘的扫描方式。比如先在指定位置进行可疑文件的扫描,如果扫描到了可疑文件,那么就可对该可疑文件进行后续的解析和研究分析;如果通过指定位置的可疑文件扫描方式没有扫描到可疑文件,可以进一步采用全盘扫描的方式来进行可疑文件的获取,从而能够使得系统资源得到合理的利用。

5、在本发明实施例中,当获得到可疑文件之后,可以对该可疑文件进行解析,也就是获得该可疑文件的各种NTFS属性,然后从这些NTFS属性中查找数据属性,正常情况下只会存在一个数据属性,而通过查找数据属性就可以判断该可疑文件是否隐藏了文件,从而能够准确的确定对恶意代码做出检测。

6、本方案提供的恶意代码检测的方法可以对怀疑的文件或目录进行分析,主要是对MFT进行分析,如果存在多个80H属性,则表明该文件中有寄宿的非主文件流,后续可以将分析的结果导出为日志信息,提供给专业的安全分析人员进行判断是否为恶意代码程序,从而有效的进行定点清除。

7、在本发明实施例中,通过判断是否有程序调用了预先定义的应用函数来进行恶意程序的判断。如果有程序调用了预先定义的应用函数,则可以生成告警信息后输出,并通过查询调用该应用函数的程序的路径和名称将该隐藏的文件提取出来,以确定是否为恶意代码。通过如此方式能够将正在处于侵入过程的恶意程序检测出来,从而能够提高恶意代码检测的及时性。

相关技术
  • 一种恶意代码检测方法、装置、计算机和可读存储介质
  • 恶意代码检测方法、装置、设备及计算机可读存储介质
技术分类

06120112722239