CN115544503A - 一种无文件攻击检测方法、装置、设备及存储介质 - Google Patents
一种无文件攻击检测方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115544503A CN115544503A CN202211157541.6A CN202211157541A CN115544503A CN 115544503 A CN115544503 A CN 115544503A CN 202211157541 A CN202211157541 A CN 202211157541A CN 115544503 A CN115544503 A CN 115544503A
- Authority
- CN
- China
- Prior art keywords
- script
- file
- executed
- module
- self
- 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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及攻击检测技术领域,公开了一种无文件攻击检测方法、装置、设备及存储介质,应用于接口模块,包括:通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。本申请能够尽可能完全地收集***中运行的各种脚本文件并提供给恶意代码判定模块进行判定,从而在脚本类型无文件攻击达到目的之前对恶意行为进行有效检出,检出效率高且全面性强。
Description
技术领域
本发明涉及攻击检测技术领域,特别涉及一种无文件攻击检测方法、装置、设备及存储介质。
背景技术
无文件攻击(Fileless Attack)是一种攻击策略,为了避免将恶意文件放在硬盘上,以逃避传统安全检测。在信息安全领域中,“无文件攻击”属于一种影响力非常大的安全威胁。攻击者在利用这种技术实施攻击时,不会在目标主机的磁盘上写入恶意文件,而是将恶意命令隐藏在内存中执行,因此而得名“无文件攻击”。无文件攻击的实现得益于某些应用程序和操作***所特有的性质,它利用了反恶意软件工具在检测和防御方面的缺陷。虽然在现代网络攻击活动中,无文件攻击只是其中的一种攻击技术,但在很多高级持续性威胁APT(Advanced Persistent Threat)攻击行动中,恶意软件一般都会引入一些“无文件攻击”技术来尝试绕过安全产品的检测,这也给网络安全厂商带来了不小的挑战。
因此,上述技术问题亟待本领域技术人员解决。
发明内容
有鉴于此,本发明的目的在于提供一种无文件攻击检测方法、装置、设备及存储介质,能够在脚本类型无文件攻击达到目的之前对恶意行为进行有效检出。其具体方案如下:
本申请的第一方面提供了一种无文件攻击检测方法,应用于接口模块,包括:
通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;
将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。
可选的,所述通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件,包括:
通过所述反恶意软件扫描接口从多种类型的所述脚本解释器中读取多种语言类型的所述待执行脚本文件;
相应的,所述无文件攻击检测方法,还包括:
当多种语言类型的所述待执行脚本在所述反恶意软件扫描接口中传输时,所述反恶意软件扫描接口针对所述待执行脚本的语言类型为每种语言类型的所述待执行脚本文件提供相应的检测机制,以利用所述监测机制对相应语言类型的所述待执行脚本进行第一检测,并将所述第一检测后的所述待执行脚本传输至所述接口模块。
可选的,所述接口模块将读取到的所述待执行脚本发送至恶意代码判定模块,包括:
当读取到多种语言类型的所述待执行脚本文件时,所述接口模块将各语言类型的所述待执行脚本文件发送至所述恶意代码判定模块;
相应的,所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为,包括:
所述恶意代码判定模块中的攻击特征提取组件对接收到的各所述待执行脚本文件按照语言类型进行分类处理,并通过调用不同类型的解析子例程对相应类型的所述待执行脚本文件进行特征提取,得到对应的特征文件;
所述恶意代码判定模块中的恶意特征判定组件判定各所述特征文件是否存在恶意行为。
可选的,所述攻击特征提取组件通过调用不同类型的解析子例程对相应类型的所述待执行脚本文件进行特征提取之前,还包括:
所述攻击特征提取组件中集成的脚本混淆检测引擎利用机器学习模型对各语言类型的所述待执行脚本文件进行第二检测,得到不同混淆程度的所述待执行脚本文件;
所述攻击特征提取组件中集成的脚本解混淆引擎按照混淆策略对不同混淆程度的所述待执行脚本文件进行解混淆处理,以便对解混淆处理后的所述待执行脚本文件进行特征提取。
可选的,所述无文件攻击检测方法,还包括:
对所述接口模块进行编译并将编译后的所述接口模块以动态链接库的形式存储在所述恶意代码判定模块指定的目录下;
利用组件对象模型组件注册程序将编译后的所述接口模块注册为组件对象模型控件,在执行无文件攻击检测时,将所述接口模块对应的组件对象模型控件注入脚本解释器进程中运行。
可选的,所述无文件攻击检测方法,还包括:
反恶意软件自保护模块利用至少一个层级的自保护组件对无文件攻击检测的整个运行流程进行监控保护;其中,所述自保护组件的层级至少包括文件级、策略级和内存级之一。
可选的,当所述自保护组件的层级包括文件级,所述反恶意软件自保护模块利用自保护组件对无文件攻击检测的整个运行流程进行监控保护包括:
所述反恶意软件自保护模块利用文件级自保护组件对与所述反恶意软件扫描接口相关的动态链接库文件进行监控,以拦截针对所述动态链接库文件执行的预设操作;其中,所述预设操作至少包括替换操作、修改操作、删除操作和劫持操作。
可选的,当所述自保护组件的层级包括策略级,所述反恶意软件自保护模块利用自保护组件对无文件攻击检测的整个运行流程进行监控保护包括:
所述反恶意软件自保护模块利用策略级自保护组件对与所述反恶意软件扫描接口相关的注册表中的配置项参数进行监控,以禁止对所述配置项参数执行修改操作。
可选的,当所述自保护组件的层级包括内存级,所述反恶意软件自保护模块利用自保护组件对无文件攻击检测的整个运行流程进行监控保护,包括:
所述反恶意软件自保护模块利用内存级自保护组件基于脚本解释器进程内的内存扫描机制对加载至所述脚本解释器进程内的所述反恶意软件扫描接口内的关键代码段进行监控,如果所述关键代码段的内容发生了变化,则判定所述关键代码段被进行了恶意修改,并结束所述脚本解释器进程。
可选的,所述无文件攻击检测方法,还包括:
如果所述关键代码段的内存保护属性被修改为可读可写可执行权限和/或所述关键代码段中的代码字节被修改,则判定所述关键代码段被进行了恶意修改。
本申请的第二方面提供了一种无文件攻击检测装置,应用于接口模块,包括:
读取模块,用于通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;
发送判定模块,用于将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。
本申请的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述无文件攻击检测方法。
本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述无文件攻击检测方法。
本申请中,接口模块先通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;然后接口模块将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。可见,本申请通过接口模块与反恶意软件扫描接口的交互能够尽可能完全地收集***中运行的各种脚本文件并提供给恶意代码判定模块进行判定,从而在脚本类型无文件攻击达到目的之前对恶意行为进行有效检出,检出效率高且全面性强。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种无文件攻击检测方法流程图;
图2为本申请提供的一种Windows设备场景下的模块部署示意图;
图3为本申请提供的一种Windows***中执行脚本类型的代码时AMSI接口的调用流程图;
图4为本申请提供的一种无文件攻击检测方案所适用的应用场景图;
图5为本申请提供的一种具体的无文件攻击检测方法流程图;
图6本申请提供的一种具体的无文件攻击检测方法流程图;
图7为本申请提供的一种无文件攻击检测装置结构示意图;
图8为本申请提供的一种无文件攻击检测电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,一般通过静态检测技术、传统反病毒引擎、基于机器学习的反恶意软件方法、白名单方法或沙箱检测来应对无文件攻击,但均都存在部分缺点导致难以检测一些脚本类型的无文件恶意软件入侵。例如,静态检测技术中由于一些脚本类型的无文件攻击的Payload不落地,使得基于文件的静态扫描方法几乎无法检测;由于一些脚本类型的无文件攻击中没有能够直接分析的文件,故基于机器学习的反恶意软件方法无法提供帮助;沙箱检测中由于脚本类型的无文件攻击不使用PE文件,因此沙箱没有什么可***的。针对上述技术缺陷,本申请提供一种无文件攻击检测方案,能够尽可能完全地收集***中运行的各种脚本文件并提供给恶意代码判定模块进行判定,从而在脚本类型无文件攻击达到目的之前对恶意行为进行有效检出,检出效率高且全面性强。
图1为本申请实施例提供的一种无文件攻击检测方法流程图。参见图1所示,该无文件攻击检测方法应用于接口模块,包括:
S11:通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同。
本实施例中,接口模块主要是通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件。接口模块具体可以为AmsiProvider模块,反恶意软件扫描接口表示为AMSI接口,脚本解释器也即脚本解释器程序。AmsiProvider模块能够从脚本类型的代码执行维度收集客户机主要的脚本代码行为,负责从AMSI接口读取待执行的代码片段,目的是尽可能完全地收集***上运行的脚本类型代码,以提供给后续恶意代码判定模块进行检测。图2所示为在Windows设备场景下的模块部署,WIndows脚本解释器程序在解析待执行的脚本类型代码时,这些代码会实时地传递到AMSI接口,AmsiProvider模块负责从AMSI接口读取这些代码。对应的,在Windows***中执行脚本类型的代码时,AMSI接口的调用流程图3所示。
本实施例中,AmsiProvider模块是在脚本解释程序进程内运行的COM接口模块,可以理解,COM(Component Object Model,COM)也即组件对象模型,是基于Windows平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。为了实现该模块,首先对接口模块进行编译并将编译后的接口模块以动态链接库的形式存储在恶意代码判定模块指定的目录下。然后利用组件对象模型组件注册程序将编译后的接口模块注册为组件对象模型控件,在执行无文件攻击检测时,将接口模块对应的组件对象模型控件注入脚本解释器进程中运行。
具体的,AmsiProvider模块实现了IAntimalwareProvider接口,该接口以IAmsiStream的形式接收数据流,也即接收待执行脚本文件。AmsiProvider模块编译后以DLL的形式置于***的如反病毒引擎指定目录下,使用管理员权限的COM组件注册程序(如RegSvr32.exe)即可将AmsiProvider模块注册为COM控件。与标识COM对象的CLSID类似,AmsiProvider模块COM接口也使用一个GUID来进行标识,该标识也被称为IID(InterfaceIdentifier,接口标识符)。由于涉及到进程内加载,AmsiProvider模块需要分别安装32位和64位版本才能同时支持32位和64位应用程序。64位和32位版本对应的注册表位置分别为HKLM\SOFTWARE\Microsoft\AMSI\Providers\{GUID}、HKLM\SOFTWARE\Wow6432Node\Microsoft\AMSI\Providers\{GUID},注册后对应的COM类位置为HKLM\SOFTWARE\Classes\CLSID\{GUID}。
S12:将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。
本实施例中,AmsiProvider模块将读取到的待执行脚本发送至恶意代码判定模块,恶意代码接收到待执行脚本之后,会判定接收到的待执行脚本是否存在恶意行为。恶意代码判定模块会结合代码上下文片段进行扫描,最终的扫描结果决定了待执行的代码片段是允许执行还是该拦截并拒绝执行。例如,如果存在恶意行为则拒绝执行,如果不存在恶意行为则允许执行。
图4为与本实施例方案相适应的一种应用场景图,无文件攻击检测可以在云端服务器执行,被检测对象为运行有脚本解释器程序的任意终端。即接口模块在云端服务器运行,通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件。在此基础上将读取到的所述待执行脚本发送至恶意代码判定模块,恶意代码判定模块在云端服务器运行,用于在云端服务器对接收到的待执行脚本的恶意行为进行判定。在这一场景中可对多个终端同时进行检测,提高检测效率。当然,上述云端服务器+终端是最优的应用场景,除此之外,也可以将无文件攻击检测也放在终端运行,但相较于云端,会增加终端压力。
可见,本申请实施例中接口模块先通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的脚本解释器中的脚本文件的语言类型相同;然后接口模块将读取到的待执行脚本发送至恶意代码判定模块,以便恶意代码判定模块判定接收到的待执行脚本是否存在恶意行为。本申请实施例通过接口模块与反恶意软件扫描接口的交互能够尽可能完全地收集***中运行的各种脚本文件并提供给恶意代码判定模块进行判定,从而在脚本类型无文件攻击达到目的之前对恶意行为进行有效检出,检出效率高且全面性强。
图4为本申请实施例提供的一种具体的无文件攻击检测方法流程图。参见图4所示,该无文件攻击检测方法应用于接口模块,包括:
S21:接口模块通过反恶意软件扫描接口从多种类型的脚本解释器中读取多种语言类型的待执行脚本文件。
本实施例中,对于同时存在多种语言类型的脚本文件的情况,为了避免遗漏,需要接口模块通过反恶意软件扫描接口从多种类型的脚本解释器中读取多种语言类型的待执行脚本文件。相同类型的脚本解释器中的脚本文件的语言类型相同,例如,PowerShell、JScript、VBScript、Office VBA这四种脚本语言对应四个不同的脚本解释器程序。AmsiProvider模块能将***中以各种方式调用的以上四种脚本类型代码进行采集,以用于后续检测。
S22:当多种语言类型的所述待执行脚本在所述反恶意软件扫描接口中传输时,所述反恶意软件扫描接口针对所述待执行脚本的语言类型为每种语言类型的所述待执行脚本文件提供相应的检测机制,以利用所述检测机制对相应语言类型的所述待执行脚本进行第一检测,并将所述第一检测后的所述待执行脚本传输至所述接口模块。
本实施例中,当多种语言类型的待执行脚本在反恶意软件扫描接口中传输时,反恶意软件扫描接口针对待执行脚本的语言类型为每种语言类型的待执行脚本文件提供相应的检测机制。也即为了提高无文本攻击的检出能力,首先在AMSI接口位置采取首次攻击检测,由于不同的脚本语言的处理手段不同,AMSI接口针对不同的脚本语言使用了不同的检测机制。利用检测机制对相应语言类型的待执行脚本进行第一检测,并将第一检测后的待执行脚本传输至接口模块。
具体的,针对VBScript、JScript、VBA三种脚本语言使用了AMSI Trigger检测机制,也就是基于黑词(Trigger)的API调用检测。简单来说就是脚本代码在调用被AMSI接口划定为Trigger的API时,该API调用时传入的参数以及执行结果等会被AMSI接口记录到并传递给AmsiProvider模块。图5所示为JScript脚本在运行时生成并由AMSI接口传递到AmsiProvider模块的动态日志实例。AMSI接口针对PowerShell脚本语言调用则采用了更为详细的日志记录方式,从PowerShell V2开始,微软逐步为PowerShell引擎添加了管道执行日志、模块日志、脚本块(ScriptBlock)日志、脚本转换日志等机制。其中,PowerShell V5版本新增的脚本块日志提供了去混淆PowerShell代码的能力,能够将去混淆处理过后的代码传递给AmsiProvider模块,能够有效抵御基于代码混淆的绕过手段。
S23:所述接口模块将各语言类型的所述待执行脚本文件发送至恶意代码判定模块。
S24:所述恶意代码判定模块中的攻击特征提取组件对接收到的各所述待执行脚本文件按照语言类型进行分类处理,并通过调用不同类型的解析子例程对相应类型的所述待执行脚本文件进行特征提取,得到对应的特征文件。
本实施例中,接口模块将各语言类型的待执行脚本文件发送至恶意代码判定模块,恶意代码判定模块能够提供尽可能强的无文件攻击检出能力,该模块主要由攻击特征提取组件和恶意特征判定组件构成。其中,攻击特征提取组件对接收到的各待执行脚本文件按照语言类型进行分类处理,并通过调用不同类型的解析子例程对相应类型的待执行脚本文件进行特征提取,得到对应的特征文件。恶意特征判定组件判定各特征文件是否存在恶意行为。
本实施例中,对于特征提取的过程,述攻击特征提取组件首先按照脚本语言将待执行的代码片段进行分类处理。例如,将待执行脚本文件中的PowerShell脚本语言分为PowerShell类、将JScriptl脚本语言分为JScriptl类、将VBScriptl脚本语言分为VBScriptl类、将Office VBAl脚本语言分为Office VBAl类等。进一步的,攻击特征提取组件集成了轻量化的脚本代码混淆检测引擎与脚本代码解混淆引擎。脚本混淆检测引擎利用机器学习模型对各语言类型的待执行脚本文件进行第二检测,得到不同混淆程度的待执行脚本文件。代码混淆检测引擎主要使用了真实的混淆脚本代码样本库,加上常见混淆构造工具生成的混淆脚本代码进行训练得到的机器学习模型,对待执行代码的混淆程度进行切片量化并分成混淆程度“高”、“低”、“几乎无”三类。
在此基础上,脚本解混淆引擎执行必要的解混淆步骤,也即按照混淆策略对不同混淆程度的待执行脚本文件进行解混淆处理,以便对解混淆处理后的待执行脚本文件进行特征提取。由于AMSI会递归地将高混淆代码动态执行解混淆并生成低混淆度的代码,为了节省解混淆时***消耗的性能资源,脚本代码解混淆引擎主要对混淆程度“低”、“几乎无”两类的切片代码,根据不同的脚本语言分别进行如下处理:对待执行代码上下文片段进行组合扫描,将一些简单的混淆手段通过模拟执行进一步处理,例如字符串合并、编码转换、数值运算、逻辑运算等混淆手法,目的是尽可能地还原恶意代码本身核心的恶意特征,避免恶意代码通过部分混淆手段绕过基于AMSI签名的检测机制。
本实施例中,在经过脚本代码混淆检测引擎与脚本代码解混淆引擎的二次检测及解混淆处理后,再行通过调用不同类型的解析子例程对相应类型的待执行脚本文件进行特征提取,得到对应的特征文件。即调用对应脚本语言的专用解析子例程,提取出代码片段中的可疑API调用、COM对象调用、第三方模块加载、网络连接请求等可疑的代码特征,格式化处理后保存成临时特征文件并传递给恶意特征判定组件进行后续判定。
S25:所述恶意代码判定模块中的恶意特征判定组件判定各所述特征文件是否存在恶意行为。
本实施例中,恶意特征判定组件接收到上述步骤处理后的特征文件之后,即调用无文件攻击特征匹配子例程,扫描提取出的临时特征文件并返回是否匹配到恶意行为。无文件攻击匹配规则被编写为独立的子例程,每个子例程能够针对性匹配一类无文件攻击手法,并预分配了一定的分数权重。无文件攻击匹配规则基于脚本代码解混淆引擎的输入,对格式化处理后的可疑API调用、COM对象调用、第三方模块加载、网络连接请求等可疑的代码特征进行匹配,也能够在匹配规则中建立上下文实现不同维度之间的多因素匹配。恶意特征判定组件的运行流程是,首先接收攻击特征提取组件提取出的多个临时特征文件,接着采用一组无文件攻击匹配规则分别对攻击特征文件中可能存在的恶意项进行扫描并累计恶意性分值,若分数达到了一定阈值则可以判断为无文件攻击。该组件最终还会生成一份分析摘要供***管理员参考,分析摘要中标注出了匹配到的无文件攻击特征规则及匹配到的代码特征内容,通过最后分数累加计算出的分值划分成高危、中危和低位三个日志等级。
上述运行流程针对有非常明显恶意特征的脚本类型无文件攻击具有较高的检出率,同时支持自动化处理高危日志告警,即默认拦截并拒绝执行,对于分值处于中危、低位分段的日志告警行为则建议安全专家人工介入分析并执行缓解措施。
可见,本申请实施例当多种语言类型的待执行脚本在反恶意软件扫描接口中传输时,反恶意软件扫描接口针对待执行脚本的语言类型为每种语言类型的待执行脚本文件提供相应的检测机制,以利用检测机制对相应语言类型的待执行脚本进行第一检测。恶意代码判定模块由攻击特征提取组件和恶意特征判定组件,共同匹配恶意行为。解决静态检测技术难以抵抗代码混淆干扰、难以检测脚本类型的无文件攻击等主流无文件攻击手法,以及传统动态检测技术的局限性导致的难以有效检出无文件攻击的问题,提升***的无文件攻击防护安全性。
图6为本申请实施例提供的一种具体的无文件攻击检测方法流程图。参见图6所示,该无文件攻击检测方法应用于接口模块,包括:
S31:反恶意软件自保护模块利用至少一个层级的自保护组件对无文件攻击检测的整个运行流程进行监控保护;其中,所述自保护组件的层级至少包括文件级、策略级和内存级之一。
本实施例中,还包括一个反恶意软件自保护模块,该模块利用至少一个层级的自保护组件对无文件攻击检测的整个运行流程进行监控保护。自从AMSI接口被微软引入Windows***以来,AMSI绕过技术的相关研究也常被攻击者所利用,可以通过采取各种策略来逃避AMSI,代码编码和混淆、内存补丁、AMSI API Hook,甚至可以恢复一些老的的代码执行策略等,从而实现在AMSI接口检查攻击载荷之前对AMSI进行绕过,执行恶意代码。正因为此,能否绕过AMSI已经成为脚本类型无文件攻击能否成功的决定性因素。
本实施例中,反恶意软件自保护模块负责提供驱动级保护功能,主要由文件级、策略级、内存级自保护组件构成。***运行过程中采用了反恶意软件自保护模块对整个***的调用流程施以防绕过和防篡改保护,避免了AMSI接口调用过程中出现的AMSI API Hook、Patching等绕过反病毒引擎安全防护的行为。
S32:当所述自保护组件的层级包括文件级,所述反恶意软件自保护模块利用文件级自保护组件对与反恶意软件扫描接口相关的动态链接库文件进行监控,以拦截针对所述动态链接库文件执行的预设操作;其中,所述预设操作至少包括替换操作、修改操作、删除操作和劫持操作。
本实施例中,当自保护组件的层级包括文件级,反恶意软件自保护模块利用文件级自保护组件对与反恶意软件扫描接口相关的动态链接库文件进行监控,以拦截针对动态链接库文件执行的预设操作;其中,预设操作至少包括替换操作、修改操作、删除操作和劫持操作。文件级自保护组件将AMSI相关的DLL***模块采取实时监控方案,包括AMSI.dll、VBE7.dll、JScript.dll、VBScript.dll、System.Management.Automation.dll等,以及本***内的其他功能模块,任何未知的应用程序试图对这类功能模块的替换、修改、删除、劫持等操作都将被文件级自保护组件记录并拦截。
S33:当所述自保护组件的层级包括策略级,所述反恶意软件自保护模块利用策略级自保护组件对与所述反恶意软件扫描接口相关的注册表中的配置项参数进行监控,以禁止对所述配置项参数执行修改操作。
本实施例中,当自保护组件的层级包括策略级,反恶意软件自保护模块利用策略级自保护组件对与反恶意软件扫描接口相关的注册表中的配置项参数进行监控,以禁止对配置项参数执行修改操作。策略级自保护组件将AMSI相关的注册表、组策略配置项进行监控,默认设置为禁止任何程序对此类注册表配置项进行修改。由于与AMSI相关的应用程序、组策略配置项会保存至注册表中指定位置,用于控制AMSI是否默认开启对指定应用程序的实时监控,恶意程序会试图通过修改这些注册表配置项来关闭AMSI监控,继而执行任意恶意代码。对于PowerShell脚本语言,由于低版本的PowerShell并不具备高版本的各种日志记录功能,如PowerShell V2仅具有功能非常有限的管道执行日志记录机制,该组件还将低版本的PowerShell引擎进行了禁用,防止恶意代码有意将PowerShell执行环境回退到低版本以下并执行,以绕过PowerShell引擎高版本的各种日志记录机制。
S34:当所述自保护组件的层级包括内存级,所述反恶意软件自保护模块利用内存级自保护组件基于脚本解释器进程内的内存扫描机制对加载至所述脚本解释器进程内的所述反恶意软件扫描接口内的关键代码段进行监控,如果所述关键代码段的内容发生了变化,则判定所述关键代码段被进行了恶意修改,并结束所述脚本解释器进程。
本实施例中,当自保护组件的层级包括内存级,反恶意软件自保护模块利用内存级自保护组件基于脚本解释器进程内的内存扫描机制对加载至脚本解释器进程内的反恶意软件扫描接口内的关键代码段进行监控,如果关键代码段的内容发生了变化,则判定关键代码段被进行了恶意修改,并结束脚本解释器进程。内存级自保护组件基于进程内的内存扫描机制,对加载进脚本解释器中的AMSI模块的关键代码段进行实时扫描。如果关键代码段的内存保护属性被修改为可读可写可执行权限和/或关键代码段中的代码字节被修改,则判定关键代码段被进行了恶意修改
可以理解,由于关键代码段一般处于不可写代码段,若恶意代码试图修改代码段的内存保护属性为可读可写可执行,并尝试替换掉一些代码字节内容,则认为AMSI的关键扫描函数调用被恶意程序试图Patch以绕过AMSI扫描机制。上述修改使得关键代码段的内容发生了变化,其判断依据可以为代码段的哈希值是否发生变化。因此,可以以一定时间间隔计算关键代码段的CRC32哈希值,若任意一次计算出的CRC32哈希值出现不同,则可认定为关键代码段被恶意程序进行了修改,则将立即结束脚本解释器进程,防止出现后续的恶意利用行为。
可见,本申请实施例反恶意软件自保护模块利用至少一个层级的自保护组件对无文件攻击检测的整个运行流程进行监控保护;其中,自保护组件的层级至少包括文件级、策略级和内存级。也即反恶意软件自保护模块在所有运行流程中提供了防篡改、代码完整性保护等功能,在防止攻击者绕过AMSI机制,提升本***整体安全性具有重要作用。
参见图7所示,本申请实施例还相应公开了一种无文件攻击检测装置,应用于接口模块,包括:
读取模块11,用于通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;
发送判定模块12,用于将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。
可见,本申请实施例中接口模块先通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;然后接口模块将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。本申请实施例通过接口模块与反恶意软件扫描接口的交互能够尽可能完全地收集***中运行的各种脚本文件并提供给恶意代码判定模块进行判定,从而在脚本类型无文件攻击达到目的之前对恶意行为进行有效检出,检出效率高且全面性强。
在一些具体实施例中,所述读取模块11,具体用于通过所述反恶意软件扫描接口从多种类型的所述脚本解释器中读取多种语言类型的所述待执行脚本文件。
在一些具体实施例中,当多种语言类型的所述待执行脚本在所述反恶意软件扫描接口中传输时,所述无文件攻击检测装置还包括:
第一检测模块,用于所述反恶意软件扫描接口针对所述待执行脚本的语言类型为每种语言类型的所述待执行脚本文件提供相应的检测机制,以利用所述监测机制对相应语言类型的所述待执行脚本进行第一检测,并将所述第一检测后的所述待执行脚本传输至所述接口模块。
在一些具体实施例中,当读取到多种语言类型的所述待执行脚本文件时,所述发送判定模块12,具体包括:
发送单元,用于所述接口模块将各语言类型的所述待执行脚本文件发送至所述恶意代码判定模块;
分类单元,用于所述恶意代码判定模块中的攻击特征提取组件对接收到的各所述待执行脚本文件按照语言类型进行分类处理;
提取单元,用于所述恶意代码判定模块通过调用不同类型的解析子例程对相应类型的所述待执行脚本文件进行特征提取,得到对应的特征文件;
判定单元,用于所述恶意代码判定模块中的恶意特征判定组件判定各所述特征文件是否存在恶意行为。
在一些具体实施例中,所述无文件攻击检测装置还包括:
第二检测模块,用于所述攻击特征提取组件中集成的脚本混淆检测引擎利用机器学习模型对各语言类型的所述待执行脚本文件进行第二检测,得到不同混淆程度的所述待执行脚本文件;
解混淆模块,用于所述攻击特征提取组件中集成的脚本解混淆引擎按照混淆策略对不同混淆程度的所述待执行脚本文件进行解混淆处理,以便对解混淆处理后的所述待执行脚本文件进行特征提取;
编译注册模块,用于对所述接口模块进行编译并将编译后的所述接口模块以动态链接库的形式存储在所述恶意代码判定模块指定的目录下,以及利用组件对象模型组件注册程序将编译后的所述接口模块注册为组件对象模型控件,在执行无文件攻击检测时,将所述接口模块对应的组件对象模型控件注入脚本解释器进程中运行;
自保护模块,用于反恶意软件自保护模块利用至少一个层级的自保护组件对无文件攻击检测的整个运行流程进行监控保护;其中,所述自保护组件的层级至少包括文件级、策略级和内存级之一。
在一些具体实施例中,当所述自保护组件的层级包括文件级,所述自保护模块具体用于所述反恶意软件自保护模块利用文件级自保护组件对与所述反恶意软件扫描接口相关的动态链接库文件进行监控,以拦截针对所述动态链接库文件执行的预设操作;其中,所述预设操作至少包括替换操作、修改操作、删除操作和劫持操作。
在一些具体实施例中,当所述自保护组件的层级包括策略级,所述自保护模块具体用于所述反恶意软件自保护模块利用策略级自保护组件对与所述反恶意软件扫描接口相关的注册表中的配置项参数进行监控,以禁止对所述配置项参数执行修改操作。
在一些具体实施例中,当所述自保护组件的层级包括文件级,所述自保护模块具体用于所述反恶意软件自保护模块利用内存级自保护组件基于脚本解释器进程内的内存扫描机制对加载至所述脚本解释器进程内的所述反恶意软件扫描接口内的关键代码段进行监控,如果所述关键代码段的内容发生了变化,则判定所述关键代码段被进行了恶意修改,并结束所述脚本解释器进程。
进一步的,本申请实施例还提供了一种电子设备。图8是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图8为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的无文件攻击检测方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作***221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作***221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的无文件攻击检测方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的脚本文件等。
进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的无文件攻击检测方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的无文件攻击检测方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种无文件攻击检测方法,其特征在于,应用于接口模块,包括:
通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;
将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。
2.根据权利要求1所述的无文件攻击检测方法,其特征在于,所述通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件,包括:
通过所述反恶意软件扫描接口从多种类型的所述脚本解释器中读取多种语言类型的所述待执行脚本文件;
相应的,所述无文件攻击检测方法,还包括:
当多种语言类型的所述待执行脚本在所述反恶意软件扫描接口中传输时,所述反恶意软件扫描接口针对所述待执行脚本的语言类型为每种语言类型的所述待执行脚本文件提供相应的检测机制,以利用所述检测机制对相应语言类型的所述待执行脚本进行第一检测,并将所述第一检测后的所述待执行脚本传输至所述接口模块。
3.根据权利要求1所述的无文件攻击检测方法,其特征在于,所述接口模块将读取到的所述待执行脚本发送至恶意代码判定模块,包括:
当读取到多种语言类型的所述待执行脚本文件时,所述接口模块将各语言类型的所述待执行脚本文件发送至所述恶意代码判定模块;
相应的,所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为,包括:
所述恶意代码判定模块中的攻击特征提取组件对接收到的各所述待执行脚本文件按照语言类型进行分类处理,并通过调用不同类型的解析子例程对相应类型的所述待执行脚本文件进行特征提取,得到对应的特征文件;
所述恶意代码判定模块中的恶意特征判定组件判定各所述特征文件是否存在恶意行为。
4.根据权利要求3所述的无文件攻击检测方法,其特征在于,所述攻击特征提取组件通过调用不同类型的解析子例程对相应类型的所述待执行脚本文件进行特征提取之前,还包括:
所述攻击特征提取组件中集成的脚本混淆检测引擎利用机器学习模型对各语言类型的所述待执行脚本文件进行第二检测,得到不同混淆程度的所述待执行脚本文件;
所述攻击特征提取组件中集成的脚本解混淆引擎按照混淆策略对不同混淆程度的所述待执行脚本文件进行解混淆处理,以便对解混淆处理后的所述待执行脚本文件进行特征提取。
5.根据权利要求1所述的无文件攻击检测方法,其特征在于,还包括:
对所述接口模块进行编译并将编译后的所述接口模块以动态链接库的形式存储在所述恶意代码判定模块指定的目录下;
利用组件对象模型组件注册程序将编译后的所述接口模块注册为组件对象模型控件,在执行无文件攻击检测时,将所述接口模块对应的组件对象模型控件注入脚本解释器进程中运行。
6.根据权利要求1至5任一项所述的无文件攻击检测方法,其特征在于,还包括:
反恶意软件自保护模块利用至少一个层级的自保护组件对无文件攻击检测的整个运行流程进行监控保护;其中,所述自保护组件的层级至少包括文件级、策略级和内存级之一。
7.根据权利要求6所述的无文件攻击检测方法,其特征在于,当所述自保护组件的层级包括文件级,所述反恶意软件自保护模块利用自保护组件对无文件攻击检测的整个运行流程进行监控保护,包括:
所述反恶意软件自保护模块利用文件级自保护组件对与所述反恶意软件扫描接口相关的动态链接库文件进行监控,以拦截针对所述动态链接库文件执行的预设操作;其中,所述预设操作至少包括替换操作、修改操作、删除操作和劫持操作。
8.根据权利要求6所述的无文件攻击检测方法,其特征在于,当所述自保护组件的层级包括策略级,所述反恶意软件自保护模块利用自保护组件对无文件攻击检测的整个运行流程进行监控保护,包括:
所述反恶意软件自保护模块利用策略级自保护组件对与所述反恶意软件扫描接口相关的注册表中的配置项参数进行监控,以禁止对所述配置项参数执行修改操作。
9.根据权利要求6所述的无文件攻击检测方法,其特征在于,当所述自保护组件的层级包括内存级,所述反恶意软件自保护模块利用自保护组件对无文件攻击检测的整个运行流程进行监控保护,包括:
所述反恶意软件自保护模块利用内存级自保护组件基于脚本解释器进程内的内存扫描机制对加载至所述脚本解释器进程内的所述反恶意软件扫描接口内的关键代码段进行监控,如果所述关键代码段的内容发生了变化,则判定所述关键代码段被进行了恶意修改,并结束所述脚本解释器进程。
10.一种无文件攻击检测装置,其特征在于,应用于接口模块,包括:
读取模块,用于通过反恶意软件扫描接口从至少一种类型的脚本解释器中读取待执行脚本文件;其中,相同类型的所述脚本解释器中的脚本文件的语言类型相同;
发送判定模块,用于将读取到的所述待执行脚本发送至恶意代码判定模块,以便所述恶意代码判定模块判定接收到的所述待执行脚本是否存在恶意行为。
11.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至9任一项所述的无文件攻击检测方法。
12.一种计算机可读存储介质,其特征在于,用于存储计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至9任一项所述的无文件攻击检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211157541.6A CN115544503A (zh) | 2022-09-22 | 2022-09-22 | 一种无文件攻击检测方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211157541.6A CN115544503A (zh) | 2022-09-22 | 2022-09-22 | 一种无文件攻击检测方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115544503A true CN115544503A (zh) | 2022-12-30 |
Family
ID=84730510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211157541.6A Pending CN115544503A (zh) | 2022-09-22 | 2022-09-22 | 一种无文件攻击检测方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115544503A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795444A (zh) * | 2023-01-31 | 2023-03-14 | 北京微步在线科技有限公司 | 一种mssql后门的检测方法及装置 |
-
2022
- 2022-09-22 CN CN202211157541.6A patent/CN115544503A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795444A (zh) * | 2023-01-31 | 2023-03-14 | 北京微步在线科技有限公司 | 一种mssql后门的检测方法及装置 |
CN115795444B (zh) * | 2023-01-31 | 2023-05-05 | 北京微步在线科技有限公司 | 一种mssql后门的检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12019734B2 (en) | Methods and apparatus for control and detection of malicious content using a sandbox environment | |
US10599841B2 (en) | System and method for reverse command shell detection | |
RU2698776C2 (ru) | Способ ведения базы данных и соответствующий сервер | |
US7530106B1 (en) | System and method for security rating of computer processes | |
JP5326062B1 (ja) | 非実行ファイル検査装置及び方法 | |
US9251343B1 (en) | Detecting bootkits resident on compromised computers | |
US7870612B2 (en) | Antivirus protection system and method for computers | |
US8898775B2 (en) | Method and apparatus for detecting the malicious behavior of computer program | |
US20100306851A1 (en) | Method and apparatus for preventing a vulnerability of a web browser from being exploited | |
EP3462358B1 (en) | System and method for detection of malicious code in the address space of processes | |
US11288362B2 (en) | System and method for creating antivirus records for antivirus applications | |
US20130305366A1 (en) | Apparatus and method for detecting malicious files | |
Ramilli et al. | Multi-stage delivery of malware | |
US8646076B1 (en) | Method and apparatus for detecting malicious shell codes using debugging events | |
CN115544503A (zh) | 一种无文件攻击检测方法、装置、设备及存储介质 | |
CN105844161B (zh) | 安全防御方法、装置与*** | |
KR101908517B1 (ko) | 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법 | |
EP3522058B1 (en) | System and method of creating antivirus records | |
Carpentieri et al. | On the undetectability of payloads generated through automatic tools: A human‐oriented approach | |
Muthumanickam et al. | Research Article An Effective Method for Protecting Native API Hook Attacks in User-mode | |
Bolzoni et al. | A Cuckoo's Egg in the Malware Nest: On-the-fly Signature-less Malware Analysis, Detection, and Containment for Large Networks |
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 |