TCP 协议漏洞(Transmission Control Protocol Vulnerabilities)
协议工作原理
TCP(Transmission Control Protocol)是互联网中最重要的传输层协议之一,具有面向连接、可靠传输和流量控制等特性。其主要功能包括:
- 三次握手(Three-Way Handshake)
- 客户端发送
SYN 报文请求连接。
- 服务器回复
SYN-ACK 报文确认。
- 客户端再发送
ACK,连接建立完成。
- 四次挥手(Four-Way Termination)
- 主动关闭方发送
FIN,对方回复 ACK。
- 被动关闭方再发送
FIN,主动关闭方回复 ACK,连接断开。
- 可靠传输
- 通过 序列号(Sequence Number) 和 确认号(Acknowledgment Number) 实现有序数据传输。
- 采用 超时重传(Retransmission) 和 滑动窗口(Sliding Window) 机制保证可靠性。
- 流量与拥塞控制
- 通过滑动窗口、慢启动、拥塞避免等算法防止网络过载。
常见漏洞类型
1. TCP SYN Flood 攻击
- 原理:攻击者发送大量伪造源 IP 的
SYN 报文,服务器为每个连接分配资源,但无法完成握手,造成 半开连接堆积,耗尽资源。
- 危害:拒绝服务(DoS),导致服务器无法响应正常请求。
2. TCP RST 注入
- 原理:攻击者猜测 TCP 会话的 四元组(源IP、源端口、目的IP、目的端口) 和序列号,伪造
RST 报文强制终止连接。
- 危害:可导致会话中断(例如劫持 BGP 会话、强制断开 SSH/Telnet)。
3. TCP 会话劫持(Session Hijacking)
- 原理:攻击者在连接建立后,伪造带有正确序列号的 TCP 报文,插入数据流。
- 危害:窃取数据、插入恶意指令(例如 telnet/FTP 会话劫持)。
4. TCP 序列号预测攻击
- 原理:早期 TCP/IP 实现中,序列号生成机制弱,可被预测。攻击者通过构造伪造报文,完成会话注入。
- 危害:在无需抓包的情况下即可劫持连接。
5. TCP ACK Flood
- 原理:攻击者发送大量伪造
ACK 报文,占用带宽和处理能力。
- 危害:拒绝服务,影响网络设备性能。
6. TCP Slowloris 攻击
- 原理:攻击者发送 不完整的 TCP 请求,保持连接长时间处于半活跃状态。
- 危害:消耗服务器连接资源,导致 DoS。
攻击方式
- DoS/DDoS 攻击:如 SYN Flood、ACK Flood。
- 会话劫持:利用序列号预测或流量注入。
- RST 注入:恶意终止合法连接。
- 带宽消耗攻击:发送大量无效 ACK/数据包。
防御与缓解措施
- SYN Cookies
- 在内核启用 SYN Cookies 机制,避免半连接队列耗尽。
- 入侵检测与防火墙(IDS/IPS)
- 过滤异常 TCP 报文(如伪造源 IP 的 SYN)。
- 使用 DPI 检测可疑流量。
- 随机化序列号
- 现代操作系统采用随机数生成器生成初始序列号,防止预测。
- 限制半开连接数量
- 操作系统配置 TCP backlog 队列大小和超时参数。
- BGP/TCP 安全
- 在 BGP 等关键协议上启用 TCP MD5 Signature (RFC 2385) 或 TCP-AO (RFC 5925),防止 RST 注入。
- 速率限制
- 使用 Netfilter/iptables、ACL 等对异常流量进行限速。
参考资料
- RFC 793: Transmission Control Protocol
- RFC 4987: TCP SYN Flooding Attacks and Common Mitigations
- RFC 2385: Protection of BGP Sessions via the TCP MD5 Signature Option
- RFC 5925: The TCP Authentication Option (TCP-AO)