使用正则表达式签名来去混淆脚本化语言以供网络入侵检测的制作方法

文档序号:11842817阅读:224来源:国知局
使用正则表达式签名来去混淆脚本化语言以供网络入侵检测的制作方法与工艺

脚本化语言是在运行时被解译(interpret)而不是被编译(compile)的高级编程语言。例如,脚本语言可以被嵌入在超文本标记语言(“HTML”)内,并且当由客户端和/或服务器解译时,可以将功能添加到网页。脚本化语言也可能包含在被解译时可以危害客户端和/或服务器的安全性和/或完整性的恶意代码。



技术实现要素:

根据一些可能的实施方式,一种设备可以接收数据,标识与数据相关联的上下文,并且在数据内标识与上下文相关联的脚本。该设备可以解析脚本以标识令牌,基于令牌形成节点,并且使用节点来组装语法树。该设备可以重命名与节点相关联的一个或者多个标识符,并且基于重命名一个或者多个标识符之后的语法树来生成与脚本相关联的经标准化的文本。该设备可以确定经标准化的文本是否与正则表达式签名匹配以及基于确定经标准化的文本是否与正则表达式签名匹配来处理数据。该设备在经标准化的文本与正则表达式签名匹配时,可以通过第一过程处理数据,或者在经标准化的文本与正则表达式签名不匹配时,通过第二过程处理数据。第一过程与第二过程不同。

根据一些可能的实施方式,一种方法可以包括由设备从端点设备接收数据,由该设备从数据中提取脚本化代码,以及由该设备生成具有空白和标识符的、与脚本化代码对应的经标准化的脚本。该方法可以包括:由该设备根据标准化方案来格式化经标准化的脚本的空白,并且由该设备根据经标准化的方案来重命名经标准化的脚 本的标识符。该方法可以包括:由该设备确定经标准化的脚本是否与签名匹配,并且由该设备基于由该设备确定经标准化的脚本是否与签名匹配、来选择性地向与数据相关联的另一个端点设备发送数据。该方法可以包括基于确定经标准化的脚本与签名不匹配而由该设备向另一个端点设备发送数据,或者基于确定经标准化的脚本与签名匹配而不由该设备向另一个端点设备发送数据。

根据一些可能的实施方式,一种存储指令的计算机可读介质可以包括多条指令,这些指令在由与设备相关联的一个或者多个处理器执行时,使得一个或者多个处理器接收数据,标识被包含在数据中的可执行代码,在环境内执行可执行代码,以及基于可执行代码的执行而生成跟踪。多条指令可以进一步使得一个或者多个处理器基于跟踪而生成列表,该列表标识由可执行代码执行的一个或者多个函数、以及与执行一个或者多个函数中的一个函数相关联的顺序、执行计数、自变量或者返回值。多条指令可以进一步使得一个或者多个处理器基于跟踪、通过用备选部分替换可执行代码的一部分来生成经优化的代码,该部分和备选部分关于在执行期间与环境交互是等同的。多条指令可以进一步使得一个或者多个处理器基于空白标准化方案来修改被包含在经优化的代码中的空白,基于标识符标准化方案来修改被包含在经优化的代码中的标识符,以及提供用于对代码签名进行匹配的经优化的代码,以确定可执行代码是否是恶意,该经优化的代码具有根据相应的空白标准化方案和标识符标准化方案而修改的空白和标识符。代码签名可以与确定可执行代码是否是恶意相关联。多条指令可以进一步使得一个或者多个处理器提供用于对列表签名进行匹配的列表,以确定可执行代码是否是恶意,该列表签名可以与确定可执行代码是否是恶意相关联。

附图说明

图1是本文所描述的示例实施方式的概览图;

图2是本文所描述的系统和/或方法可以在其中被实施的示例环 境图;

图3是图2的一个或者多个设备的示例组件图;

图4是用于使用正则表达式签名去混淆脚本化语言以供网络入侵检测的示例过程的流程图;以及

图5A-图5H是与在图4中示出的示例过程有关的示例实施方式图。

具体实施方式

示例实施方式的以下详细描述指的是附图。不同附图中的相同参考标号可以标识相同或者相似的元件。

