网络安全课程设计完整版

网络安全课程设计完整版
网络安全课程设计完整版

网络安全课程设计 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

课程名称: 物联网信息安全管理

设计题目: 基于 TCP协议的网络攻击

学院(直属系): 计算机学院

年级/专业/班: 物联网工程

学生姓名: 宋涌

指导教师: 魏正曦老师

摘要

本课程是物联网工程专业所开设的一门重要实践课程,主要要求掌握网络安全原理和技术在实践中的应用。本课程设计的目的是在理论学习的基础上,动手实践网络安全的相关理论,通过应用所学习的知识,来解决一些实际的网络安全应用问题。在此基础上,真正理解和掌握网络安全的基本原理,具备网络安全方面的分析和动手能力。在网络攻防实验环境中完成TCP/IP协议栈中TCP层重点协议的攻击实验。包括TCP RST攻击、TCP会话劫持和TCP SYN Flood攻击。

关键字:TCP RST攻击、TCP会话劫持和TCP SYN Flood攻击

课题分工

宋涌:TCP会话劫持,和编写课程设计

胡坤:TCP RST攻击,和参考资料查询

周礼佟:TCP SYN Flood攻击,和课程设计分工

一引言

源于 Unix 的网络协议 TC P/IP随着 Internet的飞迅发展 ,已被越来越多的人所使用.然而由于 TCP/IP协议族在设计时并没有过多的考虑网络安全问题 ,黑客事件不断发生 ,使如电子商务等 Internet应用存在着许多不安全因素 .欲防网络攻击 ,必应先知其攻击原理 ,才可正确实施安全策略. 下面是网络内部或外

部人员常用的几种网络攻击方式: ·密码猜测 ( Password Guessing): 主要通过穷举的办法来试探被攻击系统的密码 ,为下一步攻击做好准备 . ·窥探

( Sniffing): 主要通过劫获网络上的数据包来获得被攻击系统的认证信息或其它有价值的信息. ·电子欺骗 ( Spoofing): 通过假冒合法用户的身份来进行网络攻击 ,从而达到掩盖攻击者真实身份 ,嫁祸他人的目的 . ·信息剽窃

( Information Theft): 这是网络攻击的主要目的之一.攻击者通过获得访问被攻击主机的许可权而窃取主机上的重要信息 . ·让主机拒绝服务 (Denial of Service): 是网络攻击的主要目的之一. 这种攻击使主机或网络不能为合法用户

提供服务 .例如攻击者可以用 TC P的 SYN信号淹没的方法来实现这一攻

击 . ·信息破坏 ( Information Destruction): 这也是网络攻击的主要目的之一 .通过篡改或毁坏被攻击主机上的信息达到破坏的目的 . 以上这些攻击主要是利用 TCP /IP协议本身的漏洞而对 TCP/IP协议进行攻击实现的 ,下面分析了几种对 TC P/IP的攻击的实现方式

未来的高技术战争是信息网络战, 以网络中心信息为主的联合作战正在取代传统的平台中心战。TCP/ IP 协议使得世界上不同体系结构的计算机网络互连在一

起形成一个全球性的广域网络 Internet, 实现海、陆、空、天立体战埸信息共享。因此开展 TCP/IP 协议的分析和研究, 寻求其簿弱环节, 能否攻其一点, 而

瘫痪一片, 即以小的投入达到大的产出, 是有效实施计算机网络对抗的关键。在以 TCP/IP 为协议的通信计算机网络中, 通常将每台计算机称为主机, 在

Internet 中的每一台计算机可以访问 Internet 上的其它任意一台计算机, 好像它们在一个局域网内用双绞线或同轴电缆直接连接起来一样 (不同之处是速度比

局域网的慢)。TCP/IP 通信计算机网络结构如图所示。

我们把计算机网络之间相连的设备称为路由器。各主机之间可以通过数据链连接, 也可以通过路由器间接相连。 TCP/IP 协议使用“包” (packet)这个数据单位来发送信息, 图中用箭头指向描述了从主机 C 向主机 J 发送信息包的路径。

二实验原理

TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的

