其实拒绝服务唯一的目的就是为了让服务器无法为正常用户提供服务,不论是B/S还是C/S模式的。
现在攻击很多都是采用集群分布式攻击。
TCP连接方式
客户端->SYN(1)->服务器->SYN+ACK(2)->客户端->ACK(3)->服务器
(1)用户端通过传送SYN同步(synchronize)信息到服务器,要求建立连线。
(2)服务器通过响应用户端SYN-ACK以抄收应答请求。
(3)用户端应答ACK,连线随之建立。
就是三次握手才能建立连接,具体的实现过程请查阅相关文档
SYN Flooding攻击
就是客户端只发送SYN请求,服务器收到SYN后会响应SYN-ACK
但是由于客户端并不回复第三次握手的ACK,所以服务器会保持连接,并重试发送SYN-ACK。
超过一定的次数之后才会断开释放连接。中间服务器都讲保持该连接。
实现攻击就只需要大量发送SYN请求到服务器,或伪造源地址只发送SYN请求。
让服务器保持大量半连接。耗尽服务器资源。
具体的模拟及分析可使用Hping3与Wireshark
UDP Flooding攻击
上面syn是针对服务器处理资源做攻击
UDP洪水攻击则是对服务器带宽做攻击。
它不需要用任何程序建立连接来传输数据。
所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。
就会使服务器所在的网络资源被耗尽
CC(ChallengeCollapsar)攻击
CC(ChallengeCoHapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。CC根据其工具命名,攻击者使用代理机制,利用众多广泛可用的免费代理服务器发动DDoS攻击。许多免费代理服务器支持匿名模式,这使追踪变得非常困难。
CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。
Ping洪流攻击
由于在早期,路由器对包的最大尺寸有限制。许多操作系统对TCP/IP栈的实现在ICMP包上都是规定为64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的、声称自己的尺寸超过ICMP上限的包,也就是加载的尺寸超过64KB上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接收方死机。
这个博主在上初中的时候就真的以为ping附带数据就能把别人服务器给PING死。
为我当时的智商抓急。。。
Teardrop攻击
Teardrop攻击是基于UDP的病态分片数据包的攻击方法,其工作原理是向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息),某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。
Land攻击
Land攻击原理是:用一个特别打造的SYN包,它的源地址和目标地址都被设置成某一个服务器地址。此举将导致接收服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都会将其保留,直到超时。不同系统对Land攻击反应不同,UNIX系统大多会崩溃,NT系统会变得极其缓慢。
Smurf攻击
Smurf(Smurf攻击)是以最初发动这种攻击的程序名“Smurf”来命名的,它通过独占网络资源,使其他主机不能进行正常访问,从而导致网络瘫痪。这种攻击方法使用了IP欺骗和ICMP回复方法使大量网络传输充斥着目标系统,从而使目标系统拒绝为正常系统服务。Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,造成网络阻塞。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。
Smurf攻击过程如下。
1、网络扫描
在进行Smurf攻击前,攻击者使用数据包分析工具(如Sniffer等)寻找那些以广播方式向本地网络中的所有主机发送echo请求分组的网络路由器,同时记录本地网络的IP地址。
2、发起攻击
攻击者通过程序伪造一个echo请求的ICMP报文,报文的源地址利用欺骗方式伪造成希望攻击的系统的IP地址,然后循环不断地读取具有路由器漏洞的目标网络的IP地址,并向它们的广播地址发送分组。
3、攻击过程
echo请求被发送到的目标网络,称为反弹站点,其路由器从互联网上接收到攻击者发出的IP广播地址(如202.196.80.255)的echo请求的分组后,把以太网广播地址FF:FF:FF:FF:FF:FF映射过来,然后将此echo请求分组对本地网段中的所有主机进行广播。收到echo请求分组的主机将及时向源地址回复,全部指向受攻击的系统。被攻击系统的网络很快被这些echo响应分组充满而阻塞,不能处理其他任何网络传输,从而引起拒绝正常的系统服务的问题。
Fraggle攻击
Fraggle攻击就是对Smurf攻击做了简单的修改,使用的是UDP应答消息而非ICMP。因为发送的是UDP报文,Fraggle攻击可以穿过一些阻止ICMP报文进入的防火墙。Fraggle攻击的原理是攻击者A向广播地址发送UDP报文,报文的源IP地址伪装成受害者B的IP地址。这样,广播域中所有启用了此功能的计算机都会向受害者B发送回应报文,从而产生大量的流量,导致受害网络的阻塞或受害主机崩溃。
反射DDOS
很多协议的请求包要远小于回复包,以一个字节的数据换十个字节的数据回来这就是一种放大,但是你这单纯的放大攻击的是自己,所以说想要攻击别人就要在发送请求包时把源地址写成要攻击的人的地址,这样回复的大字节报文就去你要攻击的人那里了。
这里放大主要利用的是NTP的monlist(listpeers也行)、DNS的AXFR(ANY也行)、SNMP的getbulkrequest。
monlist是返回最近600个与当前NTP服务器通信过的IP地址;
AXFR是区域传送(有地方叫域传送),比如freebuf.com下的所有域名返回给请求者;
SNMPV2版本中新加的getbulkrequest用于一次请求大量的信息,减少管理站与被管理设备的交互次数。
Websocket
websocket是HTML5一种新的协议,它实现了浏览器与服务器全双工通信(full-duple)。目前主流的浏览器都能很好地支持websocket,而且用它实现DOS攻击也并不是很难,只要在js代码中写入相应的代码,当人们打开这个网页时浏览器会自动执行js代码去请求连接要攻击的IP地址。
慢速DDOS(慢连接)
一说起慢速攻击,就要谈谈它的成名历史了。HTTP Post慢速DoS攻击第一次在技术社区被正式披露是2012年的OWASP大会上,由Wong Onn Chee和Tom Brennan共同演示了使用这一技术攻击的威力。对任何一个开放了HTTP访问的服务器HTTP服务器,先建立了一个连接,指定一个比较大的content-length,然后以非常低的速度发包,比如1-10s发一个字节,然后维持住这个连接不断开。如果客户端持续建立这样的连接,那么服务器上可用的连接将一点一点被占满,从而导致拒绝服务。和CC攻击一样,只要Web服务器开放了Web服务,那么它就可以是一个靶子,HTTP协议在接收到request之前是不对请求内容作校验的,所以即使你的Web应用没有可用的form表单,这个攻击一样有效。在客户端以单线程方式建立较大数量的无用连接,并保持持续发包的代价非常的低廉。实际试验中一台普通PC可以建立的连接在3000个以上。这对一台普通的Web server将是致命的打击。更不用说结合肉鸡群做分布式DoS了。鉴于此攻击简单的利用程度、拒绝服务的后果、带有逃逸特性的攻击方式,这类攻击一炮而红,成为众多攻击者的研究和利用对象。发展到今天,慢速攻击也多种多样。
ReDoS
ReDoS(Regular expression Denial of Service)正则表达式拒绝服务攻击。开发人员使用了正则表达式来对用户输入的数据进行有效性校验,当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。
正则表达式引擎分成两类,一类称为DFA(确定性有限状态自动机),另一类称为NFA(非确定性有限状态自动机)。两类引擎要顺利工作,都必须有一个正则式和一个文本串,一个捏在手里,一个吃下去。DFA捏着文本串去比较正则式,看到一个子正则式,就把可能的匹配串全标注出来,然后再看正则式的下一个部分,根据新的匹配结果更新标注。而NFA是捏着正则式去比文本,吃掉一个字符,就把它跟正则式比较,然后接着往下干。一旦不匹配,就把刚吃的这个字符吐出来,一个一个吐,直到回到上一次匹配的地方。