什么是中间人攻击
中间人攻击(MITM,Man-in-the-Middle):攻击者秘密地插入到通信双方之间,窃听甚至篡改通信内容,而双方以为在直接通信。
常见手段
一、ARP 欺骗(局域网)
在以太网中,主机通过 ARP 协议把 IP 地址解析成 MAC 地址。
ARP 协议没有验证机制——攻击者可以发送伪造的 ARP 响应,声称"我是网关",让受害者的流量先经过攻击者。
防护:
- 交换机的端口安全特性、DHCP Snooping、动态 ARP 检测(DAI);
- 加密的通信(即使流量被劫持,内容也无法读取)。
二、伪造 Wi-Fi 热点
攻击者建立一个与合法热点同名的 Wi-Fi("邪恶双子",Evil Twin)。
用户连上后,所有流量经过攻击者。
防护:
- 不要连接不明 Wi-Fi(尤其是无密码的开放网络);
- 使用 HTTPS(即使流量经过攻击者,内容也是加密的);
- 使用 VPN(提供额外的加密隧道);
- 企业环境使用 WPA-Enterprise(802.1X 认证)。
三、DNS 劫持
前文提到过:把域名解析到攻击者控制的 IP。
四、SSL Stripping(降级攻击)
攻击者把用户的 HTTPS 连接降级为 HTTP。
手法:
- 用户访问
http://example.com(很多用户直接输入域名,不带 https); - 攻击者拦截这个 HTTP 请求;
- 攻击者自己用 HTTPS 访问真实的服务器,再把内容通过HTTP返回给用户;
- 用户看到的是 HTTP 页面——攻击者可以读取所有明文内容。
防护:
HSTS(HTTP Strict Transport Security):
服务器返回响应头:
Strict-Transport-Security: max-age=31536000; includeSubDomains浏览器记住后,后续访问该域名时强制使用 HTTPS,即使用户输入的是 http。
HSTS Preload:把域名加入浏览器内置的 HSTS 列表——这样第一次访问就强制 HTTPS(因为普通的 HSTS 需要先有一次成功的 HTTPS 连接才能建立)。
五、伪造证书
攻击者出示一个伪造的证书,声称是目标网站。
防护:这正是证书链验证的作用——浏览器会检查证书是否由可信 CA 签发。
HTTPS 能防住吗
能防住大部分,但不是万能的。
HTTPS(TLS)提供的保护:
- 加密:第三方无法读取通信内容;
- 完整性:篡改会被检测出来(通过 MAC/AEAD);
- 身份认证:通过证书验证服务器的身份。
因此:
- 即使流量经过攻击者的设备(ARP 欺骗、恶意 Wi-Fi),攻击者也读不到内容;
- 如果攻击者试图篡改,连接会失败;
- 如果攻击者出示伪造证书,浏览器会警告。
HTTPS 防不住的情况:
一、用户忽略证书警告
浏览器显示"证书不受信任"时,用户点了"继续访问"——那 HTTPS 的保护就被绕过了。
二、客户端被植入了攻击者控制的根证书
如果攻击者(或某些企业监控软件、恶意软件)在你的设备上安装了一个受信任的根证书,那么他签发的伪造证书就能通过验证。
这就是为什么"不要随意安装来路不明的根证书"很重要。
这也是企业网络监控(SSL Inspection)的工作原理——它在设备上安装企业根证书,使得中间设备能解密并检查 HTTPS 流量。
三、端点被攻破
如果攻击者控制了你的设备本身,HTTPS 加密也无济于事——因为加密发生在数据离开设备之前。
四、DNS 层面
传统的 HTTPS 不隐藏你访问的域名(SNI 字段是明文的)。
改进:ECH(Encrypted Client Hello,加密客户端问候)——加密 SNI,防止第三方看到你访问了哪个域名。这是 TLS 1.3 的扩展,正在逐步部署。
实用建议
- 永远不要忽略证书警告;
- 留意地址栏的锁图标,尤其是涉及登录和支付的页面;
- 不连接不可信的 Wi-Fi,或使用 VPN;
- 保持操作系统和浏览器更新;
- 不随意安装根证书。
说明:本文为网络安全的知识整理。