1. 协议基础与威胁模型

各位同学好。我是老周,在安全协议这块摸爬滚打了十几年。今天咱们开始第一讲,先把地基打牢。说白了,你连协议怎么握手、数据怎么封装都不清楚,后面挖漏洞就是瞎猫碰死耗子。

1.1 OSI模型与TCP/IP协议栈回顾

先问个问题:当你打开浏览器访问一个HTTPS网站,数据从键盘到网线,中间经历了什么?

OSI七层模型是理论上的完美参考,但实际互联网跑的是TCP/IP四层栈。我习惯把这两张图放在一起对比着看:

OSI七层 TCP/IP四层 典型协议 核心功能
应用层 应用层 HTTP, HTTPS, SSH, WebSocket 为用户提供网络服务接口
表示层 TLS/SSL(加密、压缩) 数据格式转换、加密解密
会话层 NetBIOS, RPC 建立、管理、终止会话
传输层 传输层 TCP, UDP 端到端可靠传输、流量控制
网络层 网络层 IP, ICMP, ARP 路由寻址、分组转发
数据链路层 网络接口层 Ethernet, PPP 帧封装、介质访问控制
物理层 RJ45, 光纤 比特流传输、电气信号
我的习惯:做协议分析时,我脑子里始终挂着这张分层图。抓到一段流量,先问自己——这是哪一层的载荷?上层协议有没有降级到不安全版本?很多漏洞就藏在层与层的缝隙里。

举个例子。我曾经分析过一个IoT设备的固件,发现它在TLS握手时竟然允许SSLv3。为什么?因为底层库默认开了向后兼容。这就是典型的「层抽象带来的安全盲区」——应用层开发者以为传输层是安全的,结果传输层偷偷降级了。

1.2 常见通信协议简介

咱们课程会反复跟这几个协议打交道,先混个脸熟。

HTTP / HTTPS

HTTP是明文传输,你发的每一个字节,中间路由器都能看见。HTTPS就是在HTTP外面套了一层TLS。嗯,这里要注意:很多人以为HTTPS就绝对安全了,其实TLS的版本、密码套件配置不当,照样能被撕开。

TLS

TLS是安全通信的基石。它做了三件事:握手协商密钥、加密传输数据、校验完整性。我见过最典型的漏洞是「证书验证不严格」——客户端不校验服务器证书的域名,中间人直接插进来。

SSH

SSH主要用于远程管理。它的安全模型比TLS简单,但坑也不少。比如弱密钥交换算法、主机密钥固定不变、端口转发滥用。我在一次红队演练中,就是通过SSH的agent转发漏洞,横向移动拿下了整个内网。

WebSocket

WebSocket是HTML5带来的全双工通信协议。它的问题在于:很多开发者不知道WebSocket握手阶段用的是HTTP Upgrade,但后续数据传输完全不受HTTP安全策略保护。跨站WebSocket劫持,就是利用了这个认知差。

核心观点:没有绝对安全的协议,只有相对安全的实现。每个协议都有自己的安全假设,一旦假设被打破,漏洞就来了。

1.3 协议安全假设与威胁模型

做安全挖掘,首先要搞清楚:这个协议在设计时,假设了什么样的攻击者?

Dolev-Yao模型

这是协议安全分析的经典模型。它假设攻击者可以:

  • 窃听所有通信消息
  • 拦截、篡改、重放任何消息
  • 伪造新消息并注入网络
  • 控制通信信道(但不控制参与方的内部状态)

说白了,Dolev-Yao模型把攻击者想象成「完全控制网络」的魔鬼。你想想看,如果协议在这个模型下还能保证安全,那它在现实世界中基本就稳了。

我刚开始做协议分析时,总觉得这个模型太极端——哪有攻击者能控制整个网络?后来在一次真实的APT事件分析中,我发现攻击者确实在核心交换机上做了端口镜像,所有流量都过了一遍他的手。嗯,从那以后我再也不敢低估Dolev-Yao模型的现实意义了。

1.4 攻击面分析

有了威胁模型,我们来看看具体的攻击手法。这些是咱们课程后面会反复用到的「武器库」。

中间人攻击(MITM)

攻击者插入通信双方之间,转发并篡改消息。典型场景:ARP欺骗、DNS劫持、伪造Wi-Fi热点。防御手段是双向身份认证和完整性校验——但很多协议只做了单向认证。

重放攻击

攻击者记录一次合法通信,稍后重新发送。比如你登录银行时发送了「转账100元」的请求,攻击者把这个请求重放100次。防御方案是加入时间戳、随机数(Nonce)或序列号。

降级攻击

这是我最常挖到的漏洞类型。攻击者强迫通信双方使用较低版本或不安全的算法。比如TLS降级攻击:攻击者篡改ClientHello,告诉服务器「我只支持SSLv3」,服务器如果允许,就退回到有漏洞的版本。

避坑指南:我曾经审计过一个金融APP,它的TLS库配置了「允许所有版本」的兼容模式。测试人员说HTTPS连接正常,但我在中间截获流量时发现,客户端实际协商的是TLS 1.0——因为攻击者伪造了ServerHello,把版本字段改成了1.0。这就是降级攻击的典型例子。记住:永远不要允许向后兼容到不安全版本。

下面这张图,把咱们第一讲的核心逻辑串起来了:

协议安全分析知识体系 协议基础(OSI / TCP/IP) HTTP/HTTPS TLS SSH WebSocket 威胁模型(Dolev-Yao) 中间人攻击(MITM) 重放攻击 降级攻击 协议漏洞挖掘方法 从协议基础出发,经过威胁模型分析,识别攻击面,最终落地到漏洞挖掘方法

这张图我建议你存下来。后面每一章,我们都会回到这个框架里,往里面填充具体的协议和攻击手法。