字节流传输。我来用土语解释下上面的几个关键字:

port到port:IP层只管数据包从一个IP到另一个IP的传输,IP层之上的TCP层加上端口后,就是面向进程了,每个port都可以对应到用户进程。

可靠:TCP会负责维护实际上子虚乌有的连接概念,包括收包后的确认包、丢包后

的重发等来保证可靠性。由于带宽和不同机器处理能力的不同,TCP要能控制流

量。

字节流:TCP会把应用进程传来的字节流数据切割成许多个数据包,在网络上发

送。IP包是会失去顺序或者产生重复的,TCP协议要能还原到字节流本来面目。TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议。TCP在IP报文的协议号是6。TCP是一个超

级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型:

图 OSI的七层模型

我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP 在第二层——Data Link层;在第二层上的数据,我们把它叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。同时,我们需要简单的知道,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端。这个基本的流程你需要知道,就是每个数据都会经过数据的封装和解封装的过程。在OSI七层模型中,每一层的作用和对应的协议如下:

图 OSI七层模型中,每一层的作用和对应的协议

TCP是一个协议,那这个协议是如何定义的,它的数据格式是什么样子的呢?要进行更深层次的剖析,就需要了解,甚至是熟记TCP协议中每个字段的含义。

图 OSI含义

上面就是TCP协议头部的格式,由于它太重要了,是理解其它内容的基础,下面就将每个字段的信息都详细的说明一下。

Source Port和Destination Port:分别占用16位,表示源端口号和目的端口号;用于区别主机中的不同进程,而IP地址是用来区分不同的主机的,源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能唯一的确定一个TCP连接;

Sequence Number:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节在数据流中的序号;主要用来解决网络报乱序的问题;

Acknowledgment Number:32位确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志(下面介绍)为1时该确认序列号的字段才有效。主要用来解决不丢包的问题;

Offset:给出首部中32 bit字的数目,需要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能表示15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部。然而,没有任选字段,正常的长度是20字节;

TCP Flags:TCP首部中有6个标志比特,它们中的多个可同时被设置为1,主要是用于操控TCP的状态机的,依次为URG,ACK,PSH,RST,SYN,FIN。每个标志位的意思如下:

URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;

ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0;

PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;

RST:这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包;

SYN:表示同步序号,用来建立连接。SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1, ACK=0;连接被响应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手;

FIN:表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。

Window:窗口大小,也就是有名的滑动窗口,用来进行流量控制

三设计过程

TCP RST攻击

RST攻击原理:

从上面TCP协议图可以看到,标志位共有六个,其中RST位就在TCP异常时出现通过三次握手建立连接

下面我通过A向B建立TCP连接来说明三次握手怎么完成的。

为了能够说清楚下面的RST攻击,需要结合上图说说:SYN标志位、序号、滑动窗口大小。

建立连接的请求中,标志位SYN都要置为1,在这种请求中会告知MSS段大小,就是本机希望接收TCP包的最大大小。

发送的数据TCP包都有一个序号。它是这么得来的:最初发送SYN时,有一个初始序号,根据RFC的定义,各个操作系统的实现都是与系统时间相关的。之后,序号的值会不断的增加,比如原来的序号是100,如果这个TCP包的数据有10个字节,那么下次的TCP包序号会变成110。

滑动窗口用于加速传输,比如发了一个seq=100的包,理应收到这个包的确认

ack=101后再继续发下一个包,但有了滑动窗口,只要新包的seq与没有得到确认的最小seq之差小于滑动窗口大小,就可以继续发。

滑动窗口毫无疑问是用来加速数据传输的。TCP要保证“可靠”,就需要对一个数据包进行ack确认表示接收端收到。有了滑动窗口,接收端就可以等收到许多

包后只发一个ack包,确认之前已经收到过的多个数据包。有了滑动窗口,发送端在发送完一个数据包后不用等待它的ack,在滑动窗口大小内可以继续发送其他数据包。

四次握手的正常TCP连接关闭:

FIN标志位也看到了,它用来表示正常关闭连接。图的左边是主动关闭连接方,右边是被动关闭连接方,用netstat命令可以看到标出的连接状态。