许多计算环境采用脚本化语言,诸如JavaScript、ECMAScript、VBScript、Python、Perl、PHP等,来提供功能。特别地,脚本化语言形成动态超文本标记语言(“DHTML”)和异步JavaScript+XML(“AJAX”)的关键组件,其使得用户能够享受交互式的和动态的web浏览体验。(例如,用于智能电话、平板计算机等的)移动应用程序的开发者可以将脚本包括在他们的产品中。不幸的是,可执行脚本的流行度已经促进某些个人和参与者创建和发布恶意脚本,恶意脚本的目的是破坏、劫持和/或得益于执行脚本的设备。这些脚本可以利用设备的软件和/或硬件中的弱点在看似无害的活动期间自动地执行(例如,通过感染受该设备信任和/或受该设备的用户信任的服务器),和/或恶意代码的作者(们)可以例如通过社交工程而欺骗用户执行恶意脚本。恶意脚本可以包括例如病毒、恶意软件、间谍软件、勒索软件、信息窃取(例如,与两个设备之间的连接相关联的敏感会话数据)等。

为了进一步使问题复杂化,恶意脚本的作者(“脚本作者”)通常采用一个或者多个混淆技术来放置被恶意软件/反病毒扫描器检测。例如,脚本作者可以使空白(whitespace)和/或标识符(例如,私有函数和/或变量的名称)随机化,添加软件臃肿(bloat)(例如,脚本中的不影响有意义的脚本行为的部分、诸如注释或者基于已知 值的逻辑切换——例如,x=1;if(x==1)then{..}),使用备选的手段来表示常量值(例如,用数学操作替代数字),将一个函数用作另一个的替代(例如,将本地函数用作用于可疑远程函数或者对象方法的别名),在运行时分割字符串并且联接字符串,和/或在运行时编码脚本的一部分并且解码该部分。在特定脚本中,不止一个混淆技术可以被使用,并且一些技术可以被分层(例如,经加密的内容可以使用不同密钥来再被加密)。此外,脚本作者可以使用工具来使混淆技术的使用随机化,以使得一个恶意脚本可以以许多不同的混淆形式而存在。

本文所描述的实施方式通过提供用于拦截通过网络向与用户相关联的端点设备发送的含脚本的数据的方法和设备、通过标准化并且去混淆被包含在数据内的脚本、通过将经标准化/去混淆的脚本与关联于恶意脚本的正则表达式签名进行比较、并且通过在脚本与签名匹配时防止脚本被递送到端点设备,可以辅助用户减轻由恶意脚本造成的威胁。通过这种方式,用户的端点设备以及与网络相关联的其他端点设备可以避免由已经被标识为恶意的脚本所感染。此外,该方法和设备可以辅助用户分析脚本,以便确定脚本是否是恶意,并且如果是的话,确定如何创建正则表达式签名以指导该设备检测并且扣留脚本。

图1是本文所描述的示例实施方式100的概览图。例如,假定第一端点向第二端点发送数据(例如,使用超文本传输协议(HTTP))。在到达第二端点之前,数据经过网络设备(例如,入侵检测和预防系统、防火墙、代理服务器等)。网络设备从数据内标识并且提取脚本。网络设备进一步在仿真环境中使脚本标准化,去混淆并且跟踪脚本,以生成经标准化/去混淆的脚本以及脚本的对系统/全局/应用程序接口(API)方法的调用的列表(例如,不是由脚本定义的、但是是由环境提供以允许脚本与环境交互的函数)。网络设备然后将经标准化/去混淆的脚本与关联于脚本的签名(例如,正则表达式)进行匹配、和/或将脚本的方法调用的列表与关联于该 方法调用的列表的签名进行匹配。如果不存在匹配,则网络设备可以假定数据是良性(benign)并且向第二端点路由该数据。如果存在匹配,路由器可以将脚本标识为恶意脚本,可以拒绝向第二端点路由该数据,和/或可以响应于恶意脚本的检测而采取一些动作。

通过这种方式,网络设备可以保护第二端点避免之前已经被定义为恶意脚本。进一步地,网络设备可以通过拒绝路由包含恶意脚本的数据并且可能的话提醒向用户该检测(例如,通过日志或者电子邮件),而防止恶意脚本的进一步传播。通过跟踪脚本并且生成脚本的方法调用的列表,网络设备可以化简生成针对新的威胁的签名的任务。

图2是本文所描述的系统和/或方法可以在其中被实施的示例环境200的图。如图2中所示出的,环境200可以包括一组发送端点设备210-1、…、210-M(M≥1)(以下被统称为“发送端点设备210”和被单独地称为“发送端点设备210”)、一组接收端点设备220-1、…、220-N(N≥1)(以下被统称为“接收端点设备220”和被单独地称为“接收端点设备220”)、网络设备230、发送网络240和/或接收网络250。环境200的设备可以经由有线连接、无线连接或者有线连接和无线连接的组合进行互连。

