身份证到萝卜章:图解中间人攻击突破HTTPS防御

123 阅读4分钟

一、HTTPS的安全基石:TLS握手与证书体系

在正常HTTPS通信中,客户端与服务器通过TLS协议建立加密通道。整个过程包含三个核心环节:

  1. 证书验证阶段:服务器将CA签发的SSL证书发送给客户端,证书包含域名、公钥、有效期等信息,由权威CA(如DigiCert、Let's Encrypt)通过数字签名确认真实性
  2. 密钥协商阶段:客户端生成预主密钥,用服务器公钥加密后传输,双方通过ECDHE等算法协商出会话密钥
  3. 加密通信阶段:使用对称加密算法(如AES-256)对传输内容进行加密

image.png

这种设计使得即使数据被截获,攻击者也无法解密内容——除非同时具备私钥和会话密钥。而中间人攻击正是试图突破这个信任链条。


二、中间人攻击的"偷天换日"手法

攻击场景设定

假设用户在公司内网访问银行网站,企业防火墙作为中间人代理(MITM Proxy)部署了以下配置:

  • 已在内网设备预装私有根证书
  • 具备流量拦截和重写能力

攻击流程分解(对照UML图)

image.png

  1. 请求劫持阶段
    用户发起https://bank.com请求时,Proxy拦截请求并与真实服务器建立合法HTTPS连接,获取银行的标准SSL证书

  2. 证书伪造阶段
    Proxy执行关键操作:

    • 克隆原证书的Subject(主体信息)、SAN(扩展域名)等字段
    • 使用自建CA(企业预装的根证书)签发"冒牌证书"
    • 保持与原证书相同的有效期、密钥用途等属性
  3. 信任欺骗阶段
    客户端收到伪造证书后,检查证书链时会发现:

    • 颁发机构是企业内CA而非公共CA
    • 由于设备已预装该CA根证书,验证自动通过
    • 地址栏显示绿色锁标志(无异常提示)
  4. 双向解密通道
    Proxy同时维护两条加密通道:

    • Client↔Proxy:使用伪造证书的公钥加密
    • Proxy↔Server:使用真实证书的公钥加密 所有流量在Proxy节点被解密→分析→重新加密转发

三、正常流程与中间人场景的关键差异

通过对比表揭示核心区别:

对比维度正常HTTPS中间人攻击场景
证书颁发机构公共信任的CA(如Let's Encrypt)自建CA/私有CA
证书验证路径浏览器内置根证书链验证依赖用户设备预装的非标准根证书
加密通道完整性端到端加密分段加密(客户端-Proxy-服务器)
数据可见性全程密文Proxy节点可查看明文
用户感知无警告提示若无预装证书会显示证书错误

四、攻防技术深度解析

防御机制的突破点

中间人攻击成功的关键在于信任链的重构

  1. 证书预埋:企业设备管理策略强制安装私有CA
  2. 社会工程:诱导用户点击"信任此证书"(常见于公共WiFi劫持)
  3. 系统漏洞:利用CVE-2021-44228等漏洞注入根证书

用户侧的防御策略

  • 警惕非预期证书警告(如访问知名网站出现CA不匹配)
  • 定期检查系统根证书列表(Windows运行certlm.msc,MacOS使用钥匙串访问)
  • 在敏感场景使用证书固定(Certificate Pinning)技术
  • 避免在公共网络进行金融操作

五、企业级代理的合规边界

值得注意的是,企业部署HTTPS中间人代理存在双重性: 合法场景

  • 符合《网络安全法》的内网审计需求
  • DLP(数据防泄漏)系统实施内容过滤

风险边界

  • 员工个人隐私数据可能被过度采集
  • 私钥保管不当会导致大规模信息泄露
  • 可能违反GDPR等数据保护法规

建议企业实施透明化告知,并在工作设备与个人设备间建立明确的流量处理策略。


结语

HTTPS协议本身的安全性建立在证书信任链的完整性之上。中间人攻击案例表明,当攻击者能够操控信任锚点时,加密屏障就会出现裂缝。普通用户应提高证书安全意识,开发者需强化证书校验逻辑,企业管理者则要在安全监控与隐私保护间寻找平衡点。只有多方协同,才能构建真正的安全网络环境。