在SPDY连接上检测恶意软件的制作方法

文档序号:15576933发布日期:2018-09-29 05:42阅读:140来源:国知局

互联网流量的增长导致了名为spdy的修改的超文本传输协议(http)的发展。spdy协议提供对允许将多个并发数据流多路复用到端点和服务器之间的单传输控制协议(tcp)连接中的http的改进。因此,spdy协议允许多个数据流相互复用或交错并异步发送,而不是使用由先前的http使用的顺序过程(其中,数据流依次发送)。

附图说明

图1是本公开的示例系统的框图;

图2是本公开的装置的示例;

图3是在spdy连接上检测恶意软件的示例方法的流程图;

图4是在spdy连接上检测恶意软件的示例方法的另一个流程图;以及

图5是本公开的装置的另一个示例。

具体实施方式

本公开的特定实施方式用于检测spdy连接上的恶意软件的系统和方法。如上所述,spdy协议是对允许多个并发数据流被多路复用到单tcp连接中的http的改进。在传统的http协议中,数据流以顺序方式发送。因此,统一威胁管理(utm)设备可以一次分析一个数据包和整个文件。

然而,对于spdy协议,由于数据包被复用为单个数据流并且具有“优先级”支持,所以服务器可以交错与不同流相关联的数据包。因此,utm设备可能无法通过按顺序处理数据包的方式来针对恶意软件分析它们。因此,通过按顺序处理数据包针对恶意软件的检查的传统方法可能无法检测到恶意软件,并且随后恶意软件内容可能被传递给客户端。

本公开的特定示例提供了一种改进的utm设备,其针对复用为使用spdy协议的单个数据流的每个数据流生成子文本。因此,每个数据包可以被分析以检测恶意软件,并且在组合在相应的子文本中之后,整个文档可以被分析以检测恶意软件。

图1示出了本公开的示例系统100。系统100可以包括utm设备104、服务器106和客户端108。虽然图1中示出了单个utm设备104、单个服务器106和单个客户端108,但是应该注意,可以部署任何数量的utm设备104、服务器106和客户端108。

在一个示例中,utm设备104和服务器106可以位于互联网协议(ip)网络102内。ip网络102可以是任何类型的包网络(例如,互联网)。应当注意,为了便于说明,已经简化了ip网络102,并且ip网络102可以包括未示出的其他网络元件,例如网关、路由器、交换机、接入网络等。

在一个示例中,客户端108可以是任何类型的端点设备(例如,智能电话、膝上型计算机、台式计算机、平板电脑等)。客户端108可以通过有线或无线连接与服务器106建立tcp连接以请求数据。tcp连接可以是使用有序的syn-ack-data-fin顺序的状态性的ip连接。

在一个示例中,服务器106可以是托管(host)通过与客户端108的有线或无线连接可访问的网站、数据库或任何其他数据源的服务器。例如,服务器106可托管网站,并且客户端108可以建立与服务器106通信会话或tcp连接,以从服务器106请求和接收数据。

在一个示例中,客户端108可以使用连接110和112经由utm设备104建立与服务器106的tcp连接。在一个示例中,连接110和112可以是使用spdy协议的tcp连接。如上所述,spdy协议是对允许将多个数据流多路复用为单个数据流并通过单tcp连接异步发送的现有http协议的改进。例如,多个数据流请求可以被客户端108发送。使用传统的http协议,每个数据流请求将使用分立的tcp连接。然而,使用spdy协议,每个数据流可以通过单tcp连接在多路复用数据流中从服务器106发送到客户端108,导致数据更快地下载。

但是,如上所述,spdy协议可能会导致新的安全风险。如下所述,utm设备104可以位于服务器106和客户端108之间,以检查多路复用数据流内的数据包以检测恶意软件。

在一个实施方式中,utm设备104、服务器106和客户端108可以被部署为使用处理器和非暂时性计算机可读存储介质的计算机。非暂时性计算机可读存储介质可以存储由处理器执行以执行本文所述功能的指令。

图2示出了utm设备104的示例的框图。在一个示例中,utm设备104可以包括连接处理器202、子文本生成器204和恶意软件检测器206。在一个示例中,连接处理器202可以在客户端108和服务器106之间传递tcp消息,以建立使用spdy协议的tcp连接。在一个示例中,连接处理器202还可以与子文本生成器204进行通信,以将通过tcp连接传输的数据包提供给子文本生成器204用于分析。

