客户端 服务器
| -----------SYN------------> |
| <--------SYN+ACK----------- |
| -----------ACK------------> |
客户端 服务器
| -----------FIN------------> |
| <----------ACK------------- |
| <-----------FIN------------ |
| -----------ACK------------> |
DOS/DDOS类别:
ddos的反射攻击就是伪造源IP发送给服务器,然后服务器返回数据包给伪造受害者IP
典型反射攻击举例
反射攻击的关键点
UDP反射放大攻击原理 (请求包远小于响应包 四两拨千斤)
很多协议在响应包处理时,要远大于请求包,一个字节的请求十个字的响应,十个字节的请求一百个字的响应,这就是UDP反射放大攻击最根本的原理。以下将Memcached服务作为实例进一步介绍
如Memcached是一款开源的高性能分布式内存对象缓存服务,通过缓存来降低对数据库的访问请求,加快应用程序的响应效率,可以应用于各类缓存需求中。通过查询缓存数据库,直接返回访问请求,降低对数据库的访问次数。
防御(IP 端口限速)
目标IP+源端口限速:可以用于控制反射性攻击,且可以预防未知的反射协议;
源IP限速:单个请求源IP的整体控制;
目标IP限速:单个攻击目标IP的整体可用性控制;
源IP+源端口限速:可以降低部分大客户源IP在访问请求时的副作用影响;
目标IP+目标端口限速:适用于目标IP端口开发范围较大时,可提高业务端口可用率,降低目标整体影响;
ICMP(Internet Control Message Protocol)泛洪攻击是一种利用ICMP协议的特性对目标系统进行攻击的手法,ICMP是用于在IP网络中传输控制消息的协议,常用于网络诊断和错误报告,在ICMP泛洪攻击中攻击者发送大量的伪造的ICMP请求消息(通常是ICMP回显请求,也称为Ping请求)到目标系统,这些请求消息被发送到目标系统的网络接口,导致目标系统不堪重负并可能导致其资源耗尽
早期互联网用的比较多,现在用的少,且危害不如从前
攻击过程
#命令示例
hping3 --rand-source --icmp -d 56 --flood 192.168.8.9
#参数说明
黑客机IP(192.168.8.10伪造任意IP地址向服务器IP(192.168.8.9发送如洪水般的ping包,数据包大小是56
--rand-source 随机化源IP地址
--flood 以最快速度持续不断地发送数据包(洪水模式)不等待响应,最大化流量
--icmp 指定发送ICMP协议包(即“ping”包)
-d 指定每个ICMP包的数据部分大小为56字节(不包括ICMP头部)越大带宽越大
基本介绍
UDP(User Datagram Protocol)泛洪攻击是一种网络攻击方法,利用UDP协议的特性对目标系统进行攻击,UDP是一种无连接的传输层协议,常用于快速传输数据的应用,例如:DNS和实时流媒体,在UDP泛洪攻击中,攻击者发送大量的伪造的UDP数据包到目标系统的特定端口上,这些数据包被发送到目标系统的网络接口导致目标系统不堪重负并可能导致其资源耗尽
hping3 --rand-source --udp -d 56 --flood 192.168.8.9
发送大量TCP连接,占满服务器的连接表,
基本介绍
SMURF攻击是一种早期的网络攻击方法,利用ICMP(Internet Control Message Protocol)协议中的回显请求(Echo Request)和广播地址的特性对目标网络发起攻击,这种攻击方式的名称源自最早用于执行此类攻击的程序名"smurf",在SMURF攻击中攻击者发送大量的ICMP Echo Request数据包将源IP地址伪装成受害者的IP地址并将目标IP地址设置为广播地址,由于广播地址会将数据包发送到网络中的所有主机,每个收到数据包的主机都会生成一个ICMP Echo Reply响应并将响应发送给被伪装的受害者IP地址,这样一来攻击者发送的单个数据包就会导致网络中的大量响应流量集中在受害者上,造成带宽消耗、网络拥塞和服务中断
攻击演示
在攻击主机中打开scapy工具,随后192.168.8.10(黑客机)模仿 192.168.8.9(受害机)发送给192.168.8.255(受害者网络的所有主机)报文
攻击者
|
| 伪造源IP为受害者,向广播地址发送ICMP Echo请求
v
[广播地址] --------------> [局域网内所有主机]
|
| 所有主机都向受害者IP回复ICMP Echo响应
v
[受害者主机]
hping3 --icmp -a 192.168.8.9 --flood 192.168.8.255
#参数说明:
--icmp:发送ICMP Echo请求
-a 192.168.8.9:伪造源IP为受害者
--flood:以最快速度发送
192.168.8.255:目标广播地址
防御方法
利用TCP握手的重传机制搭配伪造IP
发送RST数据进行“盲打”
基本介绍
TCP RST(Reset)复位攻击是一种网络攻击方法,利用TCP协议中的RST标志位发送伪造的TCP RST数据包,终止或中断现有的TCP连接,这种攻击利用了TCP协议中的重置机制,欺骗目标系统以终止其与其他主机之间的连接,在TCP RST复位攻击中攻击者发送伪造的TCP RST数据包到目标系统,这些数据包带有合法的源IP地址和目标IP地址以及源端口和目标端口,目标系统接收到伪造的RST数据包后会误认为与该源IP地址和目标IP地址之间的连接已经终止,从而中断正在进行的TCP会话
攻击演示
情形1:黑客机伪装客户机发过去RST包给服务器(发包给服务器)
客户机远程连接目标服务器的SSH端口并使用Wireshark进行抓包
hping3 -R -a 192.168.8.9 -p 22 192.168.8.18 --flood
-R:发送TCP RST包
-p:指定目标端口
--flood:以最快速度发送(泛洪)
#伪造IP 192.168.8.9对192.168.8.18的22端口进行RST泛洪攻击。
可以看到发送了大量的RST数据包,但这里我没有实现让ssh连接断开。
情形2:黑客机伪装客户机发过去SYN包给服务器
客户机远程连接目标服务器的SSH端口并使用Wireshark进行抓包
hping3 -R -a 192.168.8.9 -p 22 192.168.8.18 --flood
-S:发送SYN 包
-p:指定目标端口
--flood:以最快速度发送(泛洪)
这里我还是没有实现让ssh连接断开
理论上:服务器认为客户机已经是正常连接又来建立新连接,于是服务器就会中断与客户机的连接
可以看到有伪造客户端向服务器发送的 SYN请求,以及服务器向客户端回应的 SYN,ACK
如进行io查询, http基于TCP协议所以无法伪造IP(通常是使用代理池)
防御DDoS(分布式拒绝服务)攻击时,可以采取以下措施:
缓解作用有限
IP信用库
算法对流量进行模式识别是否真人