首页> 中国专利> 一种非可执行文件挂马检测方法及其装置

一种非可执行文件挂马检测方法及其装置

摘要

本发明公开了一种非可执行文件挂马检测方法及其装置,它利用非可执行文件的挂马特性,通过操作系统用户层的检测程序确定要监视的进程,并用操作系统内核层的监控模块监控进程的创建文件操作,以判断文件扩展名是否为该系统下的可执行文件扩展名,以及判断写入文件的格式是否含有该系统下的可执行文件的格式特征,从而以此来判断程序是否释放出可执行文件,即非可执行文件是否挂马。本发明不仅可以有效保证非可执行文件挂马检测的可靠性,还适于处理批量非可执行文件,以及适于多种操作系统使用。

著录项

  • 公开/公告号CN101826139A

    专利类型发明专利

  • 公开/公告日2010-09-08

    原文格式PDF

  • 申请/专利权人 厦门市美亚柏科信息股份有限公司;

    申请/专利号CN200910113120.1

  • 发明设计人 吴鸿伟;张永光;张婷;

    申请日2009-12-30

  • 分类号G06F21/00;G06F21/22;

  • 代理机构厦门市首创君合专利事务所有限公司;

  • 代理人连耀忠

  • 地址 361000 福建省厦门市软件园二期观日路12号美亚柏科大厦

  • 入库时间 2023-12-18 00:44:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-05-30

    授权

    授权

  • 2010-10-27

    实质审查的生效 IPC(主分类):G06F21/00 申请日:20091230

    实质审查的生效

  • 2010-09-08

    公开

    公开

说明书

技术领域

本发明涉及一种非可执行文件的病毒查杀方法,特别是涉及一种非可执行文件挂马检测方法及其装置。

背景技术

目前,非可执行文档,例如word、excel、powerpoint、pdf等,已经越来越多的被利用来传播木马。这些非可执行文档往往可以利用溢出漏洞携带病毒或者木马文件,并在打开该文档的程序产生溢出时获得执行权限,从而生成木马文件并运行。由于该隐藏在非可执行文档中的病毒或木马文件,其隐蔽性较强,导致一般的杀毒软件无法对其进行彻底查杀,导致那些携带有病毒或木马文件的非可执行文档往往对电脑系统的安全造成巨大危害。

目前,对该类非可执行文档进行病毒查杀的手段主要有三种:第一种查杀手段是特征码查杀,它是一种先对文件二进制和病毒或木马特征进行比较,然后根据某些规则进行查杀病毒的方法。然而,由于特征码查杀的方法主要是通过比较非可执行文档的二进制与病毒库的病毒特征之间的匹配程度,并利用一定的判断规则来判断是否是恶意文件,使得它是一种单纯对文件进行静态分析以比对特征码的方法,因此它只能针对一些流行木马或常见挂马文件起作用,而对于一些病毒库尚未收录的挂马文件则束手无策,特别是对于一些利用未知漏洞进行挂马的文档,由于病毒库缺少相应的特征码,使得该特征码查杀方法无法对该病毒进行检测和查杀。此外,这种特征码查杀方法对于那些利用已有漏洞来进行挂马的文档,也无法进行全面查杀。特别的,一些挂马文档可能会采用修改特征码、代码变形等手段来避开特征码检测,因此,这时采用特征码查杀手段来处理这些挂马文档就更是束手无策了。

第二种查杀手段是监控系统调用,它主要是通过监控系统接口的非法调用来进行查杀,并在监视到程序非法行为时挂起进程,以警告用户。例如,windows系统中监控释放木马常用的几个API,如CreatFileA,WriteFile,WinExec等函数是否非法调用来实现的。此种方法的缺陷是:一方面,如何判断这些函数是否属于非法调用存在困难,例如,某些方法采用判断该函数调用地址的合法性来进行判断,一般是判断系统函数调用是否来自于非法内存地址(例如,堆地址或者栈地址),但这种方法可以通过伪造调用地址绕过,并利用系统函数地址作为跳板,伪装成为系统调用来避开监控;另一方面,该方法的实施往往处在用户权限级别,因此,可以通过结束进程或者反挂钩等方法来绕过监控。

