一种拦截网页攻击的方法、装置和客户端设备的制作方法

文档序号:7860184阅读:369来源:国知局
专利名称:一种拦截网页攻击的方法、装置和客户端设备的制作方法
技术领域
本发明涉及网络安全技术领域,具体涉及一种拦截网页攻击的方法、装置和客户端设备。
背景技术
网页木马攻击是当前最流行的漏洞攻击方式之一,网页木马攻击的过程一般是攻击者通过javascript操作浏览器的堆内存,将恶意代码shellcode写入浏览器的堆内存地址,通过缓冲区溢出漏洞改变程序的执行流程,使得浏览器堆内存中的shellcode得以执行。目前,各种安全软件针对网页木马的拦截技术一般分为如下三类
I、针对网页木马的恶意脚本代码内容进行拦截。2、针对溢出型网页木马shellcode所调用的API函数进行拦截。3、针对网页木马所执行文件的特征进行黑白名单判定,从而进行拦截。其中,在第三类拦截技术中,黑名单拦截的过程一般是安全软件针对网页木马所执行的文件,进行病毒库特征码匹配,如果符合病毒库特征码则阻止并提示执行行为;白名单拦截的过程一般是安全软件针对网页木马所所执行的文件,进行白名单特征匹配,如果不符合白名单特征,则拦截阻止程序运行。但是,上述黑白名单的拦截技术并不能完全地对网页木马进行拦截。例如,系统程序属于可信的白名单程序,但是网页木马可以通过运行接受命令行参数的系统程序(即运行命令行程序)绕过黑白名单的拦截,最后成功执行恶意程序。