发送端点设备210和/或接收端点设备220可以包括能够在网络(例如,发送网络240和/或接收网络250)上接收和/或提供信息、和/或能够生成、存储和/或处理在网络上接收的和/或提供的信息的一个或者多个设备。例如,发送端点设备210和/或接收端点设备220可以包括计算设备(诸如,膝上型计算机、平板计算机、手持式计算机、台式计算机、移动电话(例如,智能电话、无线电话等))、网络设备(例如,路由器、网关、防火墙、集线器、网桥等)、服务器设备、或者类似的设备。发送端点设备210和/或接收端点设备220可以充当用于与另一个发送端点设备210和/或接收端点设备220通信的端点(例如,源和/或目的地)。例如,第一发送端点设备210和/或接收端点设备220可以(例如,经由网络设备230、发送网络 240和/或接收网络250)向第二发送端点设备210和/或接收端点设备220提供信息。例如,发送端点设备210可以向接收端点设备220发送包含一个或者多个脚本的数据。

网络设备230可以包括能够处理和/或传递在发送端点设备210和/或接收端点设备220之间的数据的一个或者多个设备(例如,一个或者多个流量传递设备)。例如,网络设备230可以包括防火墙、路由器、网关、交换机、集线器、网桥、反向代理、服务器(例如,代理服务器)、安全设备、入侵检测设备、负载平衡或者类似的设备。例如,网络设备230可以基于确定数据内的脚本是否与签名匹配来选择性地路由在发送端点设备210与接收端点设备220之间的数据。

发送网络240和/或接收网络250可以包括一个或者多个有线网络和/或无线网络。例如,发送网络240和/或接收网络250可以包括蜂窝网络(例如,长期演进(LTE)网络、3G网络、码分多址(CDMA)网络等)、公共陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网络(例如,公共交换电话网络(PSTN))、私有网络、自组织网络、内联网、因特网、基于光纤的网络、云计算网络和/或这些网络或另一种类型的网络的组合。虽然示出为分离的网络,但是发送网络240和接收网络250可以被实现为单个网络。

图2中所示出的设备和网络的数量和布置被提供作为示例。在实践中,可以存在除了图2中所示出的那些之外的附加设备和/或网络、较少的设备和/或网络、不同的设备和/或网络、或者不同布置的设备和/或网络。进一步地,图2中所示出的两个或者更多设备可以在单个设备内被实施,或者图2中所示出的单个设备可以被实现为多个分布式的设备。附加地或者备选地,环境200的一个设备集合(例如,一个或者多个设备)可以执行描述为由环境200的另一个设备集合所执行的一个或者多个功能。

图3是设备300的示例组件图。设备300可以对应于发送端点 设备210、接收端点设备220和/或网络设备230。在一些实施方式中,发送端点设备210、接收端点设备220和/或网络设备230可以包括一个或者多个设备300和/或设备300的一个或者多个组件。如图3中所示出的,设备300可以包括总线310、处理器320、存储器330、存储组件340、输入组件350、输出组件360以及通信接口370。

总线310可以包括允许在设备300的组件之间进行通信的组件。处理器320可以包括解译和/或执行指令的处理器(例如,中央处理器(CPU)、图形处理单元(GPU)、加速处理单元(APU)等)、微处理器、和/或任何处理组件(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)。存储器330可以包括存储由处理器320使用的信息和/或指令的随机访问存储器(RAM)、只读存储器(ROM)和/或另一类型的动态或者静态存储设备(例如,闪存、磁存储器、光存储器等)。

存储组件340可以存储与设备300的操作和使用有关的信息和/或软件。例如,存储组件340可以包括硬盘(例如,磁盘、光盘、磁光盘、固态盘等)、紧密盘(CD)、数字通用盘(DVD)、软盘、盒式磁带机、磁带和/或任何类型的计算机可读介质,连同对应的驱动器。

输入组件350可以包括允许设备300诸如经由用户输入(例如,触摸屏显示器、键盘、小型键盘、鼠标、按钮、开关、麦克风等)接收信息的组件。附加地或者备选地,输入组件350可以包括用于感测信息的传感器(例如,全球定位系统(GPS)组件、加速计、陀螺仪、制动器等)。输出组件360可以包括提供来自设备300的输出信息的组件(例如,显示器、扬声器、一个或者多个发光二极管(LED)等)。