第三种查杀手段是监控程序行为特征,它主要是查看程序行为是否可信,如果非可信则挂起进程并警告用户。由于该种查杀手段单纯依靠行为特征来判断一个程序的行为是否可信存在很大的问题,因此无法从根本上区分正常程序行为和可疑程序行为,而且由于非可执行文档的挂马是利用打开程序的溢出来执行代码,因此,往往会被认为是可信的。显然,在监控非可执行文档挂马方面单纯依靠行为特征的方法存在盲点。

发明内容

本发明的目的在于克服现有技术之不足,提供一种非可执行文件挂马检测方法及其装置,它是利用非可执行文件的特殊性,通过监控模块对程序是否释放出可执行文件的监控来防止系统中木马或者遭到破坏。

本发明解决其技术问题所采用的技术方案是:一种非可执行文件挂马检测方法,包括如下步骤:

由设置在操作系统用户层的检测程序确定要检测的非可执行文档,并打开该非可执行文档的进程信息;

由设置在操作系统内核层的监控模块监视打开该非可执行文档的进程通信;

操作系统内核层的监控模块拦截监控进程的创建文件操作,判断该非可执行文档的创建文件扩展名是否可疑,如果是则通知操作系统用户层的检测程序挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控;

操作系统内核层的监控模块拦截监控进程的创建文件的写文件操作,判断该非可执行文档的创建文件的写入文件的格式是否可疑,如果是则通知操作系统用户层的检测程序挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控。

进一步的,操作系统用户层的检测程序在程序挂起、警告用户和记录可疑行为后,还包括弹出对话框,让用户选择是否允许执行,如果用户选择允许执行,则恢复进程并继续监控,如果用户选择不允许执行,则结束进程,并结束此次监控。

所述的操作系统内核层的监控模块在拦截监控进程的创建文件操作时,是采用IRP拦截方法来拦截监控进程的创建文件操作。

所述的操作系统内核层的监控模块在采用IRP拦截方法来拦截监控进程的创建文件操作时,是判断该非可执行文档的创建文件扩展名是否为该操作系统下的可执行文件扩展名,如果是则认为该非可执行文档的创建文件扩展名可疑,如果不是则认为该非可执行文档的创建文件扩展名不可疑。

所述的操作系统内核层的监控模块在拦截监控进程的创建文件的写文件操作时,是采用IRP拦截方法来拦截监控进程的创建文件的写文件操作。

所述的操作系统内核层的监控模块在采用IRP拦截方法来拦截监控进程的创建文件的写文件操作时,是判断该非可执行文档的创建文件的写入文件的格式是否含有该操作系统下的可执行文件的特征,如果是则认为该非可执行文档的创建文件的写入文件的格式可疑,如果不是则认为该非可执行文档的创建文件的写入文件的格式不可疑。

一种非可执行文件挂马检测装置,包括:

一打开进程信息装置,用来确定要检测的非可执行文档,并打开该非可执行文档的进程信息;

一进程通信监视装置,用来监视打开该非可执行文档的进程通信;

一第一拦截监控进程装置,用来拦截监控进程的创建文件操作,并判断该非可执行文档的创建文件扩展名是否可疑,如果是则挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控;

一第二拦截监控进程装置,用来拦截监控进程的创建文件的写文件操作,并判断该非可执行文档的创建文件的写入文件的格式是否可疑,如果是则挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控;

打开进程信息装置的输出与进程通信监视装置的输入相连接;进程通信监视装置的输出与第一拦截监控进程装置的输入相连接;第一拦截监控进程装置的输出与第二拦截监控进程装置的输入相连接。