在一个示例中,子文本生成器204可以包括存储器,其存储针对每个不同数据流生成的每个子文本。在一个示例中,每个数据流请求与流标识(id)相关联。子文本可以被定义为用于将数据包重新组合成相应的数据流的子文本生成器204的存储器中的临时缓冲器。例如,可以生成第一子文本以使用与流id1相关联的数据包来重组第一文件,可以生成第二子文本以使用与流id2相关联的数据包来重组第二文件,等等。

在针对恶意软件完全重新组合文件并分析之后,子文本可以被删除并且存储空间可以被释放,以针对不同数据流或流id号码生成新的子文本。在一个实施方式中,子文本生成器204可以基于在从客户端108发送到服务器106的初始数据流请求消息中提供的文件的大小来知道文件何时完整。因此,当特定子文本内的文件的大小与初始数据流请求中指示的文件的大小相同时,子文本生成器204可以知道文件已完整。

在一个示例中,子文本生成器204还可以对每个数据包和相应子文本内的完整数据包文件执行散列计算。在一个示例中,散列计算可以是对每个数据包的增量散列计算,直到对整个文件执行散列计算。可以将计算出的散列值提供给恶意软件检测器206,以确定数据包或完整的文件中是否存在恶意软件。在一个示例中,散列计算可以是消息摘要5(md5)散列计算和值。

在一个示例中,恶意软件检测器206可以包括高速缓存查找表和签名数据库。高速缓存查找表可以临时存储由子文本生成器204提供的散列值。高速缓存查找表可以向存储多个签名(例如,先前计算的与不同类型的恶意软件相关联的散列值)的签名数据库发送查询。签名数据库可以执行比较并提供对高速缓存查找的响应,指示是否找到匹配。

在一个示例中,如果在数据包或者完整文件中发现匹配,则恶意软件检测器206可以向连接处理器202发送通知,并且连接处理器202可以丢弃tcp连接。因此,整个文件以及与其他数据流相关联的其他数据包不被发送到客户端108。

图3示出了用于检测spdy连接上的恶意软件的示例方法300的流程图。在一个示例中,方法300的框可以由utm设备104或设备500执行。

在框302处,方法300开始。在框304处,方法300通过单传输控制协议(tcp)连接从服务器接收复用数据流,其中该单传输控制协议连接使用spdy协议,其中复用数据流包含与寻址到客户端的多个不同数据流相关联的数据包。例如,客户端可以尝试连接到由服务器托管的网站,并针对网页的不同部分请求多个不同数据流。每个数据流可以与网页的不同文件相关联。该请求可以包括特定文件、优先级和文件大小的流id。

在一个实施方式中,可以由服务器确认对多个不同数据流的请求,并且可以建立tcp连接。服务器可以使用spdy协议将与每个流id相关联的数据包多路复用为通过tcp连接传输的单个数据流。数据包可以以异步方式发送。换言之,数据包不是以按发送第一流id的所有数据包然后发送第二流id的所有数据包等的顺序发送。

在框306处,方法300生成多个子文本,其中多个子文本中的每个子文本与多个不同数据流中的不同数据流相关联。例如,如果存在三个数据流,则可以生成三个子文本。换句话说,可以针对每个数据流生成子文本。

在框308处,方法300将来自多路复用数据流的数据包解复用为多个子文本中的相应子文本。例如,utm设备可以拦截来自寻址到客户端的服务器的数据包,并尝试经由相应的子文本重新组合特定流id的数据包。例如,如果有三个不同的流id,则utm设备可以生成三个不同的子文本。换句话说,每个流id将与三个不同子文本中的相应子文本相关联。

在一个示例中,子文本为utm设备提供一种重新组织数据包以针对恶意软件检查数据包以确保未检查的数据包不被转发至客户端的方法。在一个实施方式中,子文本可以充当代理。换句话说,子文本可以保持与流id或文件相关联的数据包,直到对所有数据包和文件进行恶意软件检查。如果没有检测到恶意软件,则该文件可以被转发给客户端。

在另一个实施方式中,子文本可以以内联模式操作。例如,每个数据包可以被置于相应的子文本中,在数据包到达时检查并转发。例如,可以对每个数据包执行增量散列计算。在特定流id的最后一个数据包被检查并发现没有恶意软件之后,客户端可以接收整个文件。然而,如果任何数据包包含恶意软件,则tcp连接可以重置或丢弃。在一个示例中,与包含恶意软件的数据包相关联的数据流可以被重置,而不是重置整个tcp连接。

如上所述,可以在utm设备内的存储器中生成子文本。但是,可用的内存量可能有限。如果并行请求大量数据流,则utm设备可能会耗尽内存以创建新的子文本。如果与对新数据流的请求相关联的优先级等于或低于先前请求的数据流的优先级,则utm设备可以在先前请求的数据流完成检查并删除相关的子文本之后,简单地处理与新数据流相关联的数据包。

然而,如果与对新数据流的请求相关联的优先级高于先前请求的数据流的优先级,则utm设备可以在转发请求到服务器之前将优先级改变为等于先前请求的数据流的优先级。因此,对新数据流的请求可以不中断正在处理并检查与先前请求的数据流关联的数据包的存储器中生成的现有子文本。

在框310处,方法300在多个子文本中的相应子文本中检查多个不同数据流,以检测恶意软件。在一个示例中,utm设备可以在数据包在相应的子文本中被重新组合之后计算每个数据包和整个文件的散列值。散列值可以和存储在数据库中的与已知恶意软件相关联的散列值进行比较。如果发现数据包或文件的散列值与已知恶意软件的散列值之间的匹配,则utm设备检测到恶意软件,并且可以重置或断开tcp连接。在一个示例中,与包含恶意软件的数据包相关联的数据流可以被重置,而不是重置整个tcp连接。在框312中,方法300结束。

图4示出了用于检测spdy连接上的恶意软件的示例方法400的更详细图。方法400可以由包括客户端108、utm设备104和服务器106的系统100执行。应该注意的是,图4中传输的消息每一个都通过utm设备104。

在框402处,客户端108可以向服务器106发送tcp/syn消息。在框404处,服务器106可以向客户端108发回syn/ack消息确认tcp/syn消息。在框406处,客户端108可以向服务器106发送ack消息,并且可以在客户端108和服务器106之间建立tcp连接。utm设备104中的连接状态452可以维持tcp连接。

在框408处,客户端108可以发送syn_stream消息。syn_stream消息可以是一类与spdy协议相关联的消息。utm设备104可以检查syn_stream消息并且识别流id1和优先级3。如果在utm设备104的存储器450中有足够的空间,则utm设备104可以生成与流id1相关联的子文本454。

在框410处,客户端108还可以与在框408中发送的syn_stream消息并行地发送第二syn_stream消息。utm设备104可以检查第二syn_stream消息并且识别流id3和优先级3。如果在utm设备104的存储器450中存在足够的空间,则utm设备104可以生成与流id3相关联的子文本456。

在框412处,服务器106可以针对流id1发送syn_reply消息。syn_reply消息还可以是一类与spdy协议相关联的消息。在框414处,服务器106可以发送与流id1相关联的数据包。在框416处,服务器106可以针对流id1发送datafin消息,指示与流id1相关联的所有数据包已经被发送。

在框418处,服务器106可以针对流id3发送syn_reply消息。syn_reply消息也可以是一类与spdy协议相关联的消息。在框420处,服务器106可以发送与流id3相关联的数据包。

应该注意,可以针对流id1和流id3的每个数据包分别重复框414和框420。另外,应该注意的是,框414和框420可以不以图4中所示的顺序发生。如上所述,spdy协议允许数据流的数据包异步发送。换句话说,用于不同数据流的数据包可以被多路复用在一起并通过单tcp连接经由单个数据流发送。因此,周期性地,框420可以在框414之前发生。例如,服务器106可以在流id1的数据包之前发送流id3的数据包。

图4示出了示例多路复用数据流464。数据流可以包括流id3的第一数据包、流id1的第二数据包、流id1的第三数据包、流id3的第四数据包等等。utm设备104可以将每个数据包置于相应的子文本中。例如,流id3的第一数据包可以被置于子文本456中,流id1的第二数据包可以被置于子文本454中等等。

在一个示例中,utm设备104可以以代理模式操作,该代理模式将数据包临时存储在相应的子文本中,直到特定流id的所有数据包和整个文件已被针对恶意软件检查或分析。在数据包和整个文件已经被检查并且没有恶意软件之后,整个文件的数据包可以被转发到客户端108。在另一个示例中,utm设备104可以以检查每个数据包的内联模式操作,然后将该数据包转发给客户端108。

在一个示例中,utm设备104可以对每个数据包执行散列计算以获得散列值。在一个示例中,散列计算可以是md5散列计算以获得md5散列值。散列值可以被发送到高速缓存查找表460。在一个示例中,随着由utm设备104处理数据包,高速缓存查找表460可以针对每个数据包使所请求的散列值查找排队。高速缓存查找表460可以发送对签名数据库(db)462的查询。

签名db462可以是存储已知恶意软件签名的md5散列值的md5散列数据库。可以利用与发现的新恶意软件的签名相关联的新md5散列值周期性地更新签名db462。签名db462可以向高速缓存查找表460发送指示是否找到匹配的回复。如果找到匹配,则高速缓存查找可以向连接状态452发送消息,指示已经检测到恶意软件,并且连接状态452可以重置或丢弃tcp连接。在一个示例中,与包含恶意软件的数据包相关联的数据流可以使用rst_stream命令消息重置,而不是重置整个tcp连接。

在框422处,客户端108可以发送新的syn_stream消息。在一个示例中,可以在完成与流id1和流id3相关联的数据流之前发送新的syn_stream消息。utm设备104可以检查syn_stream消息以识别流id5和优先级0。如果utm设备104在存储器450中具有空间,则可以针对流id5生成子文本458。如上所述,utm设备104可以不加改变地传递syn_stream消息,并且可以类似于与流id1相关联的syn_stream消息正常处理syn_stream消息。

在另一示例中,utm设备104可以确定存储器450中没有可用空间。结果,utm设备104可以将流id5的优先级修改为等于或低于当前处理流id(例如,流id1和流id3)的优先级。例如,utm设备104可以将流id5的优先级从0改变为3。

在框424处,utm设备104可以将改变的syn_stream消息转发到服务器106。由于改变了流id5的优先级,方法400可以在处理流id之前完成流id1和流id3的处理。在框426处,服务器106针对流id3发送data_fin消息。

在框428处,服务器106针对流id5发送syn_reply消息。在一个示例中,可以在完成流id3的处理并且已移除子文本456以释放存储器450上的存储空间之后生成子文本458。

在框430处,服务器106可以发送与流id5相关联的数据包。例如,多路复用数据流464示出与流id5相关联的数据包。如上所述,类似于流id1和流id3,utm设备104可以检查流id5的每个数据包和流id5的整个文件。例如,utm设备104可以计算流id5的每个数据包的散列值,并且使散列值经由高速缓存查找表460与存储在签名db462中的已知恶意软件的散列值相比较。在框432处,服务器106可以针对流id5发送data_fin消息,并且方法400可以结束。

应当注意,框426-432可以不以图4中所示的顺序发生。例如,如果流id5的优先级未被改变并且保持为0,则框428中的syn_reply消息可能已经在框426中发送data_fin消息之前发送。换句话说,由于流id5的较高优先级,在一个示例中,服务器106可以在已经全部发送了流id3的数据包之前立即开始发送流id5的数据包。因此,复用数据流464可以具有与流id5相关联的数据包之后的与流id1或流id3相关联的附加数据包。

图5示出了装置500的另一个示例。在一个示例中,装置500还可以是utm设备104。在一个示例中,装置500可以包括处理器502和非暂时性计算机可读存储介质504。非暂时性计算机可读存储介质504可以包括当由处理器502执行时使处理器502执行各种功能的指令506、508、510和512。

在一个示例中,指令506可以包括用于通过单传输控制(tcp)连接从服务器接收多路复用数据流中的多个数据包的指令,其中该单传输控制连接使用spdy协议,其中多个数据包与寻址到客户端的多个不同数据流关联。指令508可以包括分析多个数据包中的每个数据包以确定多个数据包中的至少一个数据包中是否存在恶意软件的指令。指令510可以包括基于用于分析的指令将多个数据包中的每个数据包分类成多个子文本中的相应子文本的指令。指令512可以包括在多个子文本中的每个子文本中组合多个数据包的相应数据包之后,分析多个子文本中的每个子文本,以确定是否存在恶意软件的指令。

应当理解,上述公开的变体和其他特征和功能,或其替代方案可以组合到许多其他不同的系统或应用中。本领域技术人员随后可以进行各种目前无法预料或未预料到的替代、修改、变化或改进,这些也旨在被以下权利要求所涵盖。

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