网络入侵测试系统的设计与开发

2020-01-06 10:24张卫华
网络安全技术与应用 2020年1期
关键词:缓冲区箭头漏洞

◆张卫华

网络入侵测试系统的设计与开发

◆张卫华

(山东理工职业学院科研处 山东 272100)

入侵检测过程中,如何在实验室环境下实现已知的各种入侵手段是评价入侵检测系统性能的重要基础条件。本文提出了一种在实验室环境下实现已知的各种入侵手段的系统工具:网络入侵测试系统。首先分析了网络入侵测试系统的作用和在入侵检测系统中的必要性,然后介绍了网络入侵测试系统的实现原理,并在实现原理的支持下详尽介绍了入侵测试系统的设计和开发情况,最后是对网络入侵测试系统的实验测试。仿真结果表明该系统有效可行。

入侵检测;系统工具;网络入侵

1 前言

入侵检测技术是最近十余年发展起来的一种安全机制。和传统的预防性安全机制相比,入侵检测具有智能监控、实施探测、智能响应、易于配置等特点,能及时发现并报告系统和网络中的攻击迹象和异常事件。

当一个网络入侵检测系统的设计和实现完成后,入侵检测系统(IDS)是否达到设计目标就成为最重要的问题。如何评价一个入侵检测系统,评价中需要什么样的性能指标,这就是入侵检测评估要解决的问题。

目前的入侵检测系统的性能评价相关的标准和测试环境等研究很缺乏,且各个IDS厂商之间几乎不能进行互相操作。根据Porras,Debar等的研究工作,[7]给出了评价入侵检测系统性能的5个要素:准确性(Accuracy)、处理性能(performance)、完备性(Completeness)、容错性(Fault Tolerance)、及时性(Timeliness)。IDS的测试评估者主要来自开发者、入侵者和最终用户。开发者的测试发生在IDS的早期,测试的环境也是精心设计的,有一定的局限性。入侵者和最终用户的测试评估是在实际使用中发生的,因此,入侵者和最终用户的评估结果才是真正有效果的评估。

网络入侵测试系统就是在上述背景下的一个实验室条件下的具有模拟攻击功能的一个测试软件系统。系统主要用于实现一些常见的已知的网络攻击方式。在入侵检测系统的测试中,将已知的攻击种类分为几个类别,在各个类别中挑选出一些具有典型性的攻击方式来实现实验室的仿真入侵测试。仿真结果表明该系统是有效可行的。

2 网络入侵

信息安全的威胁有很多种,网络入侵的方式也是复杂多变的。事实上很多时候信息安全威胁并不是单方面或者一维的,而大多数的网络入侵也不是仅仅依靠某种单一的方式来实现的,通常是综合了多种入侵手段来达成某种威胁的。网络入侵简单可分为四类:漏洞扫描、拒绝服务攻击、分布式拒绝服务攻击、缓冲区溢出攻击。

扫描并不是一种直接的攻击手段,扫描不能完成对目标的某种破坏。但是扫描可以提供很多有益的信息,这些是进行更进一步攻击所必需的。扫描的原理就是向远程的主机的不同端口服务发送访问请求,并且等待目标的回应,根据目标回应的不同情况,可以得到大量的信息。常见的扫描的分类有TCP Connect 扫描,TCP SYN 扫描,TCP FIN扫描,TCP XMAS树扫描,TCP ACK扫描,UDP扫描。

拒绝服务攻击(DoS)简单点说就是能够使得被攻击目标不能再提供服务或者运行的攻击手段。拒绝服务攻击可以有物理的方式,比如切断供给服务器上网电源。但是通常意义上的拒绝服务攻击指的是利用网络协议的缺点或者程序的缺点进行攻击而达到被攻击主机或者网络不能正常运行的攻击方式。典型的拒绝服务攻击手段有如下的几种:SYN FLOOD,Land攻击,Smurf攻击,泪滴(Teardrop),Ping of Death。

缓冲区溢出攻击是一类很广泛的攻击方法。缓冲区溢出的原因在于程序中存在缓冲区不进行强制边界检查,致使可以接收超出缓冲区大小的数据,导致指令堆栈被覆盖。更致命的是,可以利用缓冲区溢出使得程序运行某些恶意的代码,取得系统的控制权。缓冲区溢出攻击种类十分繁多,每个漏洞都是一个缓冲区溢出问题。