本发明的有益效果是,与现有技术的用于查杀木马病毒的手段相比,由于本发明利用了非可执行文件的挂马特性,即在打开程序溢出时释放可执行文件的特性,通过内核层驱动实现检测该程序是否释放可执行文件来判断是否挂马,因此该方法适用于检测非可执行文档在系统环境和软件环境下存在危险性的情况。此外,该方法在驱动层进行可执行文件格式的检测更有效的保证了检测的可靠性,从而在存在漏洞的系统环境下结合黑白名单策略可以使误报率降到1%以下;该方法及装置还非常适用于一些经常处理大批量非可执行文件的人员,对于收集的不明来源的文档进行检测,可以有效的保证既不漏掉有用信息,又不受到病毒木马的危害;该方法既适用于windows系统下的非可执行文件的检测,也适用于Unix,Mac OS等其它操作系统下的非可执行文件的检测。

以下结合附图及实施例对本发明作进一步详细说明;但本发明的一种非可执行文件挂马检测方法及其装置不局限于实施例。

附图说明

图1是Windows系统文件操作的结构图;

图2是实现本发明的原理框图;

图3是本发明方法的检测流程图;

图4是本发明装置的示意图。

具体实施方式

参见附图所示,本发明的一种非可执行文件挂马检测方法,包括如下步骤:

由设置在操作系统用户层1的检测程序11确定要检测的非可执行文档,并打开该非可执行文档的进程信息;

由设置在操作系统内核层2的监控模块21监视打开该非可执行文档的进程通信;

操作系统内核层的监控模块21拦截监控进程的创建文件操作,判断该非可执行文档的创建文件扩展名是否可疑,如果是则通知操作系统用户层的检测程序11挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控;

操作系统内核层的监控模块21拦截监控进程的创建文件的写文件操作,判断该非可执行文档的创建文件的写入文件的格式是否可疑,如果是则通知操作系统用户层的检测程序11挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控。

进一步的,操作系统用户层的检测程序11在程序挂起、警告用户和记录可疑行为后,还包括弹出对话框,让用户选择是否允许执行,如果用户选择允许执行,则恢复进程并继续监控,如果用户选择不允许执行,则结束进程,并结束此次监控。

其中:

操作系统内核层的监控模块21在拦截监控进程的创建文件操作时,是采用IRP拦截方法来拦截监控进程的创建文件操作;

操作系统内核层的监控模块21在采用IRP拦截方法来拦截监控进程的创建文件操作时,是判断该非可执行文档的创建文件扩展名是否为该操作系统下的可执行文件扩展名,如果是则认为该非可执行文档的创建文件扩展名可疑,如果不是则认为该非可执行文档的创建文件扩展名不可疑;

操作系统内核层的监控模块21在拦截监控进程的创建文件的写文件操作时,是采用IRP拦截方法来拦截监控进程的创建文件的写文件操作;

操作系统内核层的监控模块21在采用IRP拦截方法来拦截监控进程的创建文件的写文件操作时,是判断该非可执行文档的创建文件的写入文件的格式是否含有该操作系统下的可执行文件的特征,如果是则认为该非可执行文档的创建文件的写入文件的格式可疑,如果不是则认为该非可执行文档的创建文件的写入文件的格式不可疑。

本发明的一种非可执行文件挂马检测方法及其装置,所要检测的非可执行文档包括word,excel,powerpoint文档,*.pdf,*.swf文件等。由于很多文档阅读程序存在漏洞,可以巧妙的构造出一些畸形文档,从而导致阅读程序在解析这些文档的时候程序发生异常,而被跳转到文档中的一段代码(shellcode)中执行,黑客正是利用这个原理对一些特定格式的文档进行挂马,当目标用户用特定浏览程序打开该文档时,shellcode获得执行权限,从而释放木马,进行伪装等等。

由于非可执行文件是借助打开该文件的程序的进程空间来运行,其运行周期随该程序结束而结束,因此势必要将其主要功能模块单独释放到文件系统中并使之运行起来,才能保证当该进程退出时继续执行。因此释放出可执行文件是其进行传播的主要环节。而无论利用何种软件漏洞,携带木马的非可执行文档都必须要将木马文件解码并释放到某一路径下(通常是系统路径或临时目录下)执行。因此,如果直接扫描文件二进制以试图发现是否携带可执行文件的方法是不可行的,因为大部分挂马文件都会把木马文件隐藏起来,所以无法通过静态手段来得知文档里是否藏有木马。一般非可执行文档携带的木马文件可以是bat,vbs,exe,dll等,其中bat,vbs或其他脚本语言文件必须保证后缀名不变才可正常执行,而其他可执行文件exe或者dll却可能在后缀名为任何合法字符的情况下被执行。因而仅仅对扩展名进行过滤无法满足需要。木马要运行起来首先要在shellcode(非可执行文件中的一小段代码)中将木马解码释放到文件系统中,本发明通过在内核层对打开非可执行文件进程的文件操作进行监控,检测写入文件是否是符合操作系统规定的可执行性文件格式,例如Windows操作系统为PE文件格式,发现可执行文件被创建和写入即挂起进程并警告用户。

