无连接网络层缓冲区溢出攻击的异常检测特征
伊万·霍莫利亚克(B)、拉迪斯拉夫·苏拉克和彼得·哈纳切克
信息科技学院,布尔诺理工大学,博泽泰乔娃1/2,612 66 布尔诺,捷克共和国 {ihomoliak,xsula04,hanacek}@fit.vutbr.cz http://www.fit.vutbr.cz/.en
摘要
缓冲区溢出(BO)攻击是网络安全领域中最危险的威胁之一。针对 BO攻击的检测方法主要采用两种途径:一种是对数据包载荷进行特征匹配,另一种是通过对连接流的数据包头部进行行为分析。第二种方法旨在检测BO攻击,而不依赖于可能被加密的数据包内容。本文提出了一种基于网络行为异常检测(NBAD)的技术,用于无连接网络流量。类似的方法已在相关工作中被用于面向连接的流量,但面向连接的NBAD的所有原理无法直接应用于无连接异常检测。本文设计了一组描述无连接BO攻击行为的特征,并实现了一个工具用于从网络流量转储中离线提取这些特征。接着,我们描述了在虚拟网络环境中进行的实验,利用SIP和TFTP网络服务的利用,以及进一步采用有监督机器学习(ML)和朴素贝叶斯分类器的数据挖掘实验。服务的利用通过网络流量修改实现,以模拟真实的网络环境。实验结果表明,所提出的方法能够以高精度和类别召回率有效区分缓冲区溢出攻击与正常网络流量。
关键词 : 缓冲区溢出 · Connectionless流量 · SIP · TFTP UDP漏洞 · NBAD · Naive贝叶斯
1 引言
缓冲区溢出攻击属于最危险的网络层攻击类别。它们通常通过溢出一段内存来远程执行攻击代码。当程序试图写入数组末尾之外的内存区域,以达到更改指令流的目的时,就会发生此类攻击[5]。对于以根权限运行的易受攻击的应用程序,攻击者还将获得根账户权限。结果,整个机器可能会被攻破,这可能导致非常严重的后果。
目前存在多种检测此类攻击的方法。其中一种方法是分析流量中的接收数据,搜索已知的攻击载荷特征。然而,对于未知威胁(零日)、混淆攻击或加密数据的成功检测受到限制,甚至无法实现。此外,该方法的整个过程可能非常耗时。另一种用于检测上述攻击的方法是网络行为异常检测(NBAD),本文将重点讨论该方法。NBAD是一种在无需了解传输数据内容的情况下分析网络流量的技术,因此上述问题可显著减少。另一方面,NBAD可能会增加规避(漏报)和拒绝正常流量(误报)的可能性[4]。
面向连接的通信 [7] 在每次通信开始时包含会话初始化阶段,在会话结束时包含会话终止阶段。TCP 是面向连接的通信的代表性协议,由于存在握手和结束握手,可以追踪连接的开始和结束。在成功建立 TCP 连接后,有用数据被传输并按发送顺序重新组装。此外,一些协议能够确定面向连接的通信的当前状态,例如 FTP、Telnet 或 Samba。需要注意的是,某些协议设计上主要是面向连接的,但也可以切换到无连接模式。
本研究主要关注无连接通信,因为过去这一问题被忽视了[6,10] ,且很少有研究专门针对此问题。无连接通信的典型代表是UDP协议,它不包含任何会话建立或终止过程,因此在将数据包分配到特定连接记录时存在问题。关于 NBAD,我们提出了一种特征集合,用于描述无连接缓冲区溢出攻击的行为,从而能够区分正常通信与攻击通信。本文还提出了一种用于提取该设计的特征集合的工具。收集到的包含连接记录特征的数据将作为机器学习过程的输入,这是数据挖掘阶段的基础步骤。
本文的结构如下。我们在第2节中描述相关工作,重点介绍NBAD入侵检测和基于机器学习的互联网流量分类。接下来,第3节对提出的特征进行表征,并对其进行描述和分类。第4节详细介绍了在虚拟网络环境中进行的实验,以及相关的漏洞和利用情况。在第5节中,我们描述了数据处理以及对收集的数据集的分析。第6节总结了取得的结果,最后一部分——第7节——对全文进行总结。
2 相关工作
事实上,几乎没有研究深入探讨无连接网络流量中最新的基于行为异常的入侵检测。其原因可能是大多数网络服务主要使用TCP,因此对攻击者更具吸引力。另一个原因可能与上述讨论的无连接流的开始和结束信息不可用有关。
2.1 NBAD在无连接网络流量中的应用
首个基于行为的网络异常入侵检测研究主要针对面向连接的流量,但也包含无连接流量,该研究见于论文[8]。该方法通过将每个UDP数据包视为一条连接记录来简化无连接流量,因此忽略了无连接流中相关数据包的所有行为和统计特征。此外,该研究的数据集也已过时。后续的相关工作[3]在处理包含无连接流量的网络入侵检测时,基于收集流的统计信息,并为主机累积关注指数值。当某主机的关注指数超过阈值时,便会触发警报。目前尚无可用的系统性能评估结果,且未描述任何关于确定会话建立或终止的方法。
2.2 面向连接的网络流量中的NBAD
存在多篇论文讨论并提出了针对面向连接的流量的各种基于行为异常的非载荷入侵检测模型。其中大多数在DARPA数据集上评估其性能。DARPA数据集曾被认为对入侵检测器的评估有用,但在当今已颇具争议。使用DARPA数据集的研究示例包括:PHAD[9], ADAM[2], APAN [13]等。
PHAD [9]是一种异常检测算法,该算法学习数据链路层、网络层和传输层中每个数据包头部字段的正常取值范围。它在每天仅产生约10个误报的情况下,检测出201次攻击实例中的72次(59种攻击类型中的6种)。其中,部分攻击(6种类型)是基于异常IP地址进行检测的。ADAM [2]基于朴素贝叶斯分类器作为监督机器学习模型,监控端口号、IP地址、子网和TCP状态。论文提出采用伪贝叶斯估计器对其进行有效改进,旨在减少误报并检测新型攻击。评估使用DARPA 1998训练数据进行,并在DARPA 1999上进行测试。申等人 [13]提出了一种新颖的概率方法,利用马尔可夫链对网络流量中的异常事件进行概率建模。通过使用DARPA 2000数据集进行的一系列实验评估了该方法的性能,在分阶段表示攻击程度的同时实现了较高的检测性能。贝叶斯神经网络分类器设计在 [1]中讨论了作为完整入侵检测系统的一部分。然而,所进行的实验主要针对网络流量分类。该工作使用了[10]中讨论的Moore 2005年数据集。论文[6]描述了ASNM特征的形式化定义,这些特征描述了面向连接的通信的各种属性,用于网络异常入侵检测。随后,使用朴素贝叶斯分类器和CDX 2009数据集对性能进行了评估[12]。与上述非载荷型NBAD不同,存在另一类NBAD,其代表方法也分析数据包的应用载荷,但该类方法不被视为与我们的方法相关。
2.3 网络流量分类
一个相关的研究分支是网络流量分类。基于流的统计特性进行无连接流量分类的代表性方法在[16]中设计。作者未定义UDP流的起始和结束处理方式,但另一方面提到UDP流必须包含至少两个数据包。另一项工作[15]采用统计方法进行无连接与面向连接流量的分类,涉及在线游戏流量分类方法。该论文作者将 UDP流的结束定义为发送数据包之间存在60秒的超时。在面向连接与无连接流量分类领域的另一个研究实例是工作[11],其使用线性与二次判别分析。A. Moore 等人提出了用于网络流量分类的基于行为的特征,称为判别特征[10]。该研究所设计的判别特征仅对面向连接的网络流量进行分析[1]。作者讨论了无连接分类作为未来工作,但由于UDP流的起始和结束不易识别,从未实际开展此项工作。
3 无连接通信的特征设计
本节详细描述了一组用于表征无连接网络缓冲区溢出攻击行为特征的特征集合。用于计算这些特征的输入包括来自数据包头部、数据包长度和数量、到达时间测量以及关于并发流量的各种信息。特征本身是在UDP连接上计算的,因为 UDP是运行在TCP/IP协议栈传输层中最常见的无连接协议。其他一些基本协议(如TCP和ICMP)也会被处理,但仅用于提供有关特定UDP连接行为的辅助信息。在设计尤其是改进该特征集时,我们考虑了两种基于UDP的网络服务(SIP和TFTP)的特性和原理。
3.1 特征的分类
共定义了117个特征,并根据其原理和用于计算的输入数据将其分为六组:
(a) 来自数据包头部的数据。 这些特征是从UDP数据包的网络层和传输层头部信息中计算得出的。由于我们的NBAD方法基于对UDP流的统计和行为特性进行分析,而不考虑任何主机定位信息,因此数据包头部中的某些字段(如 MAC和IP地址)未被纳入考虑。此外,端口号会被处理,因为它们在另一组特征中有用。
(b) 来自数据包数量和大小的数据。 此类别包含多种特征,这些特征基于仅从数据包中获取的数据包数量和有效载荷长度的统计信息。数据包指的是应用层有效载荷长度非零的任何数据包。
(c) 碎片数据包的分析。 该类别在无连接流量中存在一定问题,因为在某些情况下无法百分之百确定某个碎片数据包属于为其分配的连接。因此,本类别中仅设计了少数几个特征。
(d) 数据包的时间斜率和到达时间数据。 此类数据的分析在缓冲区溢出攻击领域是有意义的,因为恶意通信不必是规则且稳定的。另一方面,这一点存在争议,因为任何特定通信的时间斜率可能具有多种特征,这些特征取决于实际的网络流量状况或可能存在的混淆手段。因此,我们将对执行的BO攻击进行网络流量修改,以模拟真实条件,从而在数据挖掘阶段不会优先考虑这一组特征。
(e) 四分位时间段的分析。 该类别基本上只是前一类别的稍加复杂化版本。它表示在一个连接持续期间的4个时间段(四分位数)内提取各种特征。
(f) 在指定时间上下文内来自相关连接的数据。 这些特征检查在被分析的 UDP连接开始之前、进行期间以及结束后启动的连接。例如,包括TCP连接的存在、ICMP数据包,以及在被分析连接的时间上下文中检测目标端口的变化。时间上下文被定义为包含在被分析UDP连接开始前30秒和结束后30秒内发生的连接的数据包。与被分析连接相关的连接受此时间上下文的限制。设计该类别是为了在出现后门通信或被分析通信与其他通信之间存在隐藏关系时提供帮助。
分类特征的列举如表1和2所示。表中列出的几乎所有特征在计算时都同时考虑了连接双向的数据包。那些分别对每个方向单独计算的特征,已在表中用星号标记。
| 源 | 分组特征 | |
|---|---|---|
| 服务类型 (a) | •众数,a中位数,a均值a | |
| 生存时间 | (a) | •最小值,a最大值,a总和,中位数,众数,a •均值,a标准差a |
| 端口号 | (a) | •源端口号和目的端口号 |
| 数据包计数 (b) | •所有入站数据包的数量,a •所有出站数据包的数量,a •入站和出站数据包的比例, •数据包的数量, •非数据包的数量, •数据包与非数据包数量的比例 | |
| 有效载荷长度 (b) | •总和、众数、中位数、均值、标准差 | |
| 碎片化 | (c) |
•碎片数据包的数量, •非碎片数据包的数量, •碎片与非碎片数据包的比例
计数, •碎片数据包有效载荷长度之和, •非碎片与碎片数据包有效载荷长度的比例 有效载荷长度 |
| 数据包IAT | (d) | •最小值,a最大值,a中位数,a •均值,a标准差 a |
a针对每个方向分别计算。
四分位时间流量分析组包含的特征仅涉及一个四分位数,但实际上这些特征是在全部4个四分位数上计算得出的。在设计和改进特征集时,需要考虑的一个重要问题是连接搜索机制,该机制必须考虑到无连接流量中没有明确的连接边界标志。因此,我们创建了一种基于超时值来确定每个连接结束的机制。每个连接的开始仅由具有流参数(端口、IP地址)且未包含在当前运行中的连接列表中的数据包的出现来确定。结果发现,所找到的连接数量对超时值非常敏感。例如,在使用我们后续的数据集时,采用30 秒的超时值会找到900个连接,而使用180秒的超时值则仅找到500个连接。在这两种情况下,特征提取过程也提供了不同的数值。因此,根据一些基于Linux的操作系统1,网件VPN防火墙2和 MikroTik3设备的情况,我们决定采用一种符合以下陈述的方法:
1 http://www.iptables.info/en/connection-state.html.
2 http://documentation.netgear.com/fvx538/enu/202-10062-08/pdfs/FullManual.pdf.
3 https://www.mikrotik.com/testdocs/ros/2.8/ip/conserv.php.
| 源 | 分组特征 | |
|---|---|---|
| 传输时间 | (d) |
连接持续时间, •每秒字节数, •无数据包传输时间的总和, •无数据包传输时间的总和 – 仅当高于时才计入总和
2000 毫秒, •上述两个特征的比值 |
| 四分位时间段 (e) |
•最小值、最大值、中位数、众数、均值和 以太网数据长度的标准差, •以太网数据包数据长度的均值比 在一个四分位数和整个连接中的,
•所有入站数据包的数量,a •所有出站数据包的数量,a •入站数据包数量,a •出站数据包数量,a •入站与出站数据包数量比 数量, •进出数据的比率 数据包数量 | |
| 相关连接 | (f) | •后续TCP数据包至少出现1次, •后续ICMP数据包至少出现1次, •在相关连接中检测到端口变化, •先前相关连接的数量, •后续相关连接的数量 |
| 后续连接 (f) | •数据包数量, •数据包负载长度的平均值, •数据包负载长度的总和, •数据包大小的总和, •数据包大小的平均值, •数据包大小的标准差, •每秒字节数 |
a分别对每个方向单独计算。
– 如果传输仅在一个方向进行,则超时按默认设置为 30 秒,
– 如果在相反方向至少出现 1 个数据包,则该值设置为 180秒,并且该连接现在被视为已建立。
4 网络流量仿真实验
实验在虚拟网络环境中进行,旨在收集包含UDP网络缓冲区溢出攻击的数据集。该 VirtualBox4工具被用于安全且合法的网络漏洞利用。
4 https://www.virtualbox.org/.
我们使用的网络基础设施的简单示意图如图1所示。仅使用了一台运行在 Windows XP with Service Pack 3 操作系统下的易受攻击的虚拟机。
Wireshark5工具用于捕获合法机器与攻击者机器(即运行 Ubuntu 14.10 操作系统的机器)之间的网络流量。该 Windows XP 机器上安装了漏洞应用程序,并且其防火墙已被禁用。在完成初始设置后,对该机器创建了一个快照,以便在机器被成功利用后能够快速恢复。
用于获取漏洞利用程序及相关的易受攻击应用程序的工具是为此目的而设计的。该工具的示意图如图2所示。CVE解析器组件从nvd.nist.gov上提供的数据表构建关系型数据库。随后,漏洞软件与漏洞利用抓取组件通过查询指定具有高影响评分的UDP缓冲区溢出漏洞来使用该数据库。然后,获取的信息用于在公开漏洞数据库exploit-db6中进行网页抓取,从而下载可用的漏洞利用程序和易受攻击的应用程序。我们观察到,在nvd.nist.gov和exploit‐db中存在的 UDP网络漏洞数量不如TCP的情况多。除了从exploit‐db下载的漏洞利用程序外,我们还使用了Metasploit框架7进行部分攻击执行。最终,我们成功执行了 223次缓冲区溢出攻击,这些攻击针对各种SIP和TFTP网络服务,共生成433条 UDP连接记录。这些攻击采用了多种网络流量修改方式:在时间上分散数据包;分段与分片;改变数据包顺序;模拟不可靠网络通道;数据包丢失;数据包重复以及它们的组合。漏洞应用程序及其CVE编号的摘要列于附录的表6中。
此外,我们从pcapr.net8和wireshark.org9等公共来源以及校园网络环境中收集了正常网络流量。最终数据集汇总于表3。
5 https://www.wireshark.org/download.html。 6 https://www.exploit-db.com/。 7
http://www.rapid7.com/products/metasploit/。
8 http://pcapr.net/home。 9
https://wiki.wireshark.org/SampleCaptures。
5 数据处理与分析
收集的数据集被用作数据挖掘过程的输入。设计了一种新工具,用于提取每条UDP通信记录的所提出特征的值。该工具使用Python 2.7实现,并利用库dpkt10进行数据包头部的解析。图3中的示意图说明了整个过程,该过程包括以下三个部分:
– 上层段表示整个过程的输入。它包含在攻击和合法通信模拟期间收集的捕获的网络流量文件。该段的另一部分用于从每个连接的元数据中获取真实数据(专家知识)。真实数据提供有关通信类型(攻击或正常)以及漏洞识别(CVE‐ID)的信息。目录结构以及输入中包含的附加文件中的元数据均为此目的而专门设计。
– 中层段执行数据处理。Communication Extractor模块负责解析tcpdump文件,并对UDP数据包进行聚合。将输入的网络流量转换为连接记录。然后,利用ExpertKnowledge Processor,为每条连接记录标注所有必要的数据。这些对象被传递给 Feature Extraction Preprocessor,该模块对部分嵌入数据进行预处理,以便更高效、快速地处理。此阶段的最后一个模块是Features Extractor,它对每条UDP连接记录执行特征提取过程,并输出CSV文件。
– 底部部分说明了挖掘与评估过程。它基于CSV文件中存储的数据生成结果。在本研究中,我们使用RapidMiner11工具进行机器学习过程以及评估目的。
10 https://code.google.com/p/dpkt/.
11 https://rapidminer.com/products/studio/.
6 摘要 of the Results
此阶段的目的是通过分析分类器的反馈,进行有监督分类以评估所提出特征的区分特性。所有实验均通过朴素贝叶斯分类器完成。使用核权重函数进行特征独立的值密度分布估计,该方法被视为非参数估计模型。考虑到我们的测试数据集分布,所有分类实验均采用了5折交叉验证方法。我们执行了前向特征选择(FFS)方法以选择最佳特征。FFS从空特征集开始,在每次迭代中添加一个能最大程度提升所有类别平均召回率的新特征。所有类别的平均召回率通过底层的5折交叉验证评估朴素贝叶斯分类器得到。在FFS中,我们允许接受一次无改进的迭代,以避免选择过程陷入局部极值。我们的实验包含两次FFS执行:第一次以完整的测试数据集作为输入;第二次以排除其他 UDP流量后的测试数据集作为输入。我们仅对朴素贝叶斯模型进行了少量优化,最终将核函数的带宽固定设置为0.1。
| 真实类别 | 真实类别 | 精确率 | |
|---|---|---|---|
| 正常 | 攻击 | ||
| 预测 正常 | 5122 | 7 | 99.86% |
| 类别 攻击 | 7 | 426 | 98.38% |
| 召回率 | 99.86% | 98.38% | F1= 98.38% |
第一次FFS实验的性能结果如表4所示。本实验得到的混淆矩阵显示了两类均具有高精确率和召回率。注意 F1符号表示 F-measure1 ,它对正类(攻击)的精确率和召回率进行了均衡衡量。
我们排除了FFS第二次执行中的其他流量,因此仅针对TFTP和SIP流量验证了特征的区分特性。相关的混淆矩阵如表5所示。将本次实验结果与之前的结果进行比较,可以看出在恶意和正常UDP流量之间实现了更好的区分特性。因此,我们可以观察到,通过包含恶意和正常
| 真实类别 | 真实类别 | 精确率 | |
|---|---|---|---|
| 正常 | 攻击 | ||
| 预测 正常 | 117 | 1 | 99.15% |
| 类 攻击 | 0 | 432 | 100.00% |
| 召回率 | 100.00% | 99.77% | F 1 = 99.88% |
并且包含正常实例的训练数据比仅包含单一类别代表的训练数据提供更好的性能结果。
7 结论
本文的主要目标是设计一种基于统计、行为和上下文特征的无连接网络流量的非载荷特征集合,用于缓冲区溢出攻击的异常检测。本研究还解决了连接搜索问题,考虑到无连接流量中缺乏明确的连接边界标志。该问题通过借鉴现有设备和基于Unix的操作系统的方法,采用超时方法予以解决。所设计的特征集的性能通过朴素贝叶斯分类器和5折交叉验证方法进行评估。结果摘要表明,我们的特征集成功地用于将UDP网络流量分类为恶意和正常类别。
1744

被折叠的 条评论
为什么被折叠?