通信接口370可以包括使得设备300能够(诸如,经由有线连接、无线连接或者有线连接和无线连接的组合)与其他设备通信的类收发器组件(例如,收发器、分离的接收器和发射器等)。通信接口370可以允许设备300从另一个设备接收信息和/或向另一个设 备提供信息。例如,通信接口370可以包括以太网接口、光接口、同轴接口、红外接口、射频(RF)接口、通用串行总线(USB)接口、Wi-Fi接口、蜂窝网络接口等。

设备300可以执行一个或者多个本文所描述的过程。设备300可以响应于处理器320执行由计算机可读介质(诸如、存储器330和/或存储组件340)所存储的软件指令而执行这些过程。计算机可读介质在本文中被定义为非瞬态的存储器设备。存储器设备包括在单个物理存储设备内的存储空间或者传遍多个物理存储设备的存储空间。

软件指令可以从另一个计算机可读介质或经由通信接口370从另一个设备中被读入到存储器330和/或存储组件340中。当被执行时,存储在存储器330和/或存储组件340中的软件指令可以使得处理器320执行本文所描述的一个或者多个过程。附加地或者备选地,硬连线的电路可以替代或者结合软件指令被使用,以执行本文所描述的一个或者多个过程。因此,本文所描述的实施方式并不限于硬件电路和软件的任何特定的组合。

图3中所示出的组件的数量和布置被提供作为示例。在实践中,设备300可以包括除了图3中所示出的那些之外的附加组件、较少的组件、不同的组件或者不同布置的组件。附加地或者备选地,设备300的一个组件集合(例如,一个或者多个组件)可以执行描述为由设备300的另一个组件集合执行的一个或者多个功能。

图4是用于使用正则表达式签名去混淆脚本化语言以供网络入侵检测的示例过程400的流程图。在一些实施方式中,图4的一个或者多个过程框可以由网络设备230执行。在一些实施方式中,图4的一个或者多个过程框可以由另一个设备或者与网络设备230分离的或者包括网络设备230的一组设备(诸如发送端点设备210和/或接收端点设备220)来执行。

如图4中所示出的,过程400可以包括接收数据(框405)。例如,网络设备230可以从发送端点设备210和/或接收端点设备220 接收数据。网络设备230可以在执行进一步分析时缓冲接收到的数据。通过这种方式,网络设备230可以获得数据,从脚本可以从该数据中被提取和分析。

如图4中进一步所示出的,过程400可以包括在数据内标识上下文以及与上下文相关联的脚本(框410)。例如,上下文可以包括与文档(例如,HTML、XML、PDF、电子邮件)相关联的数据、应用程序(例如,移动/嵌入式应用程序、web浏览器、或者其他脚本引擎)等。脚本可以包括嵌入式脚本、来自另一个源的链接脚本等。在一个示例中,上下文可以是具有HTML元素的HTML网页,并且脚本可以是在<script></script>标签内定义的JavaScript元素。通过这种方式,网络设备230可以确定脚本是否和/或如何与签名匹配。

如图4中进一步所示出的,过程400可以包括基于脚本生成语法树并且使语法树标准化(框415)。例如,网络设备230可以解析脚本,标识有效令牌,以及基于所标识的令牌而用节点填充抽象语法树(“AST”)。网络设备230可以进一步基于节点结构、通过根据经标准化的命名方案来重命名本地标识符(即,可以被改变而不影响脚本的解译的标识符)来使语法树标准化(例如,通过编号/排列节点,并且基于与节点和/或节点的类型相关联的编号,将与节点相关联的标识符替换为具有经标准化的字符串模式的新的标识符)。网络设备230也可以在创建语法树时移除空白。例如,网络设备230可以标识并且删除不是解析脚本所必要的任何空白。

如图4中进一步所示出的,过程400可以包括基于语法树生成经标准化的脚本(框420)。例如,网络设备230可以遍历根据脚本生成的经标准化的语法树的每个节点,并且使用经标准化的命名方案来将该脚本记录为经标准化的脚本。网络设备230可以通过使用特定空白插入方案来使经标准化的脚本的空白标准化(例如,插入保留脚本的语法结构的最小量的空白)。通过将经标准化的脚本与类似的经标准化的脚本签名进行比较,网络设备230可以执行更精确的、独立于标识符的匹配,以加速基于正则表达式的签名匹配算 法的执行。