FIN是正常关闭,它会根据缓冲区的顺序来发的,就是说缓冲区FIN之前的包都发出去后再发FIN包,这与RST不同。

RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。

TCP处理程序会在自己认为的异常时刻发送RST包。例如,A向B发起连接,但B 之上并未监听相应的端口,这时B操作系统上的TCP处理程序会发RST包。

又比如,AB正常建立连接了,正在通讯时,A向B发送了FIN包要求关连接,B 发送ACK后,网断了,A通过若干原因放弃了这个连接(例如进程重启)。网通了后,B又开始发数据包,A收到后表示压力很大,不知道这野连接哪来的,就发了个RST包强制把连接关了,B收到后会出现connect reset by peer错误。

RST攻击:A和服务器B之间建立了TCP连接,此时C伪造了一个TCP包发

给B,使B异常的断开了与A之间的TCP连接,就是RST攻击了。实际上从上面RST标志位的功能已经可以看出这种攻击如何达到效果了。

那么伪造什么样的TCP包可以达成目的呢?我们至顶向下的看。

假定C伪装成A发过去的包,这个包如果是RST包的话,毫无疑问,B将会丢弃与A的缓冲区上所有数据,强制关掉连接。

如果发过去的包是SYN包,那么,B会表示A已经发疯了(与OS的实现有关),正常连接时又来建新连接,B主动向A发个RST包,并在自己这端强制关掉连接。

这两种方式都能够达到复位攻击的效果。似乎挺恐怖,然而关键是,如何能伪造成A发给B的包呢?这里有两个关键因素,源端口和序列号。

一个TCP连接都是四元组,由源IP、源端口、目标IP、目标端口唯一确定一个连接。所以,如果C要伪造A发给B的包,要在上面提到的IP头和TCP头,把源IP、源端口、目标IP、目标端口都填对。这里B作为服务器,IP和端口是公开的,A是我们要下手的目标,IP当然知道,但A的源端口就不清楚了,因为这可能是A随机生成的。当然,如果能够对常见的OS如windows和linux找出生成source port规律的话,还是可以搞定的。

那么,序列号不是问题,源端口会麻烦点,如果各个操作系统不能完全随机的生成源端口,或者黑客们能通过其他方式获取到source port,RST攻击易如反掌,后果很严重

防御:对付这种攻击也可以通过防火墙简单设置就可以了。建议使用防火墙

将进来的包带RST位的包丢弃就可以了。

RST攻击只能针对tcp。对udp无效。

对付这种攻击也可以通过防火墙简单设置就可以了。

TCP会话劫持

会话劫持原理:例如你Telnet到某台主机,这就是一次Telnet会话;你浏览

某个网站,这就是一次HTTP会话。而会话劫持(Session Hijack),就是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程当中,攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行监听,甚至可以是代替某一方主机接管会话。我们可以把会话劫持攻击分为两种类型:1)中间人攻击(Man In The Middle,简称MITM),2)注射式攻击(Injection);并且还可以把会话劫持攻击分为两种形式:1)被动劫持,2)主动劫持;被动劫持实际上就是在后台监视双方会话的数据流,从中获得敏感数据;而主动劫持则是将会话当中的某一台主机"踢"下线,然后由攻击者取代并接管会话,这种攻击方法危害非常大,攻击者可以做很多事情,比如"cat etc/"(FreeBSD下的Shadow文件)。

会话劫持利用了TCP/IP工作原理来设计攻击。TCP使用端到端的连接,即TCP 用(源IP,源TCP端口号,目的IP,目的TCP端号)来唯一标识每一条已经建立连接的TCP链路。另外,TCP在进行数据传输时,TCP报文首部的两个字段序号(seq)和确认序号(ackseq)非常重要。序号(seq)和确认序号(ackseq)是与所携带TCP数据净荷(payload)的多少有数值上的关系:序号字段(seq)指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段(ackseq)指出了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。因此,对于一台主机来说,其收发的两个相临TCP报文之间的序号和确认序号的关系为:它所要发出的报文中的seq值应等于它所刚收到的报文中的ackseq的值,而它所要发送报文中ackseq的值应为它所收到报文中seq的值加上该报文中所发送的TCP净荷的长度。