发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的拦截网页攻击的方法和相应的装置及客户端设备。依据本发明的一个方面,提供了一种拦截网页攻击的方法,包括获取浏览器执行进程的程序;检测所述浏览器执行进程的程序是否为命令行程序;当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数;对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数;当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。本发明实施例中,获取浏览器执行进程的程序,包括获取浏览器执行进程的应用程序接口,通过所述应用程序接口获取浏览器执行进程的程序。本发明实施例中,检测所述浏览器执行进程的程序是否为命令行程序,包括
获取所述浏览器执行进程的程序名称;判断所述浏览器执行进程的程序名称是否为预设的命令行程序的程序名称,若是,则判定所述浏览器执行进程的程序为命令行程序。本发明实施例中,获取所述浏览器执行进程的程序名称,包括监控与所述浏览器执行进程相关的CreateProcessInternalW函数;通过获取所述CreateProcessInternalW 函数所执行的 IpApplicationName 参数,获取所述浏览器执行进程的程序名称。本发明实施例中,预设的命令行程序为以下任意一种脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、系统命令行 解释程序cmd. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe、文件执行程序mshta. exe hta和定时执行程序at. exe。本发明实施例中,预设的命令行程序包括存在递归调用的命令行程序和不存在递归调用的命令行程序两类;存在递归调用的命令行程序包括系统命令行解释程序cmd. exe和定时执行程序at. exe ;不存在递归调用的命令行程序包括脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe和文件执行程序mshta. exe hta。本发明实施例中,当命令行程序为不存在递归调用的命令行程序时,获取所述命令行程序运行的命令行参数,包括通过CommandLineToArgvW函数获取命令行程序运行的命令行参数。本发明实施例中,当命令行程序为不存在递归调用的命令行程序时,对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数,包括遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径;如果获取到完整的文件路径,则确定所述命令行程序存在恶意命令行参数。本发明实施例中,当命令行程序为存在递归调用的命令行程序时,获取所述命令行程序运行的命令行参数,包括根据所述命令行程序中的分隔字符获取命令行程序运行的命令行参数。本发明实施例中,分隔字符包括空格字符、引号字符、“&”字符和“”字符。本发明实施例中,当命令行程序为存在递归调用的命令行程序时,对命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数,包括遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径;如果获取到完整的文件路径,则确定所述命令行程序存在恶意命令行参数;如果不能获取到完整的文件路径,则判断所述命令行参数中是否包括用于标识该命令行程序的字符,若是,则确定所述命令行程序存在恶意命令行参数。本发明实施例中,当命令行程序为系统命令行解释程序cmd. exe时,用于标识该命令行程序的字符为cmd字符;
当命令行程序为定时执行程序at. exe时,用于标识该命令行程序的字符为at. exe 字符。本发明实施例中,当命令行程序为定时执行程序at. exe时,在利用GetLongPathNameff函数检测所述命令行参数之前,还包括将所述命令行参数中的时间参数忽略。本发明实施例中,在检测所述浏览器执行进程的程序是否为命令行程序之前,还包括检测所述浏览器执行进程的程序是否为黑名单程序或者白名单程序;当所述浏览器执行进程的程序为黑名单程序时,阻止所述进程的执行; 当所述浏览器执行进程的程序为白名单程序时,执行检测所述浏览器执行进程的程序是否为命令行程序的步骤。根据本发明的另一方面,提供了一种拦截网页攻击的装置,包括程序获取模块,用于获取浏览器执行进程的程序;程序检测模块,用于检测所述浏览器执行进程的程序是否为命令行程序;参数获取模块,用于当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数;参数检测模块,用于对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数;拦截模块,用于当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。本发明实施例中,程序检测模块包括程序名称获取单元,用于获取所述浏览器执行进程的程序名称;判定单元,用于判断所述浏览器执行进程的程序名称是否为预设的命令行程序的程序名称,若是,则判定所述浏览器执行进程的程序为命令行程序。本发明实施例中,预设的命令行程序为以下任意一种脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、系统命令行解释程序cmd. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe、文件执行程序mshta. exe hta和定时执行程序at. exe。本发明实施例中,预设的命令行程序包括存在递归调用的命令行程序和不存在递归调用的命令行程序两类;存在递归调用的命令行程序包括系统命令行解释程序cmd. exe和定时执行程序at. exe ;不存在递归调用的命令行程序包括脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe和文件执行程序mshta. exe hta。本发明实施例中,参数获取模块包括第一获取单元,用于当所述命令行程序为不存在递归调用的命令行程序时,通过CommandLineToArgvff函数获取命令行程序运行的命令行参数。本发明实施例中,参数检测模块包括第一检测单元,用于当所述命令行程序为不存在递归调用的命令行程序时,遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径;第一确定单元,用于当第一检测单元获取到完整的文件路径,确定所述命令行程序存在恶意命令行参数。本发明实施例中,参数获取模块包括第二获取单元,用于当所述命令行程序为存在递归调用的命令行程序时,根据所述命令行程序中的分隔字符获取命令行程序运行的命令行参数。本发明实施例中,参数检测模块包括第二检测单元,用于当所述命令行程序为存在递归调用的命令行程序时,遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径; 第二确定单元,用于当第二检测单元获取到完整的文件路径时,确定所述命令行程序存在恶意命令行参数;第三确定单元,用于第二检测单元当不能获取到完整的文件路径时,判断所述命令行参数中是否包括用于标识该命令行程序的字符,若是,则确定所述命令行程序存在恶意命令行参数。本发明实施例中,还包括黑白名单检测模块,用于在程序检测模块检测所述浏览器执行进程的程序是否为命令行程序之前,检测所述浏览器执行进程的程序是否为黑名单程序或者白名单程序;当所述浏览器执行进程的程序为黑名单程序时,所述拦截模块阻止所述进程的执行;当所述浏览器执行进程的程序为白名单程序时,所述程序检测模块检测所述浏览器执行进程的程序是否为命令行程序。根据本发明的另一方面,提供了一种客户端设备,包括如上所述的拦截网页攻击的装置。根据本发明的拦截网页攻击的方法、装置和客户端设备可以在检测到当前浏览器执行进程的程序是命令行程序时,进一步获取该命令行程序的命令行参数,并对所述命令行程序的命令行参数进行分析,当分析出所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。由此解决了网页攻击通过运行命令行程序而绕过黑白名单的拦截,最后成功执行恶意程序的问题,取得了提高网页浏览的安全性,更加有效地拦截网页的恶意攻击的有益效果。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式