如图4中进一步所示出的,过程400可以包括确定是否执行动态去混淆(框425)。例如,网络设备230可以基于标识与执行动态去混淆相关联的条件或者条件集合的配置信息,来确定是否执行动态去混淆。例如,条件可以包括Boolean标志的状态,该状态可以例如基于用户输入(例如,在分析新的脚本以确定新的脚本是否是恶意的情况下)而被设置为真或假。附加地或者备选地,条件可以包括混淆的等级和/或标记—诸如满足混淆等级阈值。例如,网络设备230可以基于启发式(heuristic)算法(例如,通过确定脚本的部分是否可能要被编码)或者基于初步的签名匹配(例如,通过确定脚本是否匹配与混淆技术相关联的一个或者多个正则表达式签名)来确定混淆的等级和/或标记。附加地或者备选地,条件可以包括资源——诸如处理能力、网络吞吐量/延迟、和/或存储器空间——的可用性。附加地或者备选地,条件可以基于被包括在数据中的信息和/或与数据相关联的信息,诸如发送者、接收者、上下文等。附加地或者备选地,网络设备230在执行动态去混淆之前(例如,如框455中所描述的),基于失败地尝试将脚本与签名匹配,可以确定执行脚本的动态去混淆。动态去混淆可以提升去混淆的等级并且因此可以提升恶意脚本检测的可能性。

如图4中进一步所示出的,如果动态去混淆要被执行(框425=是),则过程400可以包括基于上下文生成对象模型(框430)。例如,网络设备230可以标识API和/或对象模型,该API和/或对象模型指定脚本要如何被解译以及脚本可以如何与它的环境进行交互。附加地或者备选地,网络设备230可以标识脚本在运行时可以与其进行交互的、被包含在数据内的信息,诸如元素、环境变量等。例如,对象模型可以是HTML文档对象模型(“DOM”),其包括与例如web浏览器环境相关联的各种方法、属性以及规则。DOM可以包括映射数据的DOM树,数据例如被包含在与脚本相关联的一个或者多个HTML/XML/CSS文件内的HTML和/或脚本元素以及与元素 相关联的值。通过生成对象模型,网络设备230可以提供仿真环境以跟踪经标准化的脚本。

如图4中进一步所示出的,过程400可以包括在仿真对象模型环境中跟踪经标准化的脚本的解译(框435)。例如,网络设备230可以采用脚本解译/调试引擎,该脚本解译/调试引擎仿真与所生成的对象模型相关联的环境。如果对象模型是DOM,则网络设备230可以仿真例如web浏览器环境。备选地或者附加地,对象模型可以与不同的上下文(例如,PDF、电子邮件、嵌入式/移动应用程序等)相对应,并且网络设备230可以类似地仿真与该环境相关联的对象模型。备选地,网络设备230可以采用不与特定环境对应但是仍然使用对象模型内的本地元素的仿真模型。

网络设备230可以替代或者实施备选函数来替换系统/全局/潜在危险的方法/函数。备选地,网络设备可以在沙箱环境中解译/执行脚本,以观察脚本的执行的结果和/或跳过脚本的部分的解译。基于解译脚本,网络设备230可以生成事件的跟踪(例如,函数入口/出口点、通过的自变量、返回的值、对象方法/函数的调用、交互/修改模型的元素、或者改变与脚本变量/对象元素相关联的值)。来自跟踪的输出向网络设备230提供将难以获得或者难以由静态分析获得的信息,并且该信息可以用于去混淆脚本、对签名进行匹配、以及在被执行时标识脚本的行为。

如图4中进一步所示出的,过程400可以包括基于跟踪生成方法调用列表(框440)。例如,网络设备230可以基于跟踪来标识对与对象模型(例如,对象方法)进行交互的函数的所有调用/引用。网络设备230可以进一步生成方法调用列表,该方法调用列表包括对那些函数的所有调用的顺序列表、对那些函数的调用的数量、以及传到那些函数的自变量。通过这种方式,网络设备230可以依据脚本的与它的环境的交互来表征脚本。

如图4中进一步所示出的,过程400可以包括确定调用列表是否与签名匹配(框445)。例如,网络设备230可以从被确定为与一 个或者多个恶意脚本相关联的调用列表相匹配的正则表达式签名的列表中选择正则表达式签名,并且确定调用列表是否与该正则表达式签名匹配。网络设备230可以针对一个或者多个附加正则表达式签名而重复这个匹配过程(例如,迭代地),以确定调用列表是否匹配与一个或者多个附加正则表达式签名中的一个附加正则表达式签名相关联的调用列表。