图1是Windows系统文件操作的结构图;CreateFile,ReadFile等API调用最终通过系统调用表,由系统底层函数NtCreateFile,NtReadFile等实现。要监控文件系统操作主要有三种方法:修改系统调用表、拦截系统调用和IRP(I/ORequest Package)拦截。由于NtCreateFile,ZwCreateFile等内核函数也可以用来打开设备或者某个对象,因此如果采用拦截系统调用的方法,则需要拦截大量我们不需要的信息,这就增加了不必要的系统开销。所以,我们采用IRP拦截的方式监控系统的文件操作。

IRP类似于Windows应用程序中的“消息”的概念。在Win32编程中,程序是由“消息”驱动的,不同消息会被分发到不同的消息处理函数中。文件I/O的相关函数,如CreateFile、ReadFile、WriteFile、CloseHandle等函数在对应的内核处理函数ZwCreateFile、ZwReadFile、ZwWriteFile、ZwClose会创建IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_WRITE、IRP_MJ_CLOSE等IRP请求,并将IRP传送到相应的派遣函数中。如果我们想拦截系统的文件操作,就必须拦截I/O管理器发向文件系统驱动程序的IRP。而拦截IRP最简单的方法莫过于创建一个上层过滤器设备对象并将之加入文件系统设备所在的设备堆栈中。具体方法如下:首先通过IoCreateDevice创建自己的设备对象,然后调用IoGetDeviceObjectPointer来得到文件系统设备(Ntfs,Fastfat,Rdr或Mrxsmb,Cdfs)对象的指针,最后通过IoAttachDeviceToDeviceStack或者IoAttachDevice等函数,将自己的设备放到设备堆栈上成为一个过滤器。在这个过滤器中拦截IRP_MJ_ CREATE请求来获得创建文件的信息,拦截IRP_MJ_WRITE请求并检测文件内容,发现创建并写入PE文件则通知用户层检测程序,挂起进程,弹出预警对话框。

图2是实现本发明的原理框图;非可执行文件挂马检测系统由检测程序11和监控模块21构成;其中,检测程序11部署在操作系统用户层1对文件系统12产生作用,该检测程序11用来获得打开可疑非可执行文件的进程信息,包括进程名和PID等,并和监控模块21时行通信;监控模块21位于操作系统内核层2,用驱动实现,用于监视与进程相关的文件操作,监控模块21对I/O设备驱动22产生作用。监控模块21的主要功能是与检测程序11通信,监控与打开非可执行文件进程相关的文件创建和写入操作,以检测是否是可执行文件。其中可执行文件的特征检测的具体方法是通过对该操作系统下的可执行文件格式的特征来进行判断是否是可执行文件而非单纯通过判断文件扩展名。例如在Windows操作系统下,可执行文件(PE文件)的结构特征是包含有IMAGE_DOS_HEADER(可选),IMAGE_NT_HEADERS,其中主要需要判断的是IMAGE_NT_HEADERS结构体中是否包含标志“PE\0\0”,如果包括则判定为可执行文件。而在UNIX/LINUX系统下可以通过检测是否为a.out,elf文件格式,或者通过检测coff文件格式中的magic字段来判断是否是可执行文件。

图3是本发明方法的检测流程图;其包括如下步骤:

步骤S1,准备就绪,任务开始执行,执行步骤S2;