3 系统需求分析

网络入侵测试系统实质上是一个客户端程序,是一个集合了三种常见网络攻击手段的网络攻击综合平台。三种攻击手段包括:扫描探测攻击(代号S),拒绝服务攻击(代号D)和远程缓冲区溢出攻击(代号E)。系统是一个Windows控制台程序。使用命令行界面与用户进行交互,系统的功能要求见表1和表2。

表1 程序部分属性

表2 系统的输入和输出目标

根据需求规定,可以通过结构化分析(SA)方法得到一个系统的逻辑模型。

根据系统的功能要求,将系统在逻辑上分为三个功能部分。分别是扫描攻击部分,DoS攻击部分和Exploit攻击部分。同时这也是逻辑图的第一层。见图1。

图1 系统第一层数据流图

对第一层图的主要加工进行进一步的抽象和分解,可以得到第二层数据流图,该层总共包括三个图。这三个图分别是图1中的三个加工再次进行分解之后形成的。利用不断的分解和抽象,就可以把一个系统的问题最终变成很多易于理解和实现的小的问题。这也就是数据流图“由上而下,不断分解”的基本思想和手段。

图2 扫描攻击加工的数据流图

扫描攻击加工部分的详细逻辑模型参见图2,它是图1的加工2的分解。这个图的主要表达的意思是:扫描攻击的参数首先经过加工2.1的处理,错误的被丢弃,正确的交给加工2.2建立TCP连接。加工2.3处理连接的返回结果,连接成功的表示是活动端口,不成功的是非活动端口。最后输出扫描的结果。

图3 DoS攻击加工的数据流图

DoS攻击部分的细化逻辑模型参见图3,它是图1中的加工3的分解和细化,是一个第二层的数据流图。DoS攻击的逻辑过程大致分为两个加工,加工3.1和3.2。加工3.1用来进行参数处理,加工3.2得到参数后进行发包,实现攻击。

图4 Exploit攻击加工的数据流图

Exploit攻击部分的详细逻辑模型参见图4,它是图1中的加工4的分解,是一个第二层的数据流图。这个过程分为5个加工。首先加工4.1进行参数处理。加工4.2建立连接,因为要发送数据给远程主机,所以要使用可靠的连接。加工4.3发送Shellcode到远程主机。加工4.4向远程主机发送溢出代码。加工4.5是在溢出攻击完成后,利用Shellcode获得权限,跟远程主机建立远程命令控制,达到控制远程主机的任务。

4 系统设计与实现

系统的结构图是根据系统的逻辑关系进行适当的推理得到的。它主要反映了系统的主题架构,如图5。结构图的方框代表一个功能模块,这些模块可以是一个子程序,也可以是一段功能代码。各个方框之间的箭头表示各个模块之间的调用关系。箭头的指向表示箭头起点的模块调用箭头终点的模块。箭头直线上的数字代表着每个箭头直线上的数据。

图5 系统结构图

系统结构图上箭头上的数据包括两部分,既有上层模块调用下层模块传给的数据又有被调用的模块返回给调用模块的数据。但是并不是所有的箭头都会有数据产生。因为在结构图中不能完整的标注数据,箭头上的数据的具体内容见表3。在表3中数据序号的数字对应于图3中的箭头上的数字。IN表示的是调用模块传递给被调用模块的数据,OUT表示的是被调用模块返回给调用模块的数据。

表3 系统结构图箭头上的数据

5 实验仿真

实验目标是对网络入侵测试系统进行实际测试,在搭建好的平台和环境下利用网络入侵测试系统对目标主机进行攻击,检测系统是否可以实现应有的功能。

实验环境是两台电脑构造的一个简单的网络环境。两台主机的主要配置与性能如下。作为攻击机的主机的配置为AMDAthlon(tm)64位双核CPU 4000+,主频为2.1GHZ.物理内存位1G,系统是Windows sp2 2002版,网卡是RTL8168 8111的10/100M自适应网卡。作为目标机的主机的配置是intel 酷睿2 T6400CPU,物理内存1G,主频2.0GHZ,系统是Windows sp2,网卡是broadcom的10/100M自适应网卡。两台主机的防火墙关闭,杀毒软件等安全软件全部关闭或者卸载,也就是说两台主机在没有任何特别的保护下运行,或者称是裸机运行。

实验的方案分为六步。每个步骤的实验操作设计如下。第一步是打开可执行程序。第二步进行扫描探测。第三步进行DoS攻击。第四步进行漏洞攻击。第五步是漏洞攻击之后连接目标主机进行控制。第六步是退出可执行程序。因为网络入侵测试系统是一个综合的系统,所有的三种攻击实验将在一次完整攻击实验完成后会返回主界面的功能。然后接着进行再一次的攻击操作。

系统设计的程序最后形成的可执行文件的名称是a.exe。首先第一步打开可执行文件a.exe。

图6 打开可执行程序的主界面

图6所示的就是程序的主界面,程序的主界面给出了一个参数的说明,内容包括三种攻击的代码和相应的要输入的规格化的参数。在说明之后要求用户按照参数说明输入对应的攻击方式的参数。

图7 输入扫描参数后的界面

第二步是进行扫描探测的实验。在打开的主界面上,用户输入跟扫描功能说明的要求一样的扫描参数。输入后的界面情况如图7所示。

图8 扫描过程和结果

图8所示的扫描的过程和扫描的结果。在图8中和图9中可以看到,扫描结束后程序自动返回了主界面。

图9 DoS攻击过程

第三步是进行DoS攻击。经过第二步的扫描后,程序顺利地完成扫描并返回到了主界面。输入DoS攻击参数之后,再输入D选择DoS攻击,DoS攻击模块开始运行。在攻击过程中,会显示线程数目等攻击状态。攻击结束后,输出攻击终止提示,并返回到主界面。

图10 漏洞攻击过程

第四步是进行漏洞攻击。输入代码E,选择漏洞攻击方式,程序进入漏洞攻击过程,漏洞攻击的每一个步骤的状态都会在控制台输出,Exploit发送成功说明漏洞攻击过程已经实现。

图11 直接Telnet目标主机的4444端口

第五步是对漏洞攻击的目标主机进行远程控制。方法是连接Telnet目标主机的4444端口,如图11所示。执行远程连接时需预设目标主机的445和4444端口是开放的,Server 服务是运行的,目标系统没有打漏洞补丁。

Telnet连接之后,很快就会执行成功,如图12所示。

图12 Telnet目标主机成功

图12就是Telnet 4444端口之后的情况。Telnet连接成功,也就说明了之前的溢出攻击是成功的。

仿真结果表明,系统程序能较顺畅地实现三种攻击,程序的主要功能均可以实现,该系统程序符合设计要求。

6 结论

本文利用软件工程的科学方法,设计和开发了一种网络入侵测试系统,实现了一个可以实现拒绝服务攻击、扫描攻击、堆栈溢出漏洞攻击三种攻击方式的可执行程序。仿真结果表明该系统是有效可行的。

[1]潘志松.基于神经网络的入侵检测[D].南京:南京航空航天大学,2003.

[2]胡道元,闵净化.网络安全[M].北京:清华大学出版社,2007:3-13.

[3]沈林兴,张淑平.程序员教程[M].北京:清华大学出版社,2008:405-418.

[4]William Stallings. Network Security:Essentials: Application and Standards[M]. Prentice-Hill,2000.

[5]曹元大,薛静锋,祝烈煌,阎慧.入侵检测技术[M].北京:人民邮电出版社,2008:1-11,128-157.

[6]Denning D.E. An intrusion detection model[J]. IEEE Transaction on Software Engineering,1987-9-13:222-232.

[7]Heberlein L.T.A network security monitor[C]. Proceeding of the IEEE Symposium on Research in Security and Privacy.Oakland,CA.IEEE,1990:296-304.

[8]谢希仁.计算机网络(第五版)[M].北京:电子工业出版社,2008:180-220.

[9]张雪兰,谭毓安,李元章.汇编语言程序设计—从DOS到Windows[M].北京:清华大学出版社,2006:12-37.

[10]陈波.SYN Flood攻击的原理、实现与防范[D].南京:解放军理工大学,2003.

猜你喜欢
缓冲区箭头漏洞
漏洞
基于selenium的SQL注入漏洞检测方法
串行连续生产线的可用度与缓冲库存控制研究*
基于ARC的闪存数据库缓冲区算法①
漏洞在哪儿
运载火箭
初涉缓冲区
本期导读
寻宝历险记(6)
天地大转盘