如图4中进一步所示出的,如果调用列表与签名不匹配(框445=否),则过程400可以包括基于跟踪来优化经标准化的脚本(框450)。例如,网络设备230可以从经标准化的脚本中标识并且移除不影响有意义的脚本行为的经标准化的脚本的部分(例如,无用代码)。附加地或者备选地,网络设备230可以标识并且移除多余的逻辑切换(例如,基于在运行时将总是或者从不被解译的常数表达式的循环),该多余的逻辑切换备选地被表示为常数值、返回常数值的函数、和分割的字符串等。网络设备230基于跟踪,也可以解密脚本的加密部分并且标识替代/别名函数。网络设备230可以以迭代的方式执行这个优化。备选地或者附加地,网络设备230可以在表示脚本的语法树上执行该优化,并且在优化语法树之后,从该语法树中创建经优化的脚本。

如图4中进一步所示出的,过程400可以包括确定经标准化的脚本(具有或者不具有基于附加跟踪的优化)是否与签名匹配(框455)。例如,网络设备230可以从被确定为匹配一个或多个经标准化的恶意脚本的正则表达式签名的列表中选择正则表达式签名,并且确定经标准化的脚本是否与该正则表达式签名匹配。网络设备230可以针对一个或者多个附加正则表达式签名而重复这个匹配过程(例如,迭代地),以确定经标准化的脚本是否匹配与一个或者多个附加的正则表达式签名中的一个附加正则表达式签名相关联的恶意脚本。

如图4中进一步所示出的,如果经标准化的脚本与签名不匹配(框455=否),则过程400可以包括确定脚本是否恶意地表现(框 460)。例如,尽管没有匹配已知的签名,网络设备230仍可确定(例如,基于用户输入、跟踪、调用列表、经优化的/经标准化的脚本、和/或在配置信息中标识的条件)脚本是否恶意地表现。例如,网络设备230可以基于跟踪来确定在脚本与所仿真的对象模型环境之间的一个或者多个交互,该仿真对象模型环境与一个或者多个恶意行为关联(例如,基于启发式模型)。

如图4中进一步所示出的,如果经标准化的脚本没有恶意地表现(框460=否),则过程400可以包括将数据处理为具有良性的脚本(框465)。例如,网络设备230可以实施/执行/存储接收到的数据和/或向它的预定接收者发送该数据。

如图4中进一步所示出的,如果经标准化的脚本恶意地表现(框460=是),则过程400可以包括修改和/或生成一个或者多个签名以匹配经标准化的脚本和/或调用列表(框470)。例如,网络设备230通过向用户提供包含该脚本、经标准化的/优化的脚本、跟踪和/或调用列表的数据的一部分,可以辅助用户针对新的形式的恶意脚本而开发新的签名、和/或修改现有的签名。附加地或者备选地,网络设备230可以自动地(例如,不要求来自用户的输入)生成新的签名和/或修改现有的签名,以将该脚本标识为恶意的。通过这种方式,网络设备230可以更新现有的签名和/或创建新的签名以将脚本标识为是恶意的。

如图4中进一步所示出的,如果经标准化的脚本或者调用列表匹配签名(框445=是或者框455=是)或者脚本恶意地表现(框460=是),则过程400可以包括将数据处理为具有恶意脚本(框475)。例如,网络设备230可以删除、隔离或者以其他方式防止数据到另一个设备(例如,到与分析和/或处理恶意脚本相关联的接收端点设备220)的运行、访问和/或传递。附加地或者备选地,网络设备230可以通知用户关于恶意脚本的检测(例如,通过电子邮件、日志条目和/或用于由用户/设备的访问/到用户/设备的显示的其他消息)。附加地或者备选地,网络设备230可以生成用于匹配由网络设备230 接收的后续数据的一个或者多个附加签名。例如,网络设备230可以生成用于匹配与特定网络、设备、协议、内容和/或用户相关联的数据的签名(例如,以使得接收网络250与特定发送端点210隔离)。

虽然图4示出过程400的示例框,但是在一些实施方式中,过程400可以包括除了图4中所描绘那些之外的附加的框、较少的框、不同的框或者被不同地布置的框。附加地或者备选地,过程400的两个或者更多个框可以并行地被执行。

图5A-图5H是与图4中所示出的示例过程400有关的示例实施方式500的图。图5A-图5H示出了用于使用正则表达式签名去混淆用于网络入侵检测的脚本化语言的过程的示例。

