DPI (Deep Packet Inspection) 深度包检测技术
详解DPI与网络回溯分析技术
随着网络通讯技术进步与发展,网络通讯已跨入大数据时代,如何监控各类业务系统的通讯数据在大数据流量中传输质量,以及针对海量的网络通讯数据的范畴中存在少量的恶意流量的检测,避免恶意通讯对主机、网络设备的root权限的安全威胁,和通讯内容的窃取。是网络管理必须面对的一个难题。
有攻击的矛,自有防御的盾,这是自然发展的规律。针对大数据的来临,传统的实时检测与防御已不能胜任对海量数据中存在细微异常的甄别。为此,对原始通讯数据的实时备份逐渐彰显出其必要性,而基于时间窗口的回溯分析技术加以对数据包的深度检测,是对异常数据发现的显微镜。
DPI技术简介
DPI(Deep Packet Inspection)深度包检测技术是在传统IP数据包检测技术(OSI L2-L4之间包含的数据包元素的检测分析)之上增加了对应用层数据的应用协议识别,数据包内容检测与深度解码。
通过对网络通讯的原始数据包捕获,DPI技术可使用其三大类的检测手段:基于应用数据的“特征值”检测、基于应用层协议的识别检测、基于行为模式的数据检测。根据不同的检测方法对通信数据包可能含有的异常数据做逐一的拆包分析,深度挖据出宏观数据流中存在的细微数据变化。
DPI与传统网络分析技术
1.利用数据特征值对业务类型进行识别判断
在五元组分析技术之上,DPI通过对IP数据包的内容进行分析,依据数据特征字的查找或者业务的行为统计,得到相关业务流的类型。
网络分析技术对数据包内容的解码:
识别利用TCP/80端口传输BT流量的数据特征,如果只是通过常见的HTTP应用特征进行判断, 就很容易将它误判为一个Web 访问的应用。数据特征值检测技术不仅可以识别业务传输的数据内容指纹,而且对利用已知通信端口(如:利用TCP/445端口进行蠕虫传播时所携带的病毒特征)或未知端口进行木马传输的数据特征做识别判断。
2.应用协议识别
DPI技术对网络应用及协议识别,采用识别数据内容的签名(类似于人体指纹)来进行辨别,签名是被用来分析鉴别应用及协议的特征有效的手段,当一个新的应用或协议被发明,数据内容中将携带有相应的签名。
网络分析技术的应用协议识别具备对数据内容所携带的签名,还可以依据数据通讯所采用的传输层端口做应用协议的判别。
协议识别可作用于对通讯流量成分的规划,以及对异常通讯流量的发现。
3.业务交付统计
DPI 的业务统计功能可识别网络的业务流量分布和用户的各种业务使用情况,发现影响网络正常运行的因素,为网络和业务优化提供依据。
网络回溯分析技术
回溯分析集合了传统网络分析和DPI技术各项优点,并提供对原始通讯数据的海量存储,满足对微量异常通讯的发现能力。而且回溯分析通过对业务通讯的五元组和应用协议特征识别,在基于时间窗口的独特功能上,为各类业务通讯提供了每一时段的交互质量检测。
当前DPI(Deep Packet Inspect深度报文识别)技术是安全领域的关键技术点之一,围绕DPI技术衍生出的安全产品类型也非常的多样。在分析DPI的进一步技术实现之前,分析DPI对用户的价值可以看到主要体现在两个方面:
- 从攻击防御的角度看,Web类的安全风险正在成为目前安全风险的主流攻击形式,针对Web类应用层安全攻击的防护,依靠传统的防火墙是无法实现的,具备深度报文检测能力的IPS设备或者WAF设备开始为大家所熟知;
- 从业务应用识别分析的角度看,单纯的分析报文的头字段内容无法识别该报文所承载的具体的业务类型,要想深度了解报文所承载的业务应用类型及流量大小等信息,必须要跟踪业务应用的协议交互过程,并对报文的负载payload进行深度的识别。如果用户希望网络安全设备具备针对应用层的风险防护能力且能够对互联网出口的流量应用进行精细化的管理控制,DPI技术的能很好的满足客户的需求。
和传统的防火墙域间策略的匹配查询不同,DPI技术旨在借助字符串特征的逐包匹配来完成入侵检测和流量控制的目的,在这个过程中,深度报文检测的引擎设计和丰富的规则特征库定义是核心设计环节。从检测引擎设计的角度看,除了要有良好的设计框架之外,在收到需要检测的报文后,涉及到报文的正规化处理、检测引擎的协议解析、引擎对报文关键特征提取和高效算法查询等内容;从特征库的角度,涉及到对检测规则的定义、特征库的提取和升级更新等内容,接下来我们将针对其中的关键技术点进行说明。
1、DPI技术实现的基本框架(Deep Inspect Management)
从控制管理层面上看,DPI的各个业务模块的需求都可以抽象化成“规则”,基于这些规则定义可以生成不同的“分类”对象;规则同时具有“使能状态、报文动作”等属性,内部还设置有特征、选项等关键字部件。DIM的框架设计将业务模块的公共业务需求进行抽象并处理。控制管理层面的工作在用户态完成,主要工作包括:
- 统一开放格式的规则管理;
- 统一开放格式的特征库加载和文件解析;
- 配置变更和下发流程管理,包括引擎的编译和下发、规则的下发,以及它们的板间同步(如图1所示)。
从数据转发层面上看,DPI的各个业务需求都需要对应用层协议进行解析、解码和搜索。为了保证高效转发和单次报文处理,有别于传统防火墙的设计思路,在新一代安全产品的实现过程中必须有并行的检测引擎,尽可能保证只对报文进行一次处理。数据转发层面的需求主要在内核态进行处理,涉及到的几个功能模块如下:
- 协议解析器;
- 搜索算法引擎;
- 检测结果处理模块,或者说报文动作处理模块;一般是在I/O 接口的处理流程中(如图1所示)。
这种将控制管理层和数据转发层相互独立的设计模型,使得CPU密集型的引擎预处理(编译和下发)和高性能的搜索算法过程分离在用户态和内核态,也可以使得我们的预处理和匹配在不同的单板甚至不同的设备上进行,易于保证转发流程的检测持续性和稳定性,匹配也易于由软件查表扩展成硬件处理器来完成。
2、DPI控制管理层面的规则定义
3、DPI检测引擎设计及典型算法模型
有别于传统的DFA(Deterministic Finite Automaton)和NFA(Non-Deterministic Finite Automaton)算法,H3C 的DPI软件引擎具有内存可伸缩特性。DIM用户态可动态感知需要加载软件引擎的单板或者子设备(的内核态)是否有充裕的内存,根据内存剩余情况和用户的配置选择最优的引擎存储方式,然后启动编译线程完成编译下发工作。海量特征的编译下发是一个CPU密集型过程,考虑到可能遇到的配置频繁变更或者特征库升级调度,DIM的编译线程设置了可中断可重入机制,不需要用户等待。
DPI内核态的检测引擎可能出现在入接口业务点、域间策略业务点或者出接口业务点,任何涉及DPI业务的配置启用都会开启转发流程中的DPI业务点,如果用户有多种相关配置,DPI会在报文转发流程中最早的业务点生效,其余点则不生效。在DPI的入接口处理时,数据转发层面的处理流程如协议解析、算法引擎和检测结果处理是其工作重点【图3】。
在具体的DPI检测引擎设计时,其在内核态的位置如图4所示。可以看出,DPI检测引擎包含了多种检测算法,典型的如Aho-Crassick , Boyer ,Moore算法以及PCRE算法等等,通过这些算法的配合可以有效实现关键特征的快速查找匹配,提升了查找效率。
4、DPI检测引擎的协议解析器设计模型
检测引擎自身包括三个部件:协议解析器、算法引擎和检测结果处理,下面主要对其关键部分的协议解析器进行说明。现阶段额度协议解析器的职责主要有:
1)协议确认: 进入HTTP、HTTPS等协议解析器的条件都是固定端口映射。但越来越多的互联网应用正试图通过80、443等传统端口来逃逸传统网络设备的检测和控制。因此必要的协议确认是防止这种逃逸的前提。
2)协议切分: 协议切分是在流(会话)的基础上进一步细分出“检测流”或者叫“事物”的概念。例如:HTTP的一次transaction、FTP的一次用户登录行为、SMTP/POP3的一次邮件发送/接收等,都抽象成一条“检测流”。有时一条流可以传输多次检测流,甚至同时有并发的检测流出现。协议切分对于关心检测流的业务模块有着重要意义,例如内容过滤和应用审计。
3)协议域切分:协议域切分是在最小的粒度上细分报文。将检测流分成Header和Body部分,Header还要细分成各个Field,包含Field Value和Field Data部分。协议域切分有助于判别该头域是否需要检测,判定该头域命中的特征与之定义是否吻合,以及识别提取审计日志信息的关键位置。
4)解码: HTTP的URI部分和邮件协议的Subject部分等进行了编码,需要协议解析器进行解码,大多数情况下需要我们将解码后的字段送入算法引擎。有些情况又有个别特征基于编码前定义,需要我们将原始字段送入算法引擎,但同时发生会对性能产生一定损耗。
5)解压缩:HTTP可以用gzip、x-gzip、deflate等方式传送压缩后的数据内容,在用户的配置要求下解析器会将内容解压缩后送入算法引擎,以帮助我们发现压缩数据中的需要被检测出的特征。
6)SSL卸载:在用户的配置要求下,可以通过SSL卸载技术尽可能还原HTTPS中的原始流量,进行更加全面的检测和控制。
7)协商协议识别:FTP、SIP以及很多加密方式的P2P协议都采用协商甚至多次协商的方式来进行数据传输。对应的协议解析器需要能够通过控制通道报文的解析识别出协商协议的数据通道的五元组特征,通过协商关联表的匹配来识别其数据通道。
当然,基于这些协议分析完成之后,通过算法引擎可以匹配查找可以发现相关的检测结果,同时送到后续的动作设计模块进行处理。在内核态,DPI支持大量的动作以及它们的组合,各个DPI的业务模块都可以基于规则或者规则分类来配置报文的动作。这些动作包括Permit/deny、Drop丢掉后续报文、Redirect或者发送双向TCP Reset断开连接、生成攻击日志告警等。
5、特征库的设计模型
在进行DPI特征库的设计时,一般都是采用统一的文件头结构和开放式TLV架构,易于软件统一处理和后续业务扩展。同时考虑到不同产品对存储空间、转发性能、并发规格的不同要求,为不同的产品(不限于NGFW)量身定制了不同的特征库。并且,为了能够快速完成升级,在服务器上放置了邻近旧版本的增量库(补丁包)。
结束语
DPI技术的应用和发展是一个动态不断完善的过程:一方面攻击类型在不断的发展变化,由此导致的攻击特征漏洞的提取也要与时俱进不断更新,另一方面随着攻击类型的增加,除了攻击特征漏洞匹配和应用层协议解析之外,未知的不能识别的攻击类型报文也会逐渐增加,目前已经出现的云端的未知攻击的检测识别技术可以为设备侧的DPI检测提供很好的补充,基于大数据的云端安全分析平台也会逐渐成为安全的核心竞争力,配合安全设备终端形成完整的DPI防护解决方案。
==============================================
如果这篇文章帮助到了你,你可以请作者喝一杯咖啡