1、拒绝服务攻击组员:徐姚 徐佳豪 徐书军 夏伟恩 胡炯炯 姚欣 夏伟成一、 了解 Dos 攻击(1) DOS 攻击概述DoS 是 Denial of Service 的简称,即拒绝服务,造成 DoS 的攻击行为被称为 DoS 攻击,其目的是使计算机或网络无法提供正常的服务。最常见的 DoS 攻击有计算机网络带宽攻击和连通性攻击。DoS 攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。这些服务资源包括网络带宽,文件系统空间容量
2、,开放的进程或者允许的连接。这种攻击会导致资源的匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。(2) 概念理解DoS 到底是什么?接触 PC 机较早的同志会直接想到微软磁盘操作系统的 DOS-DiskOperationSystem?不,此 DoS 非彼 DOS也,DoS 即 DenialOfService,拒绝服务的缩写。 作个形象的比喻来理解 DoS。街头的餐馆是为大众提供餐饮服务,如果一群地痞流氓要 DoS 餐馆的话,手段会很多,比如霸占着餐桌不结账,堵住餐馆的大门不让路,骚扰餐馆的服务员或厨子不能干活,甚至更恶劣相应的计算机和网络系统则是为
3、internet 用户提供互联网资源的,如果有黑客要进行 DoS 攻击的话,可以想象同样有好多手段!今天最常见的 DoS 攻击有对计算机网络的带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。(3) 表现方式无论是 DoS 攻击还是 DDoS 攻击,简单的看,都只是一种破坏网络服务的黑客方式,虽然具体的实现方式千变万化,但都有一个共同点,就是其根本目的是使受害主机或网络无法及时接收并处理外界请求,或无法及时回
4、应外界请求。其具体表现方式有以下几种: 1,制造大流量无用数据,造成通往被攻击主机的网络拥塞,使被攻击主机无法正常和外界通信。 2,利用被攻击主机提供服务或传输协议上处理重复连接的缺陷,反复高频的发出攻击性的重复服务请求,使被攻击主机无法及时处理其它正常的请求。 3,利用被攻击主机所提供服务程序或传输协议的本身实现缺陷,反复发送畸形的攻击数据引发系统错误的分配大量系统资源,使主机处于挂起状态甚至死机。(4) 攻击流程要理解 dos 攻击,首先要理解 TCP 连接的三次握手过程(Three-way hand shake)。在 TCP/IP 协议中, TCP 协议提供可靠的连接服务,采用三次握手建
5、立一个连接。1 第一次握手:建立连接时,客户端发送 SYN 包(SYN=i)到服务器,并进入 SYN SEND 状态,等待服务器确认 ;第二次握手:服务器收到 SYN 包,必须确认客户的 SYN (ACK=i+1 ),同时自己也发送一个 SYN 包(SYN=j)即SYN+ACK 包,此时服务器进入 SYN_RECV 状态;1 第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ACK=j+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手,客户端与服务器开始传送数据。上述名词概念:半连接:收到 SYN 包而还未收到 ACK 包时的连接
6、状态称为半连接,即尚未完全完成三次握手的 TCP 连接。半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的 SYN 包(SYN=i )开设一个条目,该条目表明服务器已收到 SYN 包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于 SYN_ RECV 状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED 状态。Backlog 参数:表示半连接队列的最大容纳数目。 1 SYN-ACK 重传次数:服务器发送完 SYN-ACK 包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如
7、果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同。1 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到 SYN 包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为 Timeout 时间、SYN_RECV 存活时间。1 上面三个参数对系统的 TCP 连接状况有很大影响。1 二、 攻击手段拒绝服务攻击是一种对网络危害巨大的恶意攻击。今天,DoS具有代表性的攻击手段包括PingofDeath、TearDrop 、UDPflood 、SYNflood、LandAttack、
8、IPSpoofingDoS 等。2.1 死亡之 ping最简单的基于 IP 的攻击可能要数著名的死亡之 ping,这种攻击主要是由于单个包的长度超过了 IP 协议规范所规定的包长度。产生这样的包很容易,事实上,许多操作系统都提供了称为 ping的网络工具。在为 Windows 操作系统中开一个 DOS 窗口,输入ping -l 65500 目标 ip -t (65500 表示数据长度上限,-t 表示不停地 ping 目标地址)就可达到该目的。UNIX 系统也有类似情况。死亡之 ping 是如何工作的呢?首先是因为以太网长度有限,IP 包片段被分片。当一个 IP 包的长度超过以太网帧的最大尺寸(
9、以太网头部和尾部除外)时,包就会被分片,作为多个帧来发送。接收端的机器提取各个分片,并重组为一个完整的 IP 包。在正常情况下,IP 头包含整个 IP 包的长度。当一个 IP 包被分片以后,头只包含各个分片的长度。分片并不包含整个 IP 包的长度信息,因此 IP 包一旦被分片,重组后的整个 IP 包的总长度只有在所在分片都接受完毕之后才能确定。在 IP 协议规范中规定了一个 IP 包的最大尺寸,而大多数的包处理程序又假设包的长度超过这个最大尺寸这种情况是不会出现的。因此,包的重组代码所分配的内存区域也最大不超过这个最大尺寸。这样,超大的包一旦出现,包当中的额外数据就会被写入其他正常区域。这很容
10、易导致系统进入非稳定状态,是一种典型的缓存溢出(Buffer Overflow)攻击。在防火墙一级对这种攻击进行检测是相当难的,因为每个分片包看起来都很正常。由于使用 ping 工具很容易完成这种攻击,以至于它也成了这种攻击的首选武器,这也是这种攻击名字的由来。当然,还有很多程序都可以做到这一点,因此仅仅阻塞 ping 的使用并不能完全解决这个漏洞。预防死亡之 ping 的最好方法是对操作系统打补丁,使内核将不再对超过规定长度的包进行重组。1 2.2 泪滴泪滴攻击(TearDrop)指的是向目标机器发送损坏的 IP 包,诸如重做的包或过大的包载荷。借由这些手段,该攻击可以通过TCP/IP 协议
11、栈中分片重组代码中的 bug 来瘫痪各种不同的操作系统定义:泪滴攻击是拒绝服务攻击的一种。 泪滴是一个特殊构造的应用程序,通过发送伪造的相互重叠的 IP 分组数据包,使其难以被接收主机重新组合。他们通常会导致目标主机内核失措。 泪滴攻击利用 IP 分组数据包重叠造成 TCP/ IP 分片重组代码不能恰当处理 IP 包。泪滴攻击不被认为是一个严重的 DOS 攻击,不会对主机系统造成重大损失。 在大多数情况下,一次简单的重新启动是最好的解决办法,但重新启动操作系统可能导致正在运行的应用程序中未保存的数据丢失。2.3UDP 泛洪UDP 攻击,又称 UDP 洪水攻击或 UDP 淹没攻击(英文:UDP
12、Flood Attack)是导致基於主机的服务拒绝攻击的一种。UDP 是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据。当攻击者随机地向受害系统的端口发送 UDP 数据包的时候,就可能发生了 UDP 淹没攻击。UDP 是 User Datagram Protocol 的简称, 中文名是用户 数据包协议,是 OSI 参考模型中一种无连接的 传输层协议,提供面向事务的简单不可靠信息传送服务。它是 IETF RFC 768 是 UDP 的正式规范。 当受害系统接收到一个 UDP 数据包的时候,它会确定目的端口正在等待中的 应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一
13、个目的地址无法连接的 ICMP 数据包发送给该伪造的源地址。如果向受害者计算机端口发送了足够多的 UDP 数据包的时候,整个系统就会瘫痪。2.4SYN FLOODTCP SYN 泛洪发生在 OSI 第四层,这种方式利用 TCP 协议的特性,就是三次握手。攻击者发送 TCP SYN,SYN 是 TCP 三次握手中的第一个数据包,而当服务器返回 ACK 后,该攻击者就不对其进行再确认,那这个 TCP 连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送 ACK 给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种 TCP 连接,由于每一个都没法完成三
14、次握手,所以在服务器上,这些 TCP 连接会因为挂起状态而消耗 CPU 和内存,最后服务器可能死机,就无法为正常用户提供服务了。大家都知道一个 TCP 连接的启动需要经历三次握手的过程。正常情况下客户端首先向服务端发送 SYN 报文,随后服务端回以SYN+ACK 报文到达客户端,最后客户端向服务端发送 ACK 报文完成三次握手,后续就是上层业务数据交互,直到某一方断开连接。那么假如在这“握手” 的过程中,客户端程序因为莫名崩溃等原因,收到 SYN+ACK 报文后不再回以 ACK,服务端将如何处置呢?这时服务端会“ 优雅地 ”再等等,会不会是发送的包丢失了呢?于是重新发送一遍 SYN+ACK,再
15、收不到来自客户端的 ACK 响应的话,就把这次连接丢弃掉。这个过程大约会“优雅地” 持续分钟级,这个持续时间被称作 SYN timeout 时间。如果只有个别这样的异常情况,目标服务端处理起来自是毫不费力;可如果大量这样的情况出现,对服务端来说就不堪重负了。这是为什么呢?如果大量的握手请求涌向 TCP 服务端,而它们只发出 SYN 报文而不以 ACK 响应结束握手,服务端就要为这每一个请求都维持约一分多钟的连接去等待 ACK,也就形成所谓的 “半连接”。维护这些半连接是需要消耗很多服务器的网络连接资源的。如果短时间内这些资源几乎都被半连接占满,那么正常的业务请求在这期间就得不到服务,处于等待状
16、态。更进一步的,如果这些半连接的握手请求是恶意程序发出,并且持续不断,那么就会导致服务端较长时间内丧失服务功能这就形成了 DoS(Denial of Service 拒绝服务)攻击。这种攻击方式就称为 SYN 泛洪(SYN flood )攻击。由于正常的 TCP 三次握手中发出去多少 SYN 报文,就会收到多少 SYN+ACK 报文。攻击方需要将这些消息丢弃,同时为了隐藏自己,于是需要大量伪造泛洪攻击的源地址,随机改成其它地址。为达到 SYN 泛洪攻击的效果,这些伪造的源地址最好无法响应SYN+ACK,如这些源地址的主机根本不存在,或者被防火墙等网络设施拦截,等等。对于 SYN 泛洪攻击的防范
17、,优化主机系统设置是常用的手段。如降低 SYN timeout 时间,使得主机尽快释放半连接的占用;又比如采用 SYN cookie 设置,如果短时间内连续收到某个 IP 的重复SYN 请求,则认为受到了该 IP 的攻击,丢弃来自该 IP 的后续请求报文。此外合理地采用防火墙等外部网络安全设施也可缓解 SYN 泛洪攻击。2.5 Land(LandAttack)攻击land 攻击是一种使用相同的源和目的主机和端口发送数据包到某台机器的攻击。结果通常使存在漏洞的机器崩溃。在 Land 攻击中,一个特别打造的 SYN 包中的源地址和目标地址都被设置成某一个服务器地址,这时将导致接受服务器向它自己的地
18、址发送 SYN 一 ACK 消息,结果这个地址又发回 ACK 消息并创建一个空连接,每一个这样的连接都将保留直到超时掉。对 Land攻击反应不同,许多 UNIX 系统将崩溃,而 Windows NT 会变的极其缓慢(大约持续五分钟) 。LAND 攻击图示2.6 IP 欺骗IP 地址欺骗是指行动产生的 IP 数据包为伪造的源 IP 地址,以便冒充其他系统或发件人的身份。这是一种黑客的攻击形式,黑客使用一台计算机上网,而借用另外一台机器的 IP 地址,从而冒充另外一台机器与服务器打交道。定义:指行动产生的 IP 数据包为伪造的源 IP 地址,以便冒充其他系统或发件人的身份。这是一种骇客的攻击形式,
19、骇客使用一台计算机上网,而借用另外一台机器的 IP 地址,从而冒充另外一台机器与服务器打交道。防火墙可以识别这种 ip 欺骗。按照 Internet Protocol(IP)网络互联协议,数据包头包含来源地和目的地信息。 而 IP 地址欺骗,就是通过伪造数据包包头,使显示的信息源不是实际的来源,就像这个数据包是从另一台计算机上发送的。IP 地址欺骗攻击示意图应用方法在网络安全领域,隐藏自己的一种手段就是 IP 欺骗伪造自身的 IP 地址向目标系统发送恶意请求,造成目标系统受到攻击却无法确认攻击源,或者取得目标系统的信任以便获取机密信息。这两个目的对应着两种场景:场景一,常用于 DDoS 攻击(
20、分布式拒绝攻击) ,在向目标系统发起的恶意攻击请求中,随机生成大批假冒源 IP,如果目标防御较为薄弱,对收到的恶意请求也无法分析攻击源的真实性,从而达到攻击者隐藏自身的目的。这类场景里一种很有意思的特殊情景来自于“反射” 式 DDoS 攻击,它的特点来自于利用目标系统某种服务的协议缺陷,发起针对目标系统输入、输出的不对称性向目标发起吞吐量相对较小的某种恶意请求,随后目标系统因其协议缺陷返回大量的响应,阻塞网络带宽、占用主机系统资源。这时如果攻击者的请求使用真实源地址的话,势必要被巨大的响应所吞没,伤及自身。这样,攻击者采取 IP 欺骗措施就势在必行了。三、 DDos 攻击分布式拒绝服务(DDo
21、S:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动 DDoS 攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将 DDoS 主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。定义:首先从一个比方来深入理解什么是 DDOS。一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?(只为举例,切勿
22、模仿)恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;或者总是和营业员有一搭没一搭的东扯西扯,让工作人员不能正常服务客户;也可以为商铺的经营者提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客户,损失惨重。此外恶霸们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。嗯,网络安全领域中 DoS 和 DDoS 攻击就遵循着这些思路。在信息安全的三要素“保密性” 、 “完整性”和“ 可用性”中,DoS(Denial of Service) ,即拒绝服务攻击,针对的目标正是“可用性” 。该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,
23、使得该目标系统无法提供正常的服务。DdoS 的攻击方式有很多种,最基本的 DoS 攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。单一的 DoS 攻击一般是采用一对一方式的,当攻击目标CPU 速度低、内存小或者网络带宽小等等各项指标不高的性能,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得 DoS 攻击的困难程度加大了-目标对恶意攻击包的 “消化能力“加强了不少。这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。DDoS 就是利用更多的傀儡机(肉鸡)来发起进攻,以比从前更大的规模来
24、进攻受害者分布式拒绝服务攻击体系结构攻击方式 DDoS 攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。 这种攻击方式可分为以下几种: 通过使网络过载来干扰甚至阻断正常的网络通讯; 通过向服务器提交大量请求,使服务器超负荷; 阻断某一用户访问服务器; 阻断某服务与特定系统或个人的通讯。四、 实验过程4.1 实验所有工具LOIC、udpflood、kkdos、自制 ping 攻击程序4.2 实验步骤实验一主机 IP虚拟机 ip 地址虚拟机 ping 主机发动攻击,速度选择倒数第二挡数据包 time 时间变大,但是并不明显最快,单位时间内发送包最多主机 ping 虚拟机,攻击时所有请求超时,取消攻击,马上开始回包实验二udpflood 攻击 采用的是基于 udp 协议的攻击方式 可以看出攻击的 ip是 192.168.1.113通过 whilesharp 抓包可以看到有大量的 udp 包来自 192.168.1.11实验三这个是我们同学自己写的 ping 攻击程序 基于 icmp 协议 给制定 ip不断发送指定大小的 ping 造成网络堵塞wireshark 抓包得到的大量 ping 包实验四这个是基于 tcp 的 syn flood 攻击 效果不是很明显发送大量 syn seq=0 的数据包 导致协议栈堵塞成功达成拒绝服务,可以看出显示无资源