如图5A中所示出的,例如实施方式500,假定第一端点(例如,发送端点设备210)响应于来自第二端点(例如,接收端点设备220)接收端点设备220的HTTP请求(“GET data.html HTTP/1.0|From:endpoint2@network2|User-Agent:HTTPTool/1.0”),向接收端点设备220发送HTTP数据(“HTTP/1.0200OK|Content-Type:text/html”和附加的内容)。进一步假定网络设备(例如,网络设备230)在第一端点与第二端点之间的网络位置处被定位。进一步假定网络设备作为入侵检测和预防系统的一部分,拦截并且分析在第一端点与第二端点之间传递的数据。通过这种方式,网络设备可以接收在第一端点与第二端点之间传递的数据,以确定数据是否包含恶意脚本语言。

如图5B中所示出的,例如实施方式500,假定网络设备标识被包含在数据(从第一端点设备接收的HTTP响应)内的脚本(JavaScript)和与脚本相关联的上下文(HTML网页)。进一步假定网络设备使用合适的解析器来标识有效的脚本令牌(关键词、标识符、标点记号、文字等)。通过这种方式,网络设备可以开始使脚本标准化以供标识。

如图5C所示出的,例如实施方式500,假定网络设备通过基于从脚本中标识的令牌来创建节点,生成抽象语法树。进一步假定网 络设备基于经标准化的命名方案(例如,针对变量的“v”加序列号和针对函数的“f”加序列号)和与变量/函数相关联的节点的位置(以便对从根(root)到分支(branch)的遍历的顺序进行编号)、来重命名本地变量/函数。通过这种方式,网络设备可以使用AST来减少存储大小和在通过变量/函数重命名来减轻混淆时的处理负载。

如图5D中所图示的,例如实施方式500,假定网络设备通过遍历AST的节点来生成具有经标准化的标识符的经标准化的脚本(如关于图5C所描述的)。进一步假定当生成经标准化的脚本时,网络设备根据用于插入空白的特定方案来插入空白(例如,指导网络设备仅插入维护脚本的解译所要求的最小的空白),得到具有经标准化的空白的经标准化的脚本。通过这种方式,在使命名方案标准化以战胜重命名混淆技术时,网络设备可以使用比在网络设备要使用原始脚本用于匹配时更少的空间和更少的处理器资源、来将经标准化的脚本与正则表达式签名进行匹配。

也如图5D中所示出的,例如实施方式500,假定网络设备已经确定动态去混淆要被执行。进一步假定网络设备标识API,并且基于API来生成表示HTML上下文并且包括经标准化的JavaScript的DOM树。通过这种方式,网络设备可以利用适当的DOM来发起仿真器,用于运行脚本的所追踪的解译。

如图5E所示出的,例如实施方式500,假定网络设备基于DOM,在所仿真的环境内,使用仿真器来解译经标准化的脚本。进一步假定网络设备230在跟踪中追踪调用、自变量、返回值、DOM树、变量值和/或其他信息。网络设备使用仿真器,可以确定本地变量表示分割的文字字符串并且可以将分割的字符串的联接评估为“object”、“classid”以及“clsid:55963676-2F5E-4BAF-AC28-CF26AA587566”,确定出fromCharCode函数利用文字数值参数进行操作并且可以将函数的返回值评估为“http://badsite”,以及确定出JavaScript脚本在DOM树中创建具有以前面提及的classid和url作为参数的新的对象。

如图5F中所示出的,假定网络设备基于跟踪来优化AST以联接 所标识的分割的文字字符串、将常数函数替换为文字等同体、传播常数以及用调用的函数来替代本地别名函数,这些本地别名函数调用所调用的函数。假定网络设备基于优化的经标准化的AST来生成优化的经标准化的脚本。通过这种方式,网络设备可以进一步减少匹配过程的签名的存储器和/或处理器要求,以及恢复脚本中的数据混淆的一些形式以减少漏报的几率(即,不将混淆的恶意脚本与签名进行匹配)。

进一步假定网络设备基于跟踪来生成方法调用列表。进一步假定该方法调用列表将三种外部的方法标识为已经由脚本调用以与DOM进行交互:“createElement”、“setAttribute”和“fromCharCode”以及与每个相关联的调用计数(对于所有三个都是1)和被传递到每个的自变量(对于“createElement”和“setAttribute”是内联的(inline)/没有自变量,对于fromCharCode是14个数值)。网络设备通过该生成方法调用列表,可以提供另一个上下文,针对该另一个上下文签名可以被生成/被匹配以标识恶意脚本。