TCP会话劫持的攻击方式可以对基于TCP的任何应用发起攻击,如HTTP、FTP、Telnet等。对于攻击者来说,所必须要做的就是窥探到正在进行TCP通信的两台主机之间传送的报文,这样攻击者就可以得知该报文的源IP、源TCP端口号、目的IP、目的TCP端号,从而可以得知其中一台主机对将要收到的下一个TCP报文段中seq和ackseq值的要求。这样,在该合法主机收到另一台合法主机发送的TCP 报文前,攻击者根据所截获的信息向该主机发出一个带有净荷的TCP报文,如果该主机先收到攻击报文,就可以把合法的TCP会话建立在攻击主机与被攻击主机之间。带有净荷的攻击报文能够使被攻击主机对下一个要收到的TCP报文中的确认序号(ackseq)的值的要求发生变化,从而使另一台合法的主机向被攻击主机发出的报文被被攻击主机拒绝。TCP会话劫持攻击方式的好处在于使攻击者避开了被攻击主机对访问者的身份验证和安全认证,从而使攻击者直接进入对被攻击主机的的访问状态,因此对系统安全构成的威胁比较严重。

攻击过程:

1找到一个活动的会话

会话劫持的第一步要求攻击者找到一个活动的会话。这要求攻击者嗅探在子网上的通讯。攻击者将寻找诸如FTP之类的一个已经建立起来的TCP会话。如果这个子网使用一个集线器,查找这种会话是很容易的。一个交换的网络需要攻击者破坏地址解析协议。

2猜测正确的序列号码

下一步,攻击者必须能够猜测正确的序列号码。请记住,一个基本的TCP协议设计是传输的数据的每一个字节必须要有一个序列号码。这个序列号用来保持跟踪数据和提供可靠性。最初的序列号码是在TCP协议握手的第一步生成的。目的地系统使用这个值确认发出的字节。这个序列号字段长度有32个字节。这就意味着可能有大约4,294,967,295个序列号。一旦这个序列号一致,这个账户就会随着数据的每一个字节逐步增加。

3把合法的用户断开

一旦确定了序列号,攻击者就能够把合法的用户断开。这个技术包括拒绝服务、源路由或者向用户发送一个重置命令。无论使用哪一种技术,这个目的都是要让用户离开通讯路径并且让服务器相信攻击者就是合法的客户机。

如果这些步骤取得成功,攻击者现在就可以控制这个会话。只要这个会话能够保持下去,攻击者就能够通过身份验证进行访问。这种访问能够用来在本地执行命令以便进一步利用攻击者的地位。

上机:TCP会话劫持数据分析:

图分析分组1和分组2数据

图排除非客户端的MAC数据

10个ASCII码字符,前8个ASCII码为0x08字符,后面2个ASCII为0x0a 字符。ASCII码0x08代表退格符,ASCII码0x0a代表换行符。当这个分组加入TCP 数据流后,服务器会认为用户键入退格符8次,然后回车符两次。虽然看起来可能不会有太大的危害,它的目的仅仅是清空合法用户的输入,然后显示一个空白命令行给用户。但是,这个可以帮组确保攻击者构造的下一组所能实现的功能,不再是

简单地在合法用户输入的任何命令行末尾添加一些信息。如图所示

图分组1数据信息

第二个伪造分组的序号为243,含有37个字节的数据。主要包括以下的命令:echo “echo HACKED” >>$HOME/.profile。这个命令后紧跟着一个ASCII码为0x0a的字符,提示换行输入新的命令。这个命令会把“echoHACKED”字符添加到用户的根目录下名为.profile的文件中。在一些命令行shell中,用户登录后首先读取:profile文件并执行其中所有命令。用户通常都根据需要为创建他们的工作环境而执行一些列命令。将这些命令放置到.profile文件中意味着用户在每次登录后都不用手动地执行这些设置命令。通过在.profile文件中添加“echoHACKED”

