SYMTCP: Eluding Stateful Deep Packet Inspection with Automated Discrepancy Discovery论文翻译

《SymTCP:基于自动发现差异的有状态深度包检测技术》

Zhongjie Wang∗, Shitong Zhu∗, Yue Cao∗, Zhiyun Qian∗, Chengyu Song∗,
Srikanth V. Krishnamurthy∗, Kevin S. Chany, and Tracy D. Brauny
∗Department of Computer Science and Engineering, University of California, Riverside,
fzwang048, szhu014, ycao009g@ucr.edu, fzhiyunq, csong, krishg@cs.ucr.edu
yU.S. Army Research Lab, fkevin.s.chan.civ, tracy.d.braun.civg@mail.mil

摘要
通常部署的深度包检测(DPI)系统的一个关键特征是,它们实现了网络堆栈的简化状态机,这通常与终端主机的状态机不同。这两种状态机之间的差异被用来绕过这种基于DPI的中间盒。然而,大多数先前的方法依赖于手工制作的对抗性数据包,这些数据包不仅是劳动密集型的,而且在多个基于DPI的中间包中可能无法很好地工作。我们在这项工作中的目标是开发一种自动的方法来制作候选的对抗性数据包,特别是针对TCP实现。我们实现这一目标的方法取决于关键的洞察力,即虽然DPI实现的TCP状态机不清楚,但那些终端主机已经很好地建立起来了。因此,在我们的系统SYMTCP中,使用符号执行,我们系统地探索了终端主机的TCP实现,识别可以到达代码中关键点的候选包(例如,导致包被接受或丢弃/忽略);然后,这些自动识别的包通过DPI中间盒馈送,以确定是否引起差异并且可以避开中间盒。我们发现我们的方法非常有效。它可以在不到一个小时内生成数以万计的候选对抗包。当评估多个最先进的DPI系统,如Zeek和Snort,以及国家级审查系统,即。在中国的防火墙中,我们不仅发现了以前已知的规避策略,而且还发现了以前从未报道过的新策略(例如,涉及紧急指针)。该系统可以很容易地扩展到操作系统和DPI中间盒的其他组合,并作为一个有价值的工具来测试未来DPI对规避尝试的稳健性。

1 简介

深度包检测(Deep packet inspection,DPI)已成为现代网络安全基础设施中普遍采用的技术。通过组装和检查应用程序层内容,DPI启用了传统防火墙中没有的强大功能。其中包括恶意软件检测[10]、远程攻击预防[41]、钓鱼攻击检测[16]、数据泄漏预防[46]、政府网络监视[7]、[6]、目标广告[28]、[3]和分层服务的流量区分[51]、[32]、[20]。

不幸的是,要从有状态协议(如TCP)中组装应用程序层内容,DPI需要设计协议的相应状态机。这引入了DPI的一个基本限制,即易受协议歧义的影响。简而言之,大多数网络协议规范(例如,TCP的rfc[36])都是用自然语言(英语)编写的,这使得它们具有内在的模糊性。更糟糕的是,规范的某些部分故意未指定,从而导致特定于供应商的实现。因此,不同的网络堆栈实现(例如,Windows和Linux)通常在其状态机中具有固有的差异[42]、[13]、[38]。事实上,即使是同一网络堆栈实现的不同版本,也可能存在差异。为了确保低开销和与大多数实现的兼容性,DPI中间框通常实现自己的简化状态机,这与终端主机上的状态机必然不同。

正如前面的工作[37]、[48]、[29]所指出的,这种差异导致某些网络包被“DPI中间盒”或终端主机接受/丢弃。利用此特性,可以使用插入数据包(即DPI中间框接受并作用的数据包)来更改其状态,而远程主机丢弃/忽略它)和规避数据包(即DPI中间框忽略但远程主机接受并作用于它的数据包)[37]来误导DPI的协议状态机器。具体地说,这样的数据包导致DPI进入与终端主机上的状态不同的状态。因此,DPI无法再像最终主机那样忠实地组装相同的应用程序层内容,无法捕获任何恶意或敏感的负载。

到目前为止,对插入和规避数据包的研究是基于针对特定DPI中间盒手工制作这样的数据包[37]、[48]、[29]。不幸的是,分析每一个中间包的实现,并为这种对抗性的包生成提出相应的策略,是一项繁重的任务。人们可以通过搜索所有可能的包序列来识别插入和规避包,从而潜在地自动化该过程。不幸的是,搜索空间是指数级的大,也就是说,有2160种可能性可以覆盖甚至是单个包的20字节TCP头,更不用说测试一系列包了。