通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中
图I示出了根据本发明一个实施例的一种拦截网页攻击的方法的流程图;图2示出了根据本发明一个实施例的一种拦截网页攻击的方法的流程图;以及图3示出了根据本发明一个实施例的一种拦截网页攻击的装置的结构框图。
具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形 式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等
坐寸ο计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。参照图1,示出了根据本发明一个实施例的一种拦截网页攻击的方法的流程图,所述方法包括步骤S101,获取浏览器执行进程的程序;目前通过黑白名单拦截网页攻击的技术并不能完全地对网页木马进行拦截。例如,系统程序属于可信的白名单程序,但是网页木马可以通过运行接受命令行参数的系统程序(即运行命令行程序)绕过黑白名单的拦截,最后成功执行恶意程序。因此,本发明中当在浏览器中产生执行进程的行为时,需要首先获取浏览器执行进程的程序,然后进一步对该浏览器执行进程的程序进行分析,判断是否需要阻止该程序的运行。在本发明实施例中,可以通过执行以下操作产生执行进程的行为I、在浏览器的网页中下载数据;2、点击浏览器网页中的某些内容进行浏览。当然,还可以通过其他方式产生执行进程的行为,本领域技术人员根据实际情况进行相应处理即可,本发明对具体的方式并不加以限制。需要说明的是,本发明中是针对浏览器执行进程的程序进行分析处理,对于其他的程序的执行(例如在桌面的快捷方式中打开某一应用程序),本发明并不会对其进行分析处理。步骤S102,检测所述浏览器执行进程的程序是否为命令行程序;
由于网页木马可以通过运行命令行程序绕过黑白名单的拦截,最后成功执行恶意程序,因此,本发明在获取到浏览器执行进程的程序之后,进一步检测该浏览器执行进程的程序是否为命令行程序,如果其为命令行程序,则有可能是被网页木马恶意利用。步骤S103,当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数;步骤S104,对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数;步骤S105,当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。如果所述浏览器执行进程的程序为命令行程序,则该命令行程序有可能是被恶意利用的程序,但是也有可能是正常的系统程序。因此,本发明还要更进一步地对所述命令行程序的命令行参数进行分析,检测所述命令行程序中是否存在恶意命令行参数。·
如果所述命令行程序中存在恶意命令行参数,则说明所述命令行程序的确被恶意利用,在这种情况下,则阻止所述进程的执行;如果所述命令行程序中不存在恶意命令行参数,则说明所述命令行程序为正常的系统程序,因此可以执行该命令行程序进程。通过上述方法可以避免对正常系统程序产生错误的阻止。本发明实施例的拦截网页攻击的方法可以在检测到当前浏览器执行进程的程序是命令行程序时,进一步获取该命令行程序的命令行参数,并对所述命令行程序的命令行参数进行分析,当分析出所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。由此解决了网页的恶意攻击通过运行命令行程序而绕过黑白名单的拦截,最后成功执行的恶意程序问题,取得了提高网页浏览的安全性,更加有效地拦截网页的恶意攻击的有益效果。参照图2,示出了根据本发明一个实施例的一种拦截网页攻击的方法的流程图,所述方法包括步骤S201,获取浏览器执行进程的程序;在本发明实施例中,采用HOOK机制获取浏览器执行进程的程序。windows系统下的编程,消息message的传递是贯穿其始终的。HOOK与消息有着非常密切的联系,它的中文含义是“钩子”。HOOK是消息处理中的一个环节,用于监控消息在系统中的传递,并在这些消息到达最终的消息处理过程前,处理某些特定的消息。具体的,所述获取浏览器执行进程的程序的过程包括对浏览器执行进程的应用程序接口进行钩挂(HOOK),获取浏览器执行进程的应用程序接口,通过所述应用程序接口获取浏览器执行进程的程序。步骤S202,检测所述浏览器执行进程的程序是否为黑名单程序或者白名单程序;当所述浏览器执行进程的程序为白名单程序时,执行步骤S203 ;当所述浏览器执行进程的程序为黑名单程序时,执行步骤S206。在获取到浏览器执行进程的程序之后,首先对所述程序进行黑白名单的检测,黑白名单的检测过程即为特征库匹配过程。黑名单和白名单都具有其各自对应的特征库。例如对应于黑名单的特征库可以是由厂商收集到的恶意程序样本的特征码组成,而特征码则是分析工程师从恶意程序中找到和正当软件的不同之处,截取一段类似于“搜索关键词”的程序代码。当查杀过程中,引擎会读取文件并与特征库中的所有特征码“关键词”进行匹配,如果发现文件程序代码中包含匹配的特征码“关键词”,就可以判定该文件程序为黑名单程序。而对应于白名单的特征库可以由正当软件的特征码组成,如果检测到程序代码符合白名单特征库的特征,则说明该程序属于白名单程序。对于具体的黑白名单的检测过程,本领域技术人员根据实际情况进行相应处理即可,本发明在此不再详细论述。本发明旨在针对目前黑白名单的拦截技术中的不足进行处理。例如,当检测出所述浏览器执行进程的程序属于可信的白名单程序时,根据现有的技术将直接允许该程序的执行,但是该程序在实质上也有可能是恶意程序,例如网页木马可以通过运行接受命令行参数的系统程序(即运行命令行程序)绕过黑白名单的拦截,最后成功执行恶意程序。因此,本实施例在检测出所述浏览器执行进程的程序为白名单程序时,并不是直接允许该程序的执行,还要进一步对所述程序进行分析,从而更加准确地判 断该程序是否为恶意程序,对于具体的分析过程,将在下面进行详细介绍。而当检测出所述浏览器执行进程的程序为黑名单程序时,则不需要再对其进行分析,直接阻止所述进程的执行即可。步骤S203,检测所述浏览器执行进程的程序是否为命令行程序;当所述浏览器执行进程的程序为命令行程序时,则执行步骤S204,当所述浏览器执行进程的程序不是命令行程序时,则说明该程序为可信程序,允许该程序进程的执行。当检测出所述浏览器执行进程的程序为白名单程序时,进一步检测所述浏览器执行进程的程序是否为命令行程序,该步骤S203具体通过以下子步骤进行检测子步骤al,获取所述浏览器执行进程的程序名称;本实施例在这里仍然通过HOOK机制获取所述浏览器执行进程的程序名称,具体包括(I)通过HOOK机制监控与所述浏览器执行进程相关的CreateProcessInternalW函数;利用HOOK 技术对 CreateProcessInternalW 函数进行内联挂钩(inline hook)。(2)通过获取所述CreateProcessInternalW函数所执行的 IpApplicationName 参数,获取所述浏览器执行进程的程序名称。子步骤a2,判断所述浏览器执行进程的程序名称是否为预设的命令行程序的程序名称,若是,则判定所述浏览器执行进程的程序为命令行程序。其中,所述预设的命令行程序为以下任意一种脚本语言解释器Wscript. exe (接受参数执行指定路径和地址的vbs,js脚本文件);动态链接库注册程序RegSVr32. exe (接受参数注册执行指定路径和地址的dll文件);系统命令行解释程序cmd. exe (接受参数执行任意的命令);文件执行程序rundll32. exe dll (接受参数执行指定路径和地址的dll文件);脚本语言解释器cscript. exe (接受参数执行指定路径和地址的vbs,js脚本文件);文件执行程序mshta. exe hta (接受参数执行指定路径和地址的hta文件);定时执行程序at. exe (接受参数定时执行指定路径和地址的文件)。
步骤S204,获取所述命令行程序运行的命令行参数;步骤S205,对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数;当所述命令行程序存在恶意命令行参数时,执行步骤S206,当所述命令行程序不存在恶意命令行参数时,则说明所述命令行程序为正常的系统程序,允许该命令行程序进程的执行。在本实施例中,所述预设的命令行程序包括存在递归调用的命令行程序和不存在递归调用的命令行程序两类,本发明针对不同的命令行程序将执行不同的操作。其中,所述存在递归调用的命令行程序包括系统命令行解释程序cmd. exe和定时执行程序at. exe ; 所述不存在递归调用的命令行程序包括脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript.exe和文件执行程序mshta. exe hta。下面,分别在介绍上述两种情况下的具体操作第一种情况所述命令行程序为不存在递归调用的命令行程序。所述步骤S204中获取所述命令行程序运行的命令行参数的具体过程为通过CommandLineToArgvW函数获取命令行程序运行的命令行参数。所述步骤S205中对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数的具体过程为遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径;如果获取到完整的文件路径,则确定所述命令行程序存在恶意命令行参数,此时需要阻止该命令行程序进程的执行;如果不能获取到完整的文件路径,则说明所述命令行程序不存在恶意命令行参数,此时允许该命令行程序进程的执行。例如,对于脚本语言解释器Wscript. exe程序,其完整的文件路径为" C:\WIND0WS\System32\WScript.exe" " c:\windows\temp\temp.vbs"对于脚本语言解释器cscript. exe程序,其完整的文件路径为" C:\WIND0WS\System32\cscript.exe" " c:\windows\temp\temp.vbs"对于文件执行程序mshta. exe hta,其完整的文件路径为" C:\WIND0WS\system32\mshta.exe" " C:\ax\Help.hta"对于文件执行程序rundll32. exe dll,其完整的文件路径为" C:\WIND0WS\system32\Rundll32.exe" " C:\muma.dll" install对于动态链接库注册程序RegSVr32. exe,其完整的文件路径为" C:\WIND0WS\system32\regsvr32.exe" c:\2fxlm2.dll如果对于上述5种命令行程序,获取到以上所述的完整的文件路径,则说明对应的命令行程序存在恶意命令行参数,此时需要阻止该命令行程序进程的执行;如果不能获取到以上所述的完整的文件路径,则说明对应的命令行程序不存在恶意命令行参数,此时允许该命令行程序进程的执行。第二种情况所述命令行程序为存在递归调用的命令行程序。
所述步骤S204中获取所述命令行程序运行的命令行参数的具体过程为根据所述命令行程序中的分隔字符获取命令行程序运行的命令行参数。其中,所述分隔字符可以包括空格字符、引号字符、“&”字符和“”字符。具体的,可以通过以下方式进行分析分析命令行中是否存在空格字符ISBLANK(c) (c == L" | |c = = L' \t')分析命令行中是否存在引号字符ISQUOTA(c) (c == L"")
分析命令行中是否存在“&”字符ISAND(c) (c == L' &/ )分析命令行中是否存在“ I ”字符ISPIPE(c) (c == L' I')当然,所述分隔字符还可以为其他字符,本领域技术人员根据实际情况处理即可,本发明对此并不加以限制。所述步骤S205中对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数的具体过程为遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径;如果获取到完整的文件路径,则确定所述命令行程序存在恶意命令行参数,此时需要阻止该命令行程序进程的执行。如果不能获取到完整的文件路径,则判断所述命令行参数中是否包括用于标识该命令行程序的字符,若是,则确定所述命令行程序存在恶意命令行参数,此时需要阻止该命令行程序进程的执行;如果不包括用于标识该命令行程序的字符,则说明所述命令行程序不存在恶意命令行参数,此时允许该命令行程序进程的执行。其中,当所述命令行程序为系统命令行解释程序cmd. exe时,所述用于标识该命令行程序的字符为cmd字符;当所述命令行程序为定时执行程序at. exe时,所述用于标识该命令行程序的字符为at. exe字符。下面,分别针对所述命令行程序为系统命令行解释程序cmd. exe和定时执行程序at. exe的情况进行描述I、所述命令行程序为系统命令行解释程序cmd. exe其完整的文件路径为cmd/c " C:\Documents and Settings\user\Local Settings\TemporaryInternet Files\Content. IE5\m720[I]· htm〃如果获取到上述完整的文件路径,则确定该系统命令行解释程序cmd. exe存在恶意命令行参数,此时需要阻止该命令行解释程序cmd. exe进程的执行。如果获取不到上述完整的文件路径,例如获取到的文件路径为cmd/c " cmd/c C:\D0CUME l\user\L0CALS l\Temp\Temporary InternetFiles\Content. IE5\server[I]. exe",则进一步判断该命令行解释程序cmd. exe中是否包括cmd字符,经过判断,上述获取到的文件路径中包括cmd字符,因此,确定该系统命令行解释程序cmd. exe存在恶意命令行参数,此时需要阻止该定时执行程序at.exe进程的执行。如果经过判断,获取到的文件路径中不包括cmd字符,则确定该系统命令行解释程序cmd. exe不存在恶意命令行参数,因此允许该命令行解释程序cmd. exe进程的执行。2、所述命令行程序为定时执行程序at. exe首先,对于该种情况,由于其属于定时执行程序,因此在利用GetLongPathNameW函数检测该程序的命令行参数之前,还需要将所述命令行参数中的时间参数忽略。例如,该定时执行程序at. exe的完整的文件路径为At. exe 23:00" c:\muma.exe"在将命令行参数中的时间参数忽略之后,获取的完整的文件路径应为
c:\muma.exe如果获取到上述完整的文件路径,则确定该定时执行程序at. exe存在恶意命令行参数,此时需要阻止该定时执行程序at. exe进程的执行。如果获取不到上述完整的文件路径,例如获取到的文件路径为At. exe 23:00" At. exe 23: OOc: \muma. exe "将时间参数忽略之后为At. exe 23: OOc: \muma. exe则进一步判断该定时执行程序at. exe中是否包括at. exe字符,经过判断,上述获取到的文件路径中包括at. exe字符,因此,确定该定时执行程序at. exe存在恶意命令行参数,此时需要阻止该定时执行程序at. exe进程的执行。如果经过判断,获取到的文件路径中不包括at. exe字符,则确定该定时执行程序at. exe不存在恶意命令行参数,因此允许该定时执行程序at. exe进程的执行。步骤S206,阻止所述进程的执行。当在步骤S202中检测到所述浏览器执行进程的程序为黑名单程序时,或者在步骤S205中检测到所述命令行程序存在恶意命令行参数时,则说明该浏览器执行进程的程序为恶意程序,此时,则阻止该程序进程的执行。最后,需要说明的是,在本实施例中所述的CreateProcessInternalW函数、CommandLineToArgvff 函数、GetLongPathNameW 函数和 GetLongPathNameW 函数均是微软提供的一种操作系统函数,为本领域技术人员所熟知,因此本实施例不再详述。本实施例具体描述了拦截网页恶意攻击的过程,通过本实施例所描述的方法提高了网页浏览的安全性,能够更加有效地拦截网页的恶意攻击。参照图3,示出了根据本发明一个实施例的一种拦截网页攻击的装置的结构框图,所述装置包括程序获取模块301、黑白名单检测模块302、程序检测模块303、参数获取模块304、参数检测模块305和拦截模块306。其中,程序获取模块301,用于获取浏览器执行进程的程序;所述程序获取模块301包括接口获取单元,用于获取浏览器执行进程的应用程序接口,通过所述应用程序接口获取浏览器执行进程的程序。
黑白名单检测模块302,用于在程序检测模块检测所述浏览器执行进程的程序是否为命令行程序之前,检测所述浏览器执行进程的程序是否为黑名单程序或者白名单程序;当所述浏览器执行进程的程序为黑名单程序时,所述拦截模块306阻止所述进程的执行;当所述浏览器执行进程的程序为白名单程序时,所述程序检测模块303检测所述浏览器执行进程的程序是否为命令行程序。程序检测模块303,用于检测所述浏览器执行进程的程序是否为命令行程序; 所述程序检测模块303包括程序名称获取单元,用于获取所述浏览器执行进程的程序名称; 判定单元,用于判断所述浏览器执行进程的程序名称是否为预设的命令行程序的程序名称,若是,则判定所述浏览器执行进程的程序为命令行程序。其中,所述程序名称获取单元包括监控子单元,用于监控与所述浏览器执行进程相关的CreateProcessInternalW函数;程序名称获取子单元,用于通过获取所述CreateProcessInternalW函数所执行的IpApplicationName参数,获取所述浏览器执行进程的程序名称。所述预设的命令行程序为以下任意一种脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、系统命令行解释程序cmd. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe、文件执行程序mshta. exe hta和定时执行程序at. exe。所述预设的命令行程序包括存在递归调用的命令行程序和不存在递归调用的命令行程序两类;所述存在递归调用的命令行程序包括系统命令行解释程序cmd. exe和定时执行程序 at. exe ;所述不存在递归调用的命令行程序包括脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript.exe和文件执行程序mshta. exe hta。参数获取模块304,用于当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数;所述参数获取模块304包括第一获取单元,用于当所述命令行程序为不存在递归调用的命令行程序时,通过CommandLineToArgvff函数获取命令行程序运行的命令行参数;第二获取单元,用于当所述命令行程序为存在递归调用的命令行程序时,根据所述命令行程序中的分隔字符获取命令行程序运行的命令行参数。其中,所述分隔字符包括空格字符、引号字符、“&”字符和“ I ”字符。当然,所述分隔字符还可以为其他字符,本发明对此并不加以限制。参数检测模块305,用于对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数;
所述参数检测模块305包括第一检测单元,用于当所述命令行程序为不存在递归调用的命令行程序时,遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径;第一确定单元,用于当第一检测单元获取到完整的文件路径,确定所述命令行程序存在恶意命令行参数;第二检测单元,用于当所述命令行程序为存在递归调用的命令行程序时,遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径;第二确定单元,用于当第二检测单元获取到完整的文件路径时,确定所述命令行程序存在恶意命令行参数;·
第三确定单元,用于第二检测单元当不能获取到完整的文件路径时,判断所述命令行参数中是否包括用于标识该命令行程序的字符,若是,则确定所述命令行程序存在恶意命令行参数。其中,当所述命令行程序为命令行程序cmd. exe时,所述用于定义该命令行程序名称的字符为cmd字符;当所述命令行程序为定时执行程序at. exe时,所述用于定义该命令行程序名称的字符为at. exe字符。所述参数检测模块305还包括忽略单元,用于当所述命令行程序为定时执行程序at.exe时,在利用GetLongPathNameff函数检测所述命令行参数之前,将所述命令行参数中的时间参数忽略。所述装置还包括拦截模块306,用于当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。对于上述装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图I和图2所示方法实施例的部分说明即可。本发明实施例的拦截网页攻击的装置可以在检测到当前浏览器执行进程的程序是命令行程序时,进一步获取该命令行程序的命令行参数,并对所述命令行程序的命令行参数进行分析,当分析出所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。由此解决了网页的恶意攻击通过运行命令行程序而绕过黑白名单的拦截,最后成功执行的恶意程序问题,取得了提高网页浏览的安全性,更加有效地拦截网页的恶意攻击的有益效果。基于上述拦截网页攻击的装置实施例,本发明实施例还提供了一种包含该装置的客户端设备。所述客户端设备在某一进程执行时,通过获取浏览器执行进程的程序;检测所述浏览器执行进程的程序是否为命令行程序;当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数;对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数;当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。从而解决了网页的恶意攻击通过运行命令行程序而绕过黑白名单的拦截,最后成功执行的恶意程序问题,提高了网页浏览的安全性,能够更加有效地拦截网页的恶意攻击。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施 例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式
的权利要求书由此明确地并入该具体实施方式
,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的拦截网页攻击的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了 若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
权利要求
1.一种拦截网页攻击的方法,包括 获取浏览器执行进程的程序; 检测所述浏览器执行进程的程序是否为命令行程序; 当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数; 对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数; 当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。
2.根据权利要求I所述的方法,所述获取浏览器执行进程的程序,包括 获取浏览器执行进程的应用程序接口,通过所述应用程序接口获取浏览器执行进程的程序。
3.根据权利要求I所述的方法,所述检测所述浏览器执行进程的程序是否为命令行程序,包括 获取所述浏览器执行进程的程序名称; 判断所述浏览器执行进程的程序名称是否为预设的命令行程序的程序名称,若是,则判定所述浏览器执行进程的程序为命令行程序。
4.根据权利要求3所述的方法,所述获取所述浏览器执行进程的程序名称,包括 监控与所述浏览器执行进程相关的CreateProcessInternalW函数; 通过获取所述CreateProcessInternalW函数所执行的IpApplicationName参数,获取所述浏览器执行进程的程序名称。
5.根据权利要求3所述的方法,所述预设的命令行程序为以下任意一种 脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、系统命令行解释程序cmd. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe、文件执行程序mshta. exe hta和定时执行程序at. exe。
6.根据权利要求5所述的方法, 所述预设的命令行程序包括存在递归调用的命令行程序和不存在递归调用的命令行程序两类; 所述存在递归调用的命令行程序包括系统命令行解释程序cmd. exe和定时执行程序at. exe ; 所述不存在递归调用的命令行程序包括脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe和文件执行程序mshta. exe hta。
7.根据权利要求I或6所述的方法,当所述命令行程序为不存在递归调用的命令行程序时,所述获取所述命令行程序运行的命令行参数,包括 通过Co_andLineToArgvW函数获取命令行程序运行的命令行参数。
8.根据权利要求I或6所述的方法,当所述命令行程序为不存在递归调用的命令行程序时,所述对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数,包括 遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径; 如果获取到完整的文件路径,则确定所述命令行程序存在恶意命令行参数。
9.根据权利要求I或6所述的方法,当所述命令行程序为存在递归调用的命令行程序时,所述获取所述命令行程序运行的命令行参数,包括 根据所述命令行程序中的分隔字符获取命令行程序运行的命令行参数。
10.根据权利要求9所述的方法,所述分隔字符包括空格字符、引号字符、“&”字符和“I”字符。
11.根据权利要求I或6所述的方法,当所述命令行程序为存在递归调用的命令行程序时,所述对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数,包括 遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径; 如果获取到完整的文件路径,则确定所述命令行程序存在恶意命令行参数; 如果不能获取到完整的文件路径,则判断所述命令行参数中是否包括用于标识该命令行程序的字符,若是,则确定所述命令行程序存在恶意命令行参数。
12.根据权利要求11所述的方法, 当所述命令行程序为系统命令行解释程序cmd. exe时,所述用于标识该命令行程序的字符为cmd字符; 当所述命令行程序为定时执行程序at. exe时,所述用于标识该命令行程序的字符为at. exe 字符。
13.根据权利要求11所述的方法,当所述命令行程序为定时执行程序at.exe时,在利用GetLongPathNameW函数检测所述命令行参数之前,还包括 将所述命令行参数中的时间参数忽略。
14.根据权利要求I所述的方法,在检测所述浏览器执行进程的程序是否为命令行程序之前,还包括 检测所述浏览器执行进程的程序是否为黑名单程序或者白名单程序; 当所述浏览器执行进程的程序为黑名单程序时,阻止所述进程的执行; 当所述浏览器执行进程的程序为白名单程序时,执行检测所述浏览器执行进程的程序是否为命令行程序的步骤。
15.一种拦截网页攻击的装置,包括 程序获取模块,用于获取浏览器执行进程的程序; 程序检测模块,用于检测所述浏览器执行进程的程序是否为命令行程序; 参数获取模块,用于当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数; 参数检测模块,用于对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数; 拦截模块,用于当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。
16.根据权利要求15所述的装置,所述程序检测模块包括 程序名称获取单元,用于获取所述浏览器执行进程的程序名称;判定单元,用于判断所述浏览器执行进程的程序名称是否为预设的命令行程序的程序名称,若是,则判定所述浏览器执行进程的程序为命令行程序。
17.根据权利要求16所述的装置,所述预设的命令行程序为以下任意一种 脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、系统命令行解释程序cmd. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe、文件执行程序mshta. exe hta和定时执行程序at. exe。
18.根据权利要求17所述的装置, 所述预设的命令行程序包括存在递归调用的命令行程序和不存在递归调用的命令行程序两类; 所述存在递归调用的命令行程序包括系统命令行解释程序cmd. exe和定时执行程序at. exe ; 所述不存在递归调用的命令行程序包括脚本语言解释器Wscript. exe、动态链接库注册程序Regsvr32. exe、文件执行程序rundll32. exe dll、脚本语言解释器cscript. exe和文件执行程序mshta. exe hta。
19.根据权利要求15或18所述的装置,所述参数获取模块包括 第一获取单元,用于当所述命令行程序为不存在递归调用的命令行程序时,通过CommandLineToArgvff函数获取命令行程序运行的命令行参数。
20.根据权利要求15或18所述的装置,所述参数检测模块包括 第一检测单元,用于当所述命令行程序为不存在递归调用的命令行程序时,遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径; 第一确定单元,用于当第一检测单元获取到完整的文件路径,确定所述命令行程序存在恶意命令行参数。
21.根据权利要求15或18所述的装置,所述参数获取模块包括 第二获取单元,用于当所述命令行程序为存在递归调用的命令行程序时,根据所述命令行程序中的分隔字符获取命令行程序运行的命令行参数。
22.根据权利要求15或18所述的装置,所述参数检测模块包括 第二检测单元,用于当所述命令行程序为存在递归调用的命令行程序时,遍历所述命令行程序的命令行参数,利用GetLongPathNameW函数检测所述命令行参数,获取执行所述命令行程序的文件路径; 第二确定单元,用于当第二检测单元获取到完整的文件路径时,确定所述命令行程序存在恶意命令行参数; 第三确定单元,用于第二检测单元当不能获取到完整的文件路径时,判断所述命令行参数中是否包括用于标识该命令行程序的字符,若是,则确定所述命令行程序存在恶意命令行参数。
23.根据权利要求15所述的装置,还包括 黑白名单检测模块,用于在程序检测模块检测所述浏览器执行进程的程序是否为命令行程序之前,检测所述浏览器执行进程的程序是否为黑名单程序或者白名单程序; 当所述浏览器执行进程的程序为黑名单程序时,所述拦截模块阻止所述进程的执行;当所述浏览器执行进程的程序为白名单程序时,所述程序检测模块检测所述浏览器执行进程的程序是否为命令行程序。
24.—种客户端设备,包括如上述权利要求15至23任一所述的拦截网页攻击的装置。
全文摘要
本发明公开了一种拦截网页攻击的方法、装置和客户端设备,以解决网页攻击通过运行命令行程序而绕过黑白名单的拦截,最后成功执行恶意程序的问题。其中,所述方法包括获取浏览器执行进程的程序;检测所述浏览器执行进程的程序是否为命令行程序;当所述浏览器执行进程的程序为命令行程序时,获取所述命令行程序运行的命令行参数;对所述命令行程序的命令行参数进行分析,检测所述命令行程序是否存在恶意命令行参数;当所述命令行程序存在恶意命令行参数时,阻止所述进程的执行。本发明提高了网页浏览的安全性,能够更加有效地拦截网页的恶意攻击。
文档编号H04L29/06GK102916937SQ20121033555
公开日2013年2月6日 申请日期2012年9月11日 优先权日2012年9月11日
发明者宋申雷, 刘起, 肖鹏 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1