《2022年网络安全课程设计 .pdf》由会员分享,可在线阅读,更多相关《2022年网络安全课程设计 .pdf(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程名称 :物联网信息安全管理设计题目 :基于 TCP 协议的网络攻击学院(直属系 ):计算机学院年级/专业/班:物联网工程学生姓名 : 14101070113宋涌14101070124 周礼佟14101070104 胡坤指导教师 :魏正曦老师完成日期: 2017.1.12 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 25 页 - - - - - - - - - 摘要本课程是物联网工程专业所开设的一门重要实践课程,主要要求掌握网络安全原理和技术在实践中的应用。 本课程
2、设计的目的是在理论学习的基础上,动手实践网络安全的相关理论, 通过应用所学习的知识, 来解决一些实际的网络安全应用问题。 在此基础上, 真正理解和掌握网络安全的基本原理,具备网络安全方面的分析和动手能力。在网络攻防实验环境中完成TCP/IP 协议栈中 TCP层重点协议的攻击实验。包括TCP RST 攻击、 TCP会话劫持和 TCP SYN Flood攻击。关键字: TCP RST 攻击、 TCP会话劫持和 TCP SYN Flood攻击课题分工宋涌:TCP会话劫持,和编写课程设计胡坤:TCP RST 攻击,和参考资料查询。周礼佟:TCP SYN Flood 攻击,和课程设计分工名师资料总结 -
3、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 25 页 - - - - - - - - - 摘要. 2 一引言 . 4 二实验原理 . 5 三设计过程 . 8 3.1 TCP RST 攻击 . 8 3.2 TCP会话劫持 . 12 3.3 TCP SYN Flood 攻击 . 21 四总结与体会 . 24 参考文献 . 25 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3
4、 页,共 25 页 - - - - - - - - - 一引言源于 Unix 的网络协议TC P/IP随着 Internet 的飞迅发展,已被越来越多的人所使用.然而由于TCP/IP协议族在设计时并没有过多的考虑网络安全问题,黑客事件不断发生,使如电子商务等Internet 应用存在着许多不安全因素.欲防网络攻击 ,必应先知其攻击原理,才可正确实施安全策略. 下面是网络内部或外部人员常用的几种网络攻击方式: 密码猜测( Password Guessing): 主要通过穷举的办法来试探被攻击系统的密码,为下一步攻击做好准备. 窥探 ( Sniffing): 主要通过劫获网络上的数据包来获得被攻击
5、系统的认证信息或其它有价值的信息. 电子欺骗( Spoofing): 通过假冒合法用户的身份来进行网络攻击,从而达到掩盖攻击者真实身份,嫁祸他人的目的. 信息剽窃( Information Theft): 这是网络攻击的主要目的之一.攻击者通过获得访问被攻击主机的许可权而窃取主机上的重要信息. 让主机拒绝服务(Denial of Service): 是网络攻击的主要目的之一. 这种攻击使主机或网络不能为合法用户提供服务.例如攻击者可以用TC P 的SYN 信号 淹没 的方 法 来 实 现 这一 攻击. 信 息 破 坏( Information Destruction): 这也是网络攻击的主要目
6、的之一.通过篡改或毁坏被攻击主机上的信息达到破坏的目的. 以上这些攻击主要是利用TCP /IP 协议本身的漏洞而对TCP/IP协议进行攻击实现的,下面分析了几种对TC P/IP的攻击的实现方式未来的高技术战争是信息网络战, 以网络中心信息为主的联合作战正在取代传统的平台中心战。 TCP/ IP 协议使得世界上不同体系结构的计算机网络互连在一起形成一个全球性的广域网络Internet, 实现海、陆、 空、天立体战埸信息共享。因此开展TCP/IP 协议的分析和研究 , 寻求其簿弱环节 , 能否攻其一点 , 而瘫痪一片 , 即以小的投入达到大的产出, 是有效实施计算机网络对抗的关键。在以TCP/IP
7、 为协议的通信计算机网络中, 通常将每台计算机称为主机, 在 Internet 中的每一台计算机可以访问Internet 上的其它任意一台计算机, 好像它们在一个局域网内用双绞线或同轴电缆直接连接起来一样(不同之处是速度比局域网的慢)。TCP/IP 通信计算机网络结构如图所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 25 页 - - - - - - - - - 图 1.1 我们把计算机网络之间相连的设备称为路由器。各主机之间可以通过数据链连接, 也可以通过路由器间
8、接相连。TCP/IP 协议使用“包”(packet)这个数据单位来发送信息 , 图中用箭头指向描述了从主机C 向主机 J 发送信息包的路径。二实验原理TCP 是在 IP 网络层之上的传输层协议,用于提供port 到 port 面向连接的可靠的字节流传输。我来用土语解释下上面的几个关键字:port 到 port:IP 层只管数据包从一个IP 到另一个 IP 的传输, IP 层之上的 TCP层加上端口后,就是面向进程了,每个port 都可以对应到用户进程。可靠: TCP 会负责维护实际上子虚乌有的连接概念,包括收包后的确认包、丢包后的重发等来保证可靠性。由于带宽和不同机器处理能力的不同,TCP 要
9、能控制流量。字节流: TCP 会把应用进程传来的字节流数据切割成许多个数据包,在网络上发送。 IP 包是会失去顺序或者产生重复的,TCP 协议要能还原到字节流本来面目。TCP(Transmission Control Protocol 传输控制协议 ) 是一种面向连接 (连接导向 )的、可靠的、基于 IP 的传输层协议。 TCP在 IP 报文的协议号是6。TCP是一个超级麻烦的协议, 而它又是互联网的基础, 也是每个程序员必备的基本功。首先来看看 OSI的七层模型 : 图 2.1 OSI 的七层模型我们需要知道 TCP工作在网络 OSI的七层模型中的第四层Transport 层,IP在第三层
10、Network 层,ARP 在第二层 Data Link层; 在第二层上的数据,我们把它叫 Frame , 在第三层上的数据叫Packet, 第四层的数据叫 Segment 。 同名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 25 页 - - - - - - - - - 时, 我们需要简单的知道, 数据从应用层发下来, 会在每一层都会加上头部信息,进行 封装,然后再发送到数据接收端。这个基本的流程你需要知道,就是每个数据都会经过数据的封装和解封装的过程。 在 OSI七层
11、模型中, 每一层的作用和对应的协议如下:图 2.2OSI 七层模型中,每一层的作用和对应的协议TCP是一个协议,那这个协议是如何定义的,它的数据格式是什么样子的呢?要进行更深层次的剖析,就需要了解,甚至是熟记TCP协议中每个字段的含义。图 2.3OSI 含义上面就是 TCP协议头部的格式, 由于它太重要了, 是理解其它内容的基础, 下面就将每个字段的信息都详细的说明一下。Source Port 和 Destination Port: 分别占用 16 位, 表示源端口号和目的端口号;用于区别主机中的不同进程,而 IP 地址是用来区分不同的主机的, 源端口号和目的端口号配合上IP 首部中的源 IP
12、 地址和目的 IP 地址就能唯一的确定一个TCP连接; Sequence Number:用来标识从 TCP发端向 TCP收端发送的数据字节流, 它表示在这个报文段中的的第一个数据字节在数据流中的序号; 主要用来解决网络报乱序的问题 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 25 页 - - - - - - - - - Acknowledgment Number:32 位确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节
13、序号加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。每
14、个标志位的意思如下:URG :此标志表示TCP包的紧急指针域 ( 后面马上就要说到 ) 有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据; ACK :此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中 ; 有两个取值: 0 和 1, 为 1 的时候表示应答域有效,反之为0; PSH :这个标志位表示Push操作。所谓 Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队 ; RST :这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包 ; SYN :表示同步序号,用来建立连接。SYN标
15、志位和 ACK标志位搭配使用,当连接请求的时候, SYN=1 , ACK=0;连接被响应的时候, SYN=1 ,ACK=1; 这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有 SYN的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口; 但是由于这种扫描方式只是进行TCP三次握手的第一次握手, 因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手 ; FIN: 表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN 标志 位的 TCP数据包后,连接将被断开。这个标志的数据包也经常被用
16、于进行端口扫描。Window:窗口大小,也就是有名的滑动窗口,用来进行流量控制名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 25 页 - - - - - - - - - 三设计过程3.1 TCP RST 攻击RST攻击原理:图 3.1从上面 TCP协议图可以看到, 标志位共有六个, 其中 RST位就在 TCP异常时出现通过三次握手建立连接下 面 我 通 过A 向B 建 立TCP 连 接 来 说 明 三 次 握 手 怎 么 完 成 的 。名师资料总结 - - -精品资料欢
17、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 25 页 - - - - - - - - - 图 3.2 为了能够说清楚下面的RST攻击,需要结合上图说说: SYN标志位、序号、滑动窗口大小。建立连接的请求中,标志位SYN 都要置为 1,在这种请求中会告知MSS 段大小,就是本机希望接收TCP包的最大大小。发送的数据 TCP包都有一个序号。 它是这么得来的: 最初发送 SYN时,有一个初始序号,根据 RFC的定义,各个操作系统的实现都是与系统时间相关的。之后,序号的值会不断的增加,比如原来的序号是100,
18、如果这个 TCP包的数据有 10个字节,那么下次的TCP包序号会变成 110。滑动窗口用于加速传输,比如发了一个seq=100的包,理应收到这个包的确认ack=101后再继续发下一个包,但有了滑动窗口,只要新包的seq 与没有得到确认的最小 seq 之差小于滑动窗口大小,就可以继续发。滑动窗口毫无疑问是用来加速数据传输的。TCP要保证“可靠”,就需要对一个数据包进行 ack 确认表示接收端收到。 有了滑动窗口, 接收端就可以等收到许多包后只发一个ack 包,确认之前已经收到过的多个数据包。有了滑动窗口,发送端在发送完一个数据包后不用等待它的ack,在滑动窗口大小内可以继续发送其他数据包。四次握
19、手的正常 TCP连接关闭:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 25 页 - - - - - - - - - 图 3.3FIN标志位也看到了,它用来表示正常关闭连接。图的左边是主动关闭连接方,右边是被动关闭连接方,用netstat 命令可以看到标出的连接状态。FIN是正常关闭,它会根据缓冲区的顺序来发的,就是说缓冲区FIN之前的包都发出去后再发 FIN包,这与 RST不同。RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送
20、 RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包) ,直接就丢弃缓存区的包发送RST包。而接收端收到 RST包后,也不必发送 ACK包来确认。TCP处理程序会在自己认为的异常时刻发送RST包。例如, A 向 B 发起连接,但B之上并未监听相应的端口,这时B 操作系统上的 TCP处理程序会发 RST包。又比如, AB正常建立连接了,正在通讯时,A 向 B发送了 FIN包要求关连接, B发送 ACK后,网断了, A 通过若干原因放弃了这个连接(例如进程重启)。网通了后, B又开始发数据包, A 收到后表示压力很大,不知道这野连接哪来的,就发了个 RST包强制把连接关了, B收到后
21、会出现 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包,
22、并在自己这端强制关掉连接。这两种方式都能够达到复位攻击的效果。似乎挺恐怖, 然而关键是, 如何能伪造名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 25 页 - - - - - - - - - 成 A 发给 B 的包呢?这里有两个关键因素,源端口和序列号。一个 TCP连接都是四元组,由源IP、源端口、目标 IP、目标端口唯一确定一个连接。所以,如果 C要伪造 A 发给 B的包,要在上面提到的 IP头和 TCP头,把源 IP、源端口、目标 IP、目标端口都填对。这里B作为
23、服务器, IP和端口是公开的,A 是我们要下手的目标, IP当然知道,但 A 的源端口就不清楚了,因为这可能是 A 随机生成的。当然,如果能够对常见的OS如 windows 和 linux 找出生成 source port 规律的话,还是可以搞定的。序列号问题是与滑动窗口对应的,伪造的 TCP包里需要填序列号, 如果序列号的值不在 A 之前向 B 发送时 B的滑动窗口内, B 是会主动丢弃的。 所以我们要找到能落到当时的 AB间滑动窗口的序列号。这个可以暴力解决,因为一个sequence长度是 32 位, 取值范围 0-4294967296, 如果窗口大小像上图中我抓到的windows下 的6
24、5535的 话 , 只 需 要 相 除 , 就 知 道 最 多 只 需 要 发65537(4294967296/65535=65537 )个包就能有一个序列号落到滑动窗口内。RST包是很小的, IP头TCP头也才 40 字节,算算我们的带宽就知道这实在只需要几秒钟就能搞定。那么,序列号不是问题, 源端口会麻烦点, 如果各个操作系统不能完全随机的生成源端口,或者黑客们能通过其他方式获取到source port,RST攻击易如反掌,后果很严重图 3.4 防御:对付这种攻击也可以通过防火墙简单设置就可以了。建议使用防火墙将进来的包带 RST位的包丢弃就可以了。RST 攻击只能针对 tcp。对 udp
25、 无效。RST用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到 RST位时候,通常发生了某些错误。假设有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP 为1.1.1.1,并向服务器发送一个带有RST位的 TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1 发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1 再发送合法数据,服务器就已经没有这样的连接了,该用户就必须重新开始建立连接。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
26、- - - - - 名师精心整理 - - - - - - - 第 11 页,共 25 页 - - - - - - - - - 对付这种攻击也可以通过防火墙简单设置就可以了。3.2TCP 会话劫持会话劫持原理:例如你 Telnet 到某台主机,这就是一次Telnet 会话;你浏览某个网站,这就是一次 HTTP会话。而会话劫持 (Session Hijack) ,就是结合了嗅探以及欺骗技术在内的攻击手段。 例如,在一次正常的会话过程当中,攻击者作为第三方参与到其中, 他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行监听, 甚至可以是代替某一方主机接管会话。我们可以把会话劫持攻击分为两种
27、类型 :1)中间人攻击 (Man In The Middle ,简称MITM),2)注射式攻击(Injection);并且还可以把会话劫持攻击分为两种形式:1)被动劫持, 2)主动劫持 ;被动劫持实际上就是在后台监视双方会话的数据流,从中获得敏感数据;而主动劫持则是将会话当中的某一台主机踢下线,然后由攻击者取代并接管会话,这种攻 击 方 法 危 害 非 常 大 , 攻 击 者 可 以 做 很 多 事 情 , 比 如 cat etc/master.passwd(FreeBSD 下的 Shadow文件)。会话劫持利用了 TCP/IP工作原理来设计攻击。 TCP使用端到端的连接,即 TCP用(源 I
28、P,源 TCP端口号,目的 IP,目的 TCP端号)来唯一标识每一条已经建立连接的 TCP链路。另外,TCP在进行数据传输时, TCP报文首部的两个字段序号 (seq)和确认序号 (ackseq) 非常重要。 序号(seq)和确认序号 (ackseq) 是与所携带 TCP数据净荷(payload)的多少有数值上的关系:序号字段 (seq)指出了本报文中传送的数据在发送主机所要传送的整个数据流中的顺序号,而确认序号字段(ackseq) 指出了发送本报文的主机希望接收的对方主机中下一个八位组的顺序号。因此,对于一台主机来说,其收发的两个相临TCP报文之间的序号和确认序号的关系为:它所要发出的报文中
29、的seq 值应等于它所刚收到的报文中的ackseq 的值,而它所要发送报文中 ackseq的值应为它所收到报文中seq的值加上该报文中所发送的TCP净荷的长度。TCP会话劫持的攻击方式可以对基于TCP的任何应用发起攻击,如HTTP 、FTP 、Telnet 等。对于攻击者来说,所必须要做的就是窥探到正在进行TCP通信的两台主机之间传送的报文, 这样攻击者就可以得知该报文的源IP、源 TCP端口号、目的 IP、目的 TCP端号,从而可以得知其中一台主机对将要收到的下一个TCP报文段中 seq和 ackseq值的要求。这样,在该合法主机收到另一台合法主机发送的 TCP报文前,攻击者根据所截获的信息
30、向该主机发出一个带有净荷的TCP报文,如果该主机先收到攻击报文, 就可以把合法的 TCP会话建立在攻击主机与被攻击主机之间。 带有净荷的攻击报文能够使被攻击主机对下一个要收到的TCP报文中的确认序号 (ackseq) 的值的要求发生变化,从而使另一台合法的主机向被攻击主机发出的报文被被攻击主机拒绝。TCP会话劫持攻击方式的好处在于使攻击者避开了被攻击主机对访问者的身份验证和安全认证,从而使攻击者直接进入对被攻击主机的的访问状态,因此对系统安全构成的威胁比较严重。攻击过程:1找到一个活动的会话名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
31、 - - 名师精心整理 - - - - - - - 第 12 页,共 25 页 - - - - - - - - - 会话劫持的第一步要求攻击者找到一个活动的会话。这要求攻击者嗅探在子网上的通讯。攻击者将寻找诸如FTP之类的一个已经建立起来的TCP会话。如果这个子网使用一个集线器, 查找这种会话是很容易的。 一个交换的网络需要攻击者破坏地址解析协议。2 猜测正确的序列号码下一步,攻击者必须能够猜测正确的序列号码。请记住,一个基本的TCP协议设计是传输的数据的每一个字节必须要有一个序列号码。这个序列号用来保持跟踪数据和提供可靠性。最初的序列号码是在TCP协议握手的第一步生成的。目的地系统使用这个值
32、确认发出的字节。这个序列号字段长度有32 个字节。这就意味着可能有大约4,294,967,295 个序列号。一旦这个序列号一致,这个账户就会随着数据的每一个字节逐步增加。3 把合法的用户断开一旦确定了序列号, 攻击者就能够把合法的用户断开。这个技术包括拒绝服务、源路由或者向用户发送一个重置命令。无论使用哪一种技术, 这个目的都是要让用户离开通讯路径并且让服务器相信攻击者就是合法的客户机。如果这些步骤取得成功, 攻击者现在就可以控制这个会话。只要这个会话能够保持下去, 攻击者就能够通过身份验证进行访问。这种访问能够用来在本地执行命令以便进一步利用攻击者的地位。图 3.5 上机:TCP 会话劫持数
33、据分析:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 25 页 - - - - - - - - - 首先用 Ethereal 打开 telnet1_hijacked.cap文件。 在分组 1 和分组 2 中可以看到 SYN 和 SYNACK 标志。分组 1 是从 IP 地址为 192.168.1.103 的客户端发送到 IP 地址为 192.168.1.101 服务器的。打开 Ethernet 可以看到客户端的MAC地址为 00:06:5b:d5:1e:e7, 服务器
34、端的 MAC 地址为: 00:00:c0:29:36:e8 。在SYNACK 分组中,源地址和目的地址则正好相反。图 3.6 分析分组 1 和分组 2 数据这个 TCP 连接可用如下显示过滤器分离出来:(ip.addreq 192.168.1.103 and ip.addreq 192.168.1.101) and (tcp.porteq 1073 and tcp.porteq 23)的 TCP连接中总共有 98125 个分组。当使用一下修改过滤规则后只有98123 个分组。为了找到丢失的两个分组。将过滤规则改名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
35、 - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 25 页 - - - - - - - - - 为:!(eth.srceq00:00:c0:29:36:e8)and !(eth.srceq 00:06:5b:d5:1e:e7)(如图)图 3.7 排除非客户端的 MAC 数据可以发现,这两个分组的发送方的IP 地址都为客户端(192.168.1.103 ) 。但是以太网帧的源地址为00:01:03:87:a8:eb ,而客户端的 MAC 地址00:06:5b:d5:1e:e7 。第一个伪造分组的序号为233,含有 10 个字节的数据。 10个字节的数据代表
36、10 个 ASCII 码字符,前 8 个 ASCII 码为 0 x08 字符,后面 2个 ASCII 为 0 x0a 字符。 ASCII 码 0 x08 代表退格符,ASCII 码 0 x0a 代表换行符。当这个分组加入 TCP 数据流后,服务器会认为用户键入退格符8 次,然后回车符两次。虽然看起来可能不会有太大的危害,它的目的仅仅是清空合法用户的输入,然后显示一个空白命令行给用户。但是,这个可以帮组确保攻击者构造的下一组所能实现的功能, 不再是简单地在合法用户输入的任何命令行末尾添加一些名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
37、- - 名师精心整理 - - - - - - - 第 15 页,共 25 页 - - - - - - - - - 信息。如图所示图 3.8 分组 1 数据信息第二个伪造分组的序号为243,含有 37 个字节的数据。主要包括以下的命令:echo “echo HACKED ” $HOME/.profile 。 这个命令后紧跟着一个ASCII码为 0 x0a 的字符,提示换行输入新的命令。这个命令会把“echoHACKED ”字符添加到用户的根目录下名为.profile 的文件中。在一些命令行shell 中,用户登录后首先读取: profile 文件并执行其中所有命令。 用户通常都根据需要为创建他们
38、的工作环境而执行一些列命令。将这些命令放置到.profile 文件中意味着用户在每次登录后都不用手动地执行这些设置命令。通过在.profile 文件中添加“echoHACKED ”命令,当用户下次登录时,他会在屏幕上看见“HACKED ”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 25 页 - - - - - - - - - 字符串。如图所示图 3.9 分组 2 数据信息TCP 会话终止数据分析:在 telnet1_hijacked.cap文件中,攻击者成功地加入了
39、实现其自身的“hijack ”会话,同时使合法客户端和服务器无法通信。在 telnet2_fin.cap 文件中,攻击者发送了含有它自己的分组535 。这次攻击者是伪装为服务器向客户端发送伪造的分组。客户端用它自己分组538 中的FIN 位作为响应。 而对于真正的服务器, 它是第一次接收到客户端关闭连接的分组,这样它会认为客户端希望断开连接,并以一个分组540 中的 FIN 位作为响名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 25 页 - - - - - - - -
40、 - 应。客户端接收到这个分组后, 服务器和客户端的连接已经断开,客户端会发送一个窗口位为 0 和 RST 位置的分组。这样,就完全断开了客户端和服务器的连接。如图所示图 3.10FIN 攻击telnet3_rst.cap 文件中,攻击者向客户段发送了一个RST 位置位的分组339。攻击者再次伪装服务器,并向客户端发送伪造的分组。客户端会立刻直接关闭与服务器的连接, 而不是按通常的三次握手的步骤来关闭连接。而此时真正的服务器并不知道发生了这些,它会继续向客户端发送分组340 。当分组到达客名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
41、- - 名师精心整理 - - - - - - - 第 18 页,共 25 页 - - - - - - - - - 户端后,客户端会响应连接已经关闭的信息。如图所示图 3.11 RST 攻击在 attacker_ftp.cap文件,攻击者使用通过网络嗅探到用户口令来与服务器建立一个 FTP 连接,并获取服务器文件。在这个连接中,攻击者不需要进行IP 欺骗,它可以简单的使用自己的IP 地址:192.168.0.100 。捕捉口令可以完全名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19
42、 页,共 25 页 - - - - - - - - - 获得用户账户的访问权限,而不再仅仅是插入一些命令到数据流中。如图所示图 3.12 ftp 攻击结果分析:在 TCP 会话劫持中,只有攻击者发送的是接受者所期望的序号的分组,就可以成功地实现“ 会话窃用 ” 。在“ 会话窃取 ” 成功后,导致正常主机和服务器两边一直僵持状态。在 TCP 会话终止中,攻击者发送了一个带FIN 或 RST 位的信息到目标主机,他会成功关闭这次连接。 但是它没有获得非法途径访问资源,能阻止合法用户访问资源。然而攻击者通过网络嗅探到的用户口令与服务器建立一个FTP 连接,并获取服务器文件。预防:处理会话劫持问题有两
43、种机制:预防和检测。预防措施包括限制入网的连接和设置你的网络拒绝假冒本地地址从互联网上发来的数据包。加密也是有帮助的。 如果你必须要允许来自可信赖的主机的外部连接,你可以使用 Kerberos 或者 IPsec 工具。使用更安全的协议, FTP 和 Telnet 协议是最容易受到攻击的。 SSH 是一种很好的替代方法。 SSH 在本地和远程主机之间建立一个加密的频道。通过使用IDS 或者 IPS 系统能够改善检测。交换机、SSH等协议和更随机的初始序列号的使用会让会话劫持更加困难。此外,网络管理员名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
44、- - - - 名师精心整理 - - - - - - - 第 20 页,共 25 页 - - - - - - - - - 不应该麻痹大意,有一种安全感。虽然会话劫持不像以前那样容易了,但是,会话劫持仍是一种潜在的威胁。 允许某人以经过身份识别的身份连接到你的一个系统的网络攻击 是需要认真对付的。3.3 TCP SYN Flood 攻击攻击原理问题就出在 TCP 连接的三次握手中,假设一个用户向服务器发送了SYN 报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的 ACK 报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并
45、等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout , 一般来说这个时间是分钟的数量级 (大约为 30 秒-2 分钟);一个用户出现异常导致服务器的一个线程等待1 分钟并不是什么很大的问题, 但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源-数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU 时间和内存,何况还要不断对这个列表中的 IP 进行 SYN+ACK 的重试。实际上如果服务器的TCP/IP 栈不够强大,最后的结果往往是堆栈溢出崩溃-即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的T
46、CP 连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood 攻击通常主机 A 与主机 B 的每一次 TP 连接都要经过三次握手的过程第一次握手主机 A 向主机 B 发送 SYN 请求主机 A 将它随机产生的初始序列号 ISN传送给主机 B请求建立 TP 连接。第二次握手主机 B 向主机 A 回应 SYN+AK主机 B 接收到来自主机A的带有 SYN 标志的 ISN 后将自己的随机的初始序列号ISN 连同应答信息 AK 一同返回给主机A。第三次握手主机 A 向主机 B 回应 SYN 十
47、AK主机 A 再将主机 B 传送来 ISN 及应答信息 AK 返回给主机 B。通过以上三次握手就建立了主机 A 与 B 的 TP 连接在 TcP 的三次握手中当主机 B 接收到主机 A 中的 SYN 请求时即第一次握手与第二次握手之间的连接称为半开连接。如果计算机有限的内存缓冲区中充满了虚假的半开连接信息该计算机就会对接下来的连接停止响应直到缓冲区里的连接企图超时。根据 TCP 连接的漏洞恶意的主机 A 想攻击主机 B,A 可以使用发包软件在短时间用伪造的不存在的IP 地址作为源地址不断地向防火墙发送具有SYN 请求的TCP 数据包。主机 B 在收到 SYN 请求后会向请求 SYN 数据包的源
48、地址发送一个 SYN 十 ACK 据包。由于源地址是一个伪造的地址主机 B 不可能收到伪造 IP 地址的 SYN+ACK 回应数据包。 主机 B 在短时间内有大量的连接请求等待确认。由于主机B 的内存缓冲区是有限的当主机 B 中未释放的连接请求数量超过主机 B 的限制时候主机 B 就无法再对新的连接请求进行响应就算是正常的连接请求也不会被主机B 接受这时主机 B 受到了 TCPSYNFlood攻击。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 25 页 - - - -
49、 - - - - - SYN 攻击实现起来非常的简单在互联网上有大量现成的SYN 攻击工具。如运行 Windows 系统下的 SYN 工具 synkill.exe选择随机的源地址和源端口并填写目标机器地址和选择允许访问的TP 端口通常 Windows 系统开放 TP139 端口UNIX 系统开放 TCP7、21、23 等端口激活运行很快就会发现目标系统运行缓慢。检测 TCPSYNFlood攻击对于受到TCPSYNFlood攻击的计算机检测SYN 攻击比较容易。 当服务器上有大量的半连接状态时特别是源 IP 地址是随机的则可以断定这是一次TCPSYNFlood 攻击。在 Linux 系统中使用
50、netstat 工具可显示网络连接、路由表和网络接口信息通过简单的分析可判断是否遭受了SYN 攻击可以发现很多连接处于SYN_RECV 状态Windows 系统中是 SYN_RECEIVED 状态源 IP 地址都是随机的表明这是一带有 IP 欺骗的 TCPSYNFlood 攻击。实验过程:测试平台的网络拓扑结构如图所示。图 3.3.1 1 用软件 xdos.exe 对目标计算机进行拒绝服务攻击并测试攻击效果。在 B 机打开 Sniffer Portable , 配置好捕捉从任意主机发送给本机的IP 数据包并启动捕捉进程如图所示。图 3.3.2 未攻击前与 B 机连接的主机数名师资料总结 - -