如图5G所示出的,例如实施方式500,假定网络设备在不具有动态去混淆的情况下确定经标准化的脚本是否与第一正则表达式签名(“REGEX1=var f1=document\.createElement\(\(function\(\){var var1=["]”)匹配。进一步假定网络设备在经标准化的JavaScript的开始处匹配第一正则表达式签名,并且因此确定数据要被视为具有恶意脚本。

如图5G中进一步所示出的,假定网络设备确定具有动态去混淆的经标准化的脚本是否与第二正则表达式签名(“REGEX2=55963676-2F5E-4BAF-AC28-CF26AA587566”)或者第三正则表达式签名(“REGEX3=badsite”)匹配。进一步假定网络设备将第二正则表达式签名和第三正则表达式签名与经标准化的动态去混淆的脚本匹配,并且因此确认数据要被视为具有恶意脚本。

如图5G进一步所示出的,假定网络设备确定方法调用列表是否与第四正则表达式签名(“REGEX4=fromCharCode[0-9]+\<[0-9]+ 数值”)匹配。进一步假设网络设备将第四正则表达式签名与方法调用列表匹配,并且因此确认数据要被视为具有恶意脚本。

通过这种方式,网络设备基于匹配一个或者多个脚本和/或方法调用列表的一个或者多个正则表达式签名,可以标识和/或确认恶意代码的标识。如图5G中所示出的,网络设备基于签名是否要被匹配到非动态去混淆的经标准化的脚本、动态去混淆经标准化的脚本或者到方法调用列表,可以选择特定正则表达式签名或者特定正则表达式签名的集合。

如图5H中所示出的,网络设备230基于确定脚本是否与用于恶意脚本的签名匹配,可以删除/隔离从发送端点设备210接收的数据(如果脚本与签名匹配)或者向接收端点设备220递送数据(如果脚本不与签名匹配)。通过这种方式,当减轻传递恶意脚本的风险时,网络设备230可以使得接收端点设备220无缝地向和从发送端点设备210(以及其他潜在危险的/不信任的源)发送和接收数据。

如上面所指出的,图5A-图5H仅被提供作为示例。其他示例也是可能的,并且可以与参考图5A-图5H所描述的不同。

本文所描述的实施方式提供入侵检测和预防系统,该入侵检测和预防系统检查通过设备传递的数据,标识脚本和与脚本相关联的上下文,使空白和标识符命名标准化,去混淆脚本,在仿真的环境中跟踪脚本的解译,并且将经标准化的/去混淆的脚本以及其他跟踪信息与用于已经被标识为是恶意的脚本的正则表达式签名进行匹配。本文所描述的实施方式也可以用来辅助用户生成要与脚本匹配的正则表达式签名。

前述公开内容提供了图示和说明,但是并不旨在将实施方式穷尽或者限制到所公开的精确形式。根据上面的公开内容修改和变型是可能的或者可以实施方式的实践中被获得。

如本文所使用的,术语组件旨在被广义地解译为硬件、固件和/或硬件和软件的组合。

一些实施方式在本文中被描述与阈值有关。如本文所使用的, 满足阈值可以是指一个值大于阈值、多于阈值、高于阈值、大于或者等于阈值、小于阈值、少于阈值、低于阈值、小于或者等于阈值、等于阈值等。

将理解的是,本文所描述的系统和/或方法可以以硬件、固件或者硬件和软件的组合的不同的形式被实施。用于实施这些系统和/或方法的实际专门的控制硬件或者软件并不限于实施方式。因此,系统和/或方法的操作和行为在本文中被描述,而没有对特定软件代码的参考——应当理解软件和硬件基于本文的描述,可以被设计用于实施系统和/或方法。

虽然特征的特定组合在权利要求书中被列举和/或在说明书中被公开,但是这些组合并不旨在限制可能实施方式的公开内容。事实上,这些特征的许多特征可以以未在权利要求书中具体列举的和/或在说明书中公开的方式被组合。虽然下面所列出的每个从属权利要求仅直接依赖一个权利要求,但是可能实施方式的公开内容包括每个从属权利要求与权利要求集中的每个其他权利要求相结合。

本文所使用的元件、动作或指令不应当被解译为关键的或者必要的,除非明确地被描述为如此。通用,如本文所使用的,冠词“一”和“一个”旨在包括一个或者多个项目,并且可以与“一个或者多个”交换地被使用。进一步地,如本文所使用的,术语“集合”旨在包括一个或者多个项,并且可以与“一个或者多个”交换地被使用。当规定只有一个项的地方,术语“一个”或者类似的语言被使用。同样地,如本文所使用的,术语“具有”、“有”、“含有”等旨在开放的术语。进一步地,短语“基于”旨在意味着“至少部分地基于”,除非另外明确地说明。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1