-1-
中国科技论文在线
关于网络攻击数据生成技术的研究
彭 丹
北京邮电大学网络技术研究院,北京 (100876)
摘 要:在网络融合的大的趋势下,网络服务越来越多样化。随之而来的网络安全问题也逐
渐成为人们最关心的问题之一。入侵检测系统(IDS,Intrusion Detection System)能够及时
有效地对入侵攻击事件进行检测并告警,使用户可以针对攻击事件做出快速响应,保障信息
安全或将攻击造成的负面影响降到最低。因此,它成为人们保障信息安全的首选。然而,目
前的 IDS 告警准确率不高,存在漏报或误报的缺陷。通过改进 IDS 入侵检测算法,努力提
高报警准确率,降低漏报或误报率是一个十分迫切的需求。本文分析了现有的攻击数据获取
方法现状与不足,然后提出了基于 IDS 入侵检测规则的攻击数据的生成方法和基于场景的
攻击数据生成方法,并给出了基于场景的攻击数据生成系统的系统设计,最后就进一步工作
进行了规划。
关键词:攻击数据生成;入侵检测系统;攻击场景
中图分类号:
1.引言
复合攻击已经成为互联网的主要攻击手段。复合式攻击手段多是由若干种单一攻击手段
组合而成的。单一攻击手段从技术角度上看不仅是有限的,而且是有规律可循的。目前我们
所知道的单一攻击手段有病毒木马、密码攻击、网络监听、IP 欺骗、拒绝服务(DoS)、未
授权访问等多种方式。黑客们以路由器、交换机、主机、网络或应用层中各种不同的网络设
备为攻击目标,将多种单一的攻击手段进行组合,而形成变化多样的复合攻击。复合式攻击
是目前互联网的主要威胁之一,复合攻击更加难于防范和阻止。
图 1 复合攻击(Multi-step attack)模式示意图
无论 IDS 还是其它安全应用程序,用于测试的攻击数据集需求量很大。然而攻击数据
的敏感性和隐私性,使得获取攻击数据十分困难。目前,人们通过收集真实攻击工具或编写
真实攻击脚本来产生攻击测试数据集。但是这种方法存在很多缺陷,下文中将详述。
为了更加方便地获取攻击数据集,本文提出了基于 Snort 入侵检测规则的攻击数据的生
成策略和基于场景的攻击数据生成策略,并对这两种策略进行了简要的分析和比较。全文的
组织如下:第 2 节分析了现有的获取攻击数据方法的不足;第 3 节介绍基于入侵检测规则的
复合攻击数据生成策略;第 4 节介绍了基于入侵场景空间的复合攻击数据生成策略并提出系
统的总体结构;第 5 节对两种策略进行了简要比较,分析了它们的优缺点;第 6 节对前文进
行了总结以及下一步的工作介绍。
2.攻击数据获取方法之现状分析
美国 MIT 林肯实验室在 1998 年和 1999 年举行了 2 次大规模的离线 IDS 评估,并公布
-2-
中国科技论文在线
了详细的测试方案与测试数据,并在 2000 年模拟了 DDoS 攻击场景和针对 Windows NT 系
统的攻击[1-2]。在 1999 年的实验中,一共设计了 58 种攻击,其中包括 DDoS 等复合攻击。
林肯实验室采用的攻击设计方法是收集各种攻击运行脚本,测试时由系统并发地调用多个脚
本来模拟实际的攻击。测试所使用的数据集涵盖了大多数的攻击类型,确保攻击的真实性和
可靠性。但是它所采用的攻击形式有限,因此使用这种方法进行的测试是不够充分的。并且
它不支持攻击的形式化描述与自动生成,当需要生成新的攻击实例时,还得收集新的攻击工
具或撰写新的脚本,使得测试效率低下,投入成本高。
2004 年,Wisconsin-Madison 大学设计并实现了 MACE 系统,该系统的目标是能够在实
验室中重现各种复合攻击会话[3]。他们设计了一种脚本语言用来描述攻击过程,MACE 根据
这些脚本来构造攻击,这种方法避免了收集各种攻击工具的困难性。Wisconsin-Madison 大
学的研究人员使用 MACE 对一种使用广泛的防火墙(Cisco PIX)以及 2 种 NIDS (Snort 和 Bro)
进行了测试,他们的结果显示,这些系统都存在着某些缺陷。虽然 MACE 的测试数据能够
通过程序自动生成,提高了测试的效率,但同样存在着使用真实攻击进行的测试不完备的问
题。另一方面,除了学校的研究,各类商业实验室也进行了大量的 IDS 测试工作。英国的
NSS Group 实验室从 20 世纪 90 年代末开始发布各类安全产品的测试认证方案,目前最新的
入侵检测系统测试方案是第 3 版的千兆入侵检测系统测试方案[4]。在方案中,攻击共有 15
类 100 余种,但 NSS Group 在公开的文档中并未提出攻击的实现手段。
由以上的分析可以看出,在这些攻击测试工具中,攻击构造方法有 2 种:①搜集攻击工
具构造真实攻击;②根据攻击的原理编写脚本,通过脚本的解释执行来构造真实攻击。这两
种方法都存在着以下的不足,使之在入侵检测系统的测试中存在着极大的局限。
在国内,东南大学在 IDS 测试中攻击数据的生成方面做了大量的工作。他们提出采用
人工构造的完备入侵场景库来生成攻击流量,并在攻击流量中混合入噪声流量增加测试的准
确性和公平性[5]。本文借鉴了基于场景的思想,并从实现的角度设计了具体的攻击场景的
XML 描述。
3.基于 IDS 入侵检测规则的攻击数据生成策略
Snort 入侵检测规则
众所周知,IDS 主要是基于规则来完成对网络数据包的检测。Snort 是一个强大的轻量
级的网络入侵检测系统(NIDS)。它具有实时数据流量分析和日志 IP 网络数据包的能力,能
够进行协议分析,对内容进行搜索和匹配。它能够检测各种不同的攻击方式,对攻击进行实
时报警。此外,Snort 具有很好的扩展性和可移植性。从工作原理而言,Snort 在网络的一点
被动地捕获原始网络包,对 Libpcap 采集来的数据进行分析,从而判断是否存在可疑的网络
活动。从检测模式而言,Snort 使用误用检测(Misuse Detection)。
Snort 使用一种简单的规则描述语言,这种描述语言易于扩展,功能也比较强大。Snort
的每条规则必须在一行中,它的规则解释器无法对跨行的规则进行解析。Snort 的每条规则
都可以分成逻辑上的两个部分:规则头和规则选项。规则头包括:规则行为(rule's action)、
协议(protocol)、源/目的 IP 地址、子网掩码及源/目的端口。规则选项包含报警信息和异常包
的信息(特征码,signature),使用这些特征码来决定是否采取规则规定的行动。例如:
alert tcp any 10101 -> any (msg:"SCAN myscan";flow:stateless;ack:0;flags:S;
ttl:>220;reference:arachnids,439;classtype:attempted-recon;sid:613;rev:6;) 是 一 条 针 对
-3-
中国科技论文在线
SCAN 探测的规则:对于从任意网络的 10101 端口发给本地网络 的任意端口
的 TCP 数据包中,如果数据包内容满足以下特征,会生成一条告警信息:数据流是无状态
的,外网发起的 SYN 包且 ACK 为 0,TTL 大于 220。其中:msg 是告警信息输出的内容,
sid 标识规则 ID,classtype 把报警分成不同的攻击类,rev 被用来识别规则修改。
规则选项构成了 Snort 入侵检测引擎的核心,它们非常容易使用,同时又很强大和容易
扩展。在每条 Snort 规则中,选项之间使用分号进行分割。规则选项关键词和其参数之间使
用冒号分割。Snort 规则选项中与数据包特征有关的关键词如下[6]:
ttl:测试 IP 包头的 TTL 域的值
tos:测试 IP 包头的 TOS 域的值
id:测试 IP 分组标志符(fragment ID)域是否是一个特定的值
ipoption:查看 IP 选项(IP option)域
fragbits:测试 IP 包头的分片位(fragmentation bit)
dsize:测试数据包数据段的大小
flags:测试 TCP 标志(flag)是否是某个值
seq:测试 TCP 包的序列号是否是某个值
ack:测试 TCP 包的确认(acknowledgement)域是否为某个值
itype:测试 ICMP 数据包的类型(type)域
icode:测试 ICMP 数据包的编码(code)域
icmp_id:测试 ICMP 回送包的标志符(ICMP ECHO ID)是否为某个值
content:在数据包的数据段中搜索模式(pattern)
content-list:在数据包的数据段中搜索模式清单
基于 IDS 检测规则的攻击数据生成
基于 IDS 入侵检测规则生成攻击数据的基本思想是:根据 IDS 每条规则中关于数据包
(ICMP、TCP 或 UDP)特征的描述,构造满足该系列特征的畸形数据包。在具体实现时,
可以先构造数据包,然后从规则文件记录中提取特征值并填入待生成数据包的相应字段。对
于规则记录中没有涉及的字段,可以填入随机生成数据。
通过将使用这种策略构造的畸形包发送给网络 IDS 系统,可以实现对 IDS 系统检测能
力的测试,用于入侵检测算法的改进;也可能使被攻击的 IDS 系统产生大量的“假”的告
警信息,导致网络管理员无法通过告警信息识别真实的攻击,从而达到攻击的目的。
该攻击数据生成策略简单,应用广泛。近年来,一些简单攻击测试工具使用基于 IDS
入侵检测规则生成攻击测试数据,比如 Snot, Stick 等,都利用 Snort 的规则作为攻击知识
库,根据规则在报文中填入相应的内容,以产生具有攻击特征的事件流。Snot 作为一个针
对 IDS 的拒绝服务工具,以 Snort 的 rule 作为输入,Snot 是一个任意包生成器,使用 Snort
规则文件作为它的包信息源。可实时生成任意的未包含于规则中的信息,以牵制 Snort 规则
‘Snot 检测’的生成。
4.基于场景的攻击数据生成策略
场景的形式化描述
场景是一系列系统行为之间的交互,是对用户与系统交互的部分描述。场景的交互来源
于一些事件,通过事件触发场景间的通信,这些事件是同步地从源组件发送到宿组件。一个
-4-
中国科技论文在线
场景的历史片断是一个为达到某些目标的交互子序列。
图 2 扫描攻击场景交互图
在图 2 中,受害者(Victim)可以是目标子网或目的主机。攻击者先通过发送 ICMP Echo
Request 到受害者对象以确定目标对象是否存活。受害者收到 ICMP Echo Request 请求后,
发送 ICMP Echo Reply 响应给攻击者。针对存活的目的主机,攻击者发送 SYN 请求,企图
通过建立 TCP 连接以确定目的主机开启的服务,然后获取主机的信息(比如,操作系统类
型与版本,计算机名字,数据库类型,硬件信息等),为下一步攻击做好准备。可用如下
XML 描述该场景:
<?xml version="" encoding="ISO-8859-1" ?>
<scenario name="Basic SCAN">
<send type="ICMP ECHO REQUEST" retrans="3">
<![CDATA[
Src_IP:[local_ip]
Dest_IP:[remote_ip]
]]>
</send>
<recv type="ICMP ECHO REPLY"> </recv>
<send type="TCP SYN">
<![CDATA[
Src_IP:[local_ip]
Src_Port:[local_port]
Dest_IP:[remote_ip]
Dest_Port:[remote_port]
TCP_Flag:0x0002(SYN)
]]>
</send>
-5-
中国科技论文在线
<recv type="TCP SYN,ACK"> </recv>
<pause/>
<send type="TCP RST">
<![CDATA[
Src_IP:[local_ip]
Src_Port:[local_port]
Dest_IP:[remote_ip]
Dest_Port:[remote_port]
TCP_Flag:0x0004(RST)
]]>
</send>
</scenario>
图 3 SYN 洪泛攻击交互图(DoS 攻击)
在图 3 中,受害者(Victim)可以是目标子网或目的主机。攻击者探明目的主机开启的
服务后,短时间内发送大量 SYN 请求到目的主机,其中 SYN 报文的源地址是虚构的不存在
的网络地址,被攻击对象短时间内因保存大量半连接状态而导致内存溢出,最终使系统服务
性能下降甚至崩溃,达到拒绝服务攻击的目的。可用如下 XML 描述该场景:
<?xml version="" encoding="ISO-8859-1" ?>
<scenario name="DoS">
<send type="TCP SYN" num="maximum">
<![CDATA[
Src_IP:[local_ip]
Src_Port:[local_port]
Dest_IP:[remote_ip]
Dest_Port:[remote_port]
TCP_Flag:0x0002(SYN)
]]>
</send>
<recv type="TCP SYN,ACK" Is_Optional="TRUE"> </recv>
-6-
中国科技论文在线
</scenario>
用户可以根据自己的需要构造各种攻击场景,在场景库中保存每类攻击集合的代表子
集,保证有限的攻击库能够覆盖完备的入侵场景空间。如果某类入侵知识子类存在无穷可能
的入侵场景,则选入库中的入侵场景至少包括边界、略大于下界、略小于上界的值;对有限
的可能情形,所选择的入侵场景应包括最大值、最小值、略大于最小值界、略小于最大值。
对于复合攻击中包含时距约束语法单元的入侵场景类别,我们可以在配置文件中控制时距的
最小值和最大值,测试出 IDS 所能检测到复合攻击中简单攻击时距的范围。
生成策略
根据入侵场景生成具体的攻击流量的过程类似于形式语言中的语言生成器,我们从一个
配置文件中读入内容用于控制生成器的行为,例如攻击流量的目标地址(端口)以及伪造的
源地址(端口),每种语法单元被应用的次数和方式、实例数量以及变量取值范围等,之后
生成器将这些设置与相应的入侵场景关联并保存在入侵场景库中。在需要构造攻击流量时,
我们根据需要,从入侵场景库中选择若干类别入侵场景,并根据这些入侵场景构造攻击流量。
如下图(图 4)所示:
图 4 基于场景的攻击数据生成系统结构图
-7-
中国科技论文在线
5.两种生成策略的分析与比较
基于 IDS 入侵检测规则的攻击数据生成方法能够支持对攻击特征的形式化描述,能模
拟 NIDS 所能检测的所有攻击,且实验环境简单。尽管它改进了直接使用入侵工具(如
NMAP,Scanner,DoSaldhack 等)生成测试数据的方法,然而这种方法的最大的问题是要
依赖某种 NIDS 的入侵规则作为攻击知识库来产生攻击报文,而不同的 IDS 可能从不同的角
度描述入侵,且存在一定的兼容性问题,因此使用这种方法进行测试攻击数据生成缺乏通用
性。
基于场景的攻击数据生成方法能够根据用户定制的攻击场景生成攻击流量,具有很高的
灵活性,而且生成的攻击数据更加接近真实网络中的攻击流量。通过攻击场景描述,可以模
拟现有的攻击流量,也可以生成未发现的新的攻击行为。但是,用户在生成攻击流量之前,
需要首先手工编写场景描述(XML)文件,这对用户有较高的要求:需要有网络安全的背
景,同时对 XML 语言有一定了解。
通过对以上两种攻击数据生成方法的分析,我们可以根据实际的需要选用合适的方法构
造攻击数据。
6.总结以及下一步工作
本文首先分析了现有攻击数据获取的现状以及存在的不足,针对网络复合攻击的特点,
提出了基于 IDS 入侵检测规则的攻击数据生成方法和基于场景的攻击数据生成方法,并设
计了攻击场景的形式化描述:基于 XML 的描述方法,然后给出了基于场景的攻击数据生成
系统的结构框架图,最后对以上两种方法进行了分析和比较。在下一步的工作中,将实现该
攻击数据生成系统的各个模块,并进一步丰富攻击场景库中的攻击模式,最终使系统能够自
动生成网络攻击流量。目前网络攻击行为的复杂多变,国内外关于网络攻击数据自动生成的
研究成果十分有限,这将是今后一个很有发展空间的研究领域。
参考文献
[1] J Mchugh. Testing intrusion detection systems: A critique of the 1998 and 1999 DARPA intrusion detection
system evaluations as performed by Lincoln Laboratory. ACM Trans on Information and System Security, 2000,
3(4):262-294
[2] R Lippmann, et al. Analysis and results of the 1999 DARPA off-line intrusion detection evaluation. Recent
Advance in Intrusion Detection 2000, Toulouse, France, 2000
[3] J Sommers. A framework for malicious workload generation. In: Proc of IMC' 04 Conference. 2004. 229 一
238.
[4] NSS Group. Gigabit intrusion detection systems group test (Edition 3)..
uk/gigabitids/edition3/index, 2005
[5] Wu Xiong, Gong Jian, and Yang Wang. Construction of Multistep Attack Data in IDS Test Journal of
Computer Research and Development 2006
[6] Snort 中文手册, 2004
-8-
中国科技论文在线
Research on Construction of Network Attack Data
PENG Dan
Department of Network Technology, Beijing University of Posts and Telecommunications,
Beijing, PRC (100876)
Abstract
With the trend of network merging, web services become increasingly rich. And the issues about
network security are becoming one of the problems which concern all of us. IDS (Intrusion Detection
System) can effectively detect those intrusion events and deliver alerts to system administrator in time,
which makes it possible that we can quickly response to all the events. Unfortunately, lots of faults
exist in current IDS products, such as high false alarm rates and poor detection accuracy. So building
attack data is very important. It can be used to evaluate our system and applications (including IDS)
and to improve their security. In this paper, we introduce two methods to build attack data: one is based
on the intrusion detection rules of IDS and the other is based on attack scenario. An attack data
building system is also designed using the second method.
Keywords: Constructing Attack Data; IDS; Attack Scenario
作者简介:彭丹,男,1983 年生,硕士研究生,主要研究方向:计算机网络安全、入侵检
测。