步骤S2,由设置在操作系统用户层1的检测程序11确定要检测的非可执行文档,并打开该非可执行文档的进程信息,执行步骤S3;该步骤中,比如要检测windowsXP系统下的一个*.doc文件,则首先需要找到*.doc文件关联的进程,假设该系统中*.doc关联的进程为WINWORD.exe,则确定监视的进程为WINWORD.exe;

步骤S3,由设置在操作系统内核层2的监控模块21监视打开该非可执行文档的进程通信,执行步骤S4;

步骤S4,操作系统内核层2的监控模块21拦截监控进程的创建文件操作,判断该非可执行文档的创建文件扩展名是否可疑,如果是则执行步骤S7,否则执行步骤S5;

步骤S5,操作系统内核层2的监控模块21继续监控文件写操作,拦截监控进程的创建文件的写文件操作,执行步骤S6;

步骤S6,操作系统内核层2的监控模块21判断该非可执行文档的创建文件的写入文件的格式是否为可执行文件,如果是则执行步骤S7,否则执行步骤S12;

步骤S7,监控模块21通知操作系统用户层1的检测程序11挂起进程,并警告用户,执行步骤S8;

步骤S8,操作系统用户层1的检测程序11将可疑行为记录下来,执行步骤S9;

步骤S9,弹出提示是否允许执行的对话框,如用户选择不允许执行,则执行步骤S10,如用户允许执行,则执行步骤S11;

步骤S10,结束进程,并结束此次监控;

步骤S11,恢复进程,执行步骤S12;

步骤S12,操作系统内核层2的监控模块21继续执行监控操作,执行步骤S13;

步骤S13,操作系统内核层2的监控模块21结束监控操作。

其中,上述步骤S4中,操作系统内核层2的监控模块21在拦截监控进程的创建文件操作时,是采用IRP拦截方法来拦截监控进程的创建文件操作的。该操作系统内核层2的监控模块21在采用IRP拦截方法来拦截监控进程的创建文件操作时,是判断该非可执行文档的创建文件扩展名是否为该操作系统下的可执行文件扩展名,如果是则认为该非可执行文档的创建文件扩展名可疑,如果不是则认为该非可执行文档的创建文件扩展名不可疑;

上述步骤S6中,操作系统内核层2的监控模块21在拦截监控进程的创建文件的写文件操作时,是采用IRP拦截方法来拦截监控进程的创建文件的写文件操作的。该操作系统内核层2的监控模块21在采用IRP拦截方法来拦截监控进程的创建文件的写文件操作时,是判断该非可执行文档的创建文件的写入文件的格式是否含有该操作系统下的可执行文件的特征,如果是则认为该非可执行文档的创建文件的写入文件的格式可疑,如果不是则认为该非可执行文档的创建文件的写入文件的格式不可疑;

上述步骤S9中,当系统用来检测大量的文档时,也可以通过设置默认选项来确定当检测到文件可疑时的操作,例如,可以设置为发现可疑操作时禁止执行,则此时不再弹出对话框,而是直接记录可疑文件,并包括生成什么路径下的可执行文件等等。

本发明的一种非可执行文件挂马检测装置,其结构框图请参见图4所示,它包括:

打开进程信息装置3,用来确定要检测的非可执行文档,并打开该非可执行文档的进程信息;

进程通信监视装置4,用来监视打开该非可执行文档的进程通信;

第一拦截监控进程装置5,用来拦截监控进程的创建文件操作,并判断该非可执行文档的创建文件扩展名是否可疑,如果是则挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控;

第二拦截监控进程装置6,用来拦截监控进程的创建文件的写文件操作,并判断该非可执行文档的创建文件的写入文件的格式是否可疑,如果是则挂起进程、警告用户、记录可疑行为并禁止执行,如果不是则继续监控;

其中,打开进程信息装置3的输出与进程通信监视装置4的输入相连接;进程通信监视装置4的输出与第一拦截监控进程装置5的输入相连接;第一拦截监控进程装置5的输出与第二拦截监控进程装置6的输入相连接。

上述实施例仅用来进一步说明本发明的一种非可执行文件挂马检测方法及其装置,但本发明并不局限于实施例,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均落入本发明技术方案的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号