命令,当用户下次登录时,他会在屏幕上看见“HACKED”字符串。如图所示

图分组2数据信息

TCP会话终止数据分析:

在文件中,攻击者成功地加入了实现其自身的“hijack”会话,同时使合法客户端和服务器无法通信。

在文件中,攻击者发送了含有它自己的分组535。这次攻击者是伪装为服务器向客户端发送伪造的分组。客户端用它自己分组538中的FIN位作为响应。而对于真正的服务器,它是第一次接收到客户端关闭连接的分组,这样它会认为客户端希望断开连接,并以一个分组540中的FIN位作为响应。客户端接收到这个分组后,服务器和客户端的连接已经断开,客户端会发送一个窗口位为0和RST位置的

分组。这样,就完全断开了客户端和服务器的连接。如图所示

图 FIN攻击

文件中,攻击者向客户段发送了一个RST位置位的分组339。攻击者再次伪装服务器,并向客户端发送伪造的分组。客户端会立刻直接关闭与服务器的连接,而不是按通常的三次握手的步骤来关闭连接。而此时真正的服务器并不知道发生了这些,它会继续向客户端发送分组340。当分组到达客户端后,客户端会响应连接

已经关闭的信息。如图所示

图 RST攻击

图 ftp攻击

结果分析:在TCP会话劫持中,只有攻击者发送的是接受者所期望的序号的分组,就可以成功地实现“会话窃用”。在“会话窃取”成功后,导致正常主机和服务器两边一直僵持状态。

在TCP会话终止中,攻击者发送了一个带FIN或RST位的信息到目标主机,他会成功关闭这次连接。但是它没有获得非法途径访问资源,能阻止合法用户访问资源。然而攻击者通过网络嗅探到的用户口令与服务器建立一个FTP连接,并获取服务器文件。

预防:处理会话劫持问题有两种机制:预防和检测。预防措施包括限制入网的连接和设置你的网络拒绝假冒本地地址从互联网上发来的数据包。

加密也是有帮助的。如果你必须要允许来自可信赖的主机的外部连接,你可以使用Kerberos或者IPsec工具。使用更安全的协议,FTP和Telnet协议是最容易受到攻击的。SSH是一种很好的替代方法。SSH在本地和远程主机之间建立一个加密的频道。通过使用IDS或者IPS系统能够改善检测。交换机、SSH等协议和更随

机的初始序列号的使用会让会话劫持更加困难。此外,网络管理员不应该麻痹大意,有一种安全感。虽然会话劫持不像以前那样容易了,但是,会话劫持仍是一种潜在的威胁。允许某人以经过身份识别的身份连接到你的一个系统的是需要认真对付的。

TCP SYN Flood攻击

攻击原理

问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK 报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击通常主机A与主机B的每一次T P连接都要经过三次握手的过程

第一次握手主机A向主机B发送SYN请求主机A将它随机产生的初始序列号ISN传送给主机B请求建立T P连接。

第二次握手主机B向主机A回应SYN+A K主机B接收到来自主机A的带有SYN标志的ISN后将自己的随机的初始序列号ISN连同应答信息A K一同返回给主机A。

第三次握手主机A向主机B回应SYN十A K主机A再将主机B传送来ISN 及应答信息A K返回给主机B。

通过以上三次握手就建立了主机A与B的T P连接

在TcP的三次握手中当主机B接收到主机A中的SYN请求时即第一次握手与第二次握手之间的连接称为半开连接。如果计算机有限的内存缓冲区中充满了虚假的半开连接信息该计算机就会对接下来的连接停止响应直到缓冲区里的连接企图超时。

根据TCP连接的漏洞恶意的主机A想攻击主机B,A可以使用发包软件在短时间用伪造的不存在的IP地址作为源地址不断地向防火墙发送具有SYN请求的TCP数据包。主机B在收到SYN请求后会向请求SYN数据包的源地址发送一个SYN十ACK据包。由于源地址是一个伪造的地址主机B不可能收到伪造IP地址的