“我们能否开发自动方法来构造数据包,使DPI中间盒的状态与(终端)服务器的状态成功地解除同步?“这个问题正是我们在本文中所针对的工作的关键,回答这个问题不仅有助于测试未来几代的新闻部,而且有助于在反对未来审查技术的军备竞赛中保持领先地位。我们这里的重点是TCP,因为它是构建最流行的应用层协议的基础。我们开发了一种方法,这种方法是由这样一种观点驱动的:尽管DPI中间盒的TCP状态机很模糊,但在终端主机上的TCP实现已经很好地建立起来(例如,很大一部分服务器运行Linux操作系统)。鉴于此,我们探索了终端主机的TCP状态机(使用符号执行),并基于它们可以达到的临界点和状态(即由于各种原因接受或丢弃/忽略数据包的状态)生成候选数据包组。接下来,我们通过DPI中间盒提供这些数据包来执行差异测试,并观察它们是否导致任何差异,即DPI中间盒是否仍然能够执行其识别包含恶意/敏感有效负载的连接的预期功能。
这项工作的主要贡献如下:

  • 我们通过在终端主机上探索TCP状态机,并对blackbox DPIs进行差分测试,提出了自动识别插入和逃逸包的问题。
  • 我们开发了SYMTCP,这是一个完整的端到端的方法,可以自动发现任何TCP实现(当前是Linux)和blackbox DPI之间的差异。并发布了SYMTCP数据集和源代码。https://github.com/seclab-ucr/sym-tcp
  • 我们针对三个DPI中间包Zeek,Snort和Great Firewall of China(GFW)评估我们的方法,并自动发现大量的规避机会(文献中从未报道过)。该系统可以很容易地扩展到其他DPI,并作为针对DPI未来实现的有用测试工具。

2 背景

在本节中,我们首先提供一个简单的背景,说明为什么可以避开针对DPI的攻击。随后,我们将提供一些关于符号执行和相关技术的背景知识,因为这些是构建SYMTCP不可或缺的。

A. 对深度包检测的规避攻击
DPI是专门设计用来检查与更高层相关的内容,例如应用层(例如HTTP、IMAP)。为了检查应用层的有效负载,DPI首先从从接口捕获的网络数据包(TCP数据包)重建数据流。然后它自动分配一个合适的协议解析器来解析原始数据流。最后,它对解析的输出执行“模式匹配”。举例来说,考虑基于关键字过滤HTTP请求的常见情况(例如,部署在审查防火墙上)。当DPI模块(为了便于说明而简称为DPI)检测到HTTP URI中的特定关键字时,它可能会采取后续操作(例如,阻止连接或静默记录行为)。有时模式匹配签名可能更复杂,其中DPI检查来自多个层的字段和来自两个方向(到服务器和从服务器)的数据在序列中的组合[44]。例如,一个终端主机首先向端口443发送“HELLO”消息,然后另一方用“OLLEH”消息响应。

然而,由于协议的模糊性,DPI的TCP实现与终端主机(例如服务器)的TCP实现之间存在差异,因此DPI存在固有的规避漏洞[37],[23]。一个例子是Snort接受一个TCP RST包,只要它的序列号在接收窗口内(这太宽松了),而最新的Linux实现将确保RST包的序列号与下一个预期的序列号(rcv_next)完全匹配。这使得攻击者能够发送一个插入RST数据包,该数据包的inwindow序列号故意标记为“bad”,这将终止Snort上的连接,而远程主机实际上会丢弃/忽略该数据包。这种差异为攻击者通过发送精心编制的数据包来躲避DPI打开了一个缺口。

除了由于协议实现的差异之外,缺乏网络拓扑结构的知识也可能导致额外的歧义。例如,DPI很难推断包是否会到达目的地。因此,攻击者可以发送具有较小TTL的数据包,使其无法到达远程主机,但是,这样的数据包会影响DPI。

以往的研究工作[48]、[29]利用网络的模糊性和协议执行的差异性,设计了针对现实世界的DPI系统的规避策略,如中国和伊朗的国家审查系统,以及isp针对分层服务的流量区分系统。这些规避策略被证明在使DPI无效方面有很高的成功率。然而,大多数常见的差异可以通过DPI设备来弥补,从而导致军备竞赛。相比之下,我们的系统向自动化规避战略迈出了重要的一步,这不仅可以作为一个有价值的测试工具来对付未来几代的DPI,而且还可以跟上在DPI规避背景下不断升级的军备竞赛的步伐。

B. 符号执行vs.混合执行vs.选择性符号执行
符号执行(Symbolic execution)[26]是一种功能强大、精确的软件分析/测试技术,由于它能够突破复杂而严密的分支条件,并沿着执行路径深入&#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值