SYN+ACK回应数据包。主机B在短时间内有大量的连接请求等待确认。由于主机B 的内存缓冲区是有限的当主机B中未释放的连接请求数量超过主机B的限制时候主机B就无法再对新的连接请求进行响应就算是正常的连接请求也不会被主机B接受这时主机B受到了TCPSYNFlood攻击。SYN攻击实现起来非常的简单在互联网上有大量现成的SYN攻击工具。如运行Windows系统下的SYN工具选择随机的源地址和源端口并填写目标机器地址和选择允许访问的T P端口通常Windows系统开放T P139端口UNIX系统开放TCP7、21、23等端口激活运行很快就会发现目标系统运行缓慢。

检测TCPSYNFlood攻击对于受到TCPSYNFlood攻击的计算机检测SYN攻击比较容易。当服务器上有大量的半连接状态时特别是源IP地址是随机的则可以断定这是一次TCPSYNFlood攻击。

在Linux系统中使用netstat工具可显示网络连接、路由表和网络接口信息通过简单的分析可判断是否遭受了SYN攻击可以发现很多连接处于SYN_RECV 状态Windows系统中是SYN_RECEIVED状态源IP地址都是随机的表明这是一带有IP欺骗的TCPSYNFlood攻击。

实验过程:

测试平台的网络拓扑结构如图所示。

图用软件对目标计算机进行拒绝服务攻击并测试攻击效果。

在B机打开Sniffer Portable,配置好捕捉从任意主机发送给本机的IP 数据包并启动捕捉进程如图所示。

图未攻击前与B机连接的主机数

2

3

图 xdos攻击端

4“传输地图”中看到大量伪造IP 的主机请求与B

机建立连接。如图所示。

图无法访问网站

图攻击时与B机建立的连接

5 停止攻击后B机恢复快速响应。打开捕捉的数据包可以看到有大量伪造IP 地址的主机请求与B机连接的数据包且都是只请求不应答。以至于B机保持有大量的半开连接。如图所示。

图捕捉到攻击的数据包

防御:从防御角度来说,有几种简单的解决方法:

第一种是缩短SYN Timeout时间,由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度 x SYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃改连接的时间,例如设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。

第二种方法是设置SYN Cookie,就是给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。

可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW 随机改写IP报文中的源地址,以上的方法将毫无用武之地。

四总结与体会

随着互联网的飞速发展,网络安全逐渐成为一个潜在的巨大问题。网络安全性是一个涉及面很广泛的问题,其中也会涉及到是否构成犯罪行为的问题。在其最简单的形式中,它主要关心的是确保无关人员不能读取,更不能修改传送给其他接收者的信息。此时,它关心的对象是那些无权使用,但却试图获得远程服务的人。安全性也处理合法消息被截获和重播的问题,以及发送者是否曾发送过该条消息的问题。

我们需要在理论学习的基础上,动手实践网络安全的相关理论,通过应用所学习的知识,来解决一些实际的网络安全应用问题。在此基础上,真正理解和掌握网络安全的基本原理,具备网络安全方面的分析和动手能力。在网络攻防实验环境中完成TCP/IP协议栈中TCP层重点协议的攻击实验。包括TCP RST攻击、TCP会话劫持和TCP SYN Flood攻击。

这次课程设计增强了我们对核心理论知识的分析理解和实际转化能力。培养了理论联系实际和初步的独立工作能力。课程设计作为一次团队设计,通过分工协作,增强大家的团队精神。

同时,通过实践小组成员进一步理解掌握了tcp的基本理论、方法、技术和基本知识,培养了方案设计与验证的能力以及实践软件开发的过程和步骤,初步具有了中小型软件项目的需求分析、设计、编码、测试和维护的能力。

参考文献

1 段云所魏仕民唐礼用陈钟《信息安全概论》高等教育出版社

2 韩松. 卫星 TCP/ IP 数据传输技术. 现代电信科技, 2000;(2):11- 15

3 村山公保. TCP/ IP 网络工具篇.北京: 科学出版社, 2003

4 贾铁军《网络安全技术及应用》机械工业出版社

相关主题
相关文档
最新文档