中间人攻击深度剖析:ARP欺骗、DNS劫持、SSL剥离、伪造升级服务器、攻击链路分析
大家好,我是老周。做OTA安全这些年,我见过太多团队把精力全放在加密算法上,结果却被最基础的网络攻击打得措手不及。中间人攻击,说白了就是攻击者悄悄插到你设备和服务器之间,你发给服务器的数据他先看一遍,服务器返回的数据他也先改一遍。你想想看,这跟快递被人中途拆包有什么区别?
这一章,咱们就把中间人攻击的几种常见手法掰开揉碎了讲。我会结合自己踩过的坑,告诉你攻击者到底是怎么干的,我们又能怎么防。
2.1 ARP欺骗:局域网内的“身份盗窃”
ARP欺骗是我最早接触的中间人攻击手法。那时候还在做智能家居网关,设备在同一个Wi-Fi下通信,总觉得内网很安全。结果呢?
ARP(地址解析协议)的作用很简单:把IP地址转换成MAC地址。但它的设计有个致命缺陷——无状态、无认证。任何设备都可以随意发送ARP应答包,告诉交换机“我就是那个IP对应的MAC”。
攻击流程:
- 攻击者扫描局域网,获取网关IP(比如192.168.1.1)和受害者设备IP(比如192.168.1.100)。
- 攻击者伪造ARP应答包,告诉网关:“192.168.1.100的MAC是我(攻击者的MAC)”。
- 同时告诉受害者设备:“192.168.1.1的MAC是我”。
- 从此,受害者发给网关的所有流量,都先经过攻击者。
我在一个智能门锁项目里就遇到过。测试环境里,门锁OTA升级偶尔失败,查了半天发现是测试同事的笔记本开了ARP欺骗工具,把门锁到升级服务器的流量全劫走了。嗯,从那以后,我要求所有内网测试环境必须开DHCP Snooping和DAI(动态ARP检测)。
我的建议:对于IoT设备,如果必须部署在不可信局域网,可以考虑在设备端做IP+MAC静态绑定,或者使用加密隧道(如DTLS)让应用层数据即使被截获也无法解密。
2.2 DNS劫持:让你访问“假服务器”
DNS劫持比ARP欺骗更隐蔽。攻击者不需要在同一个局域网,他可以在路由器、运营商骨干网,甚至你的设备固件里动手脚。
原理很简单:DNS负责把域名解析成IP。如果这个解析过程被篡改,你访问ota.mycompany.com,实际连上的却是攻击者的服务器。
| 攻击方式 | 攻击位置 | 典型场景 |
|---|---|---|
| 本地DNS劫持 | 路由器/设备hosts文件 | 攻击者破解路由器后台,修改DNS设置 |
| 中间DNS劫持 | 运营商/公共Wi-Fi网关 | 公共Wi-Fi强制跳转,返回虚假DNS应答 |
| DNS缓存投毒 | 递归DNS服务器 | 向DNS服务器注入伪造的域名-IP映射 |
我曾经帮一个客户排查OTA升级失败问题。设备日志显示连接超时,但服务器端完全没收到请求。最后发现,设备里硬编码的DNS服务器地址被固件漏洞改掉了,指向了一个不存在的IP。说白了,攻击者根本不需要破解你的加密算法,他只需要让你连不上真的服务器就行。
避坑指南:不要完全信任DNS解析结果。我建议在OTA升级流程中,除了域名校验,还要对服务器证书做严格验证。即使DNS被劫持,只要证书校验不通过,连接就应该立即中断。
2.3 SSL剥离:把HTTPS降级成HTTP
SSL剥离是我认为最“阴险”的攻击手法。攻击者不直接破解SSL/TLS加密,而是让客户端根本用不上加密。
攻击过程大致是这样的:
- 客户端发起HTTPS请求(比如
https://ota.mycompany.com)。 - 攻击者拦截这个请求,自己跟服务器建立真正的HTTPS连接。
- 攻击者跟客户端之间,却只使用HTTP明文通信。
- 客户端以为自己连的是安全站点,实际上所有数据都是明文传输的。
为什么会这样?很多IoT设备在首次连接时,会先尝试HTTP,然后被重定向到HTTPS。攻击者就抓住这个“先HTTP后跳转”的空档,把所有301/302重定向都拦截掉,让设备一直停留在HTTP上。
关键防御点:
- 在设备固件中预置HSTS(HTTP Strict Transport Security)策略,强制只允许HTTPS连接。
- 对服务器证书做公钥固定(Public Key Pinning),防止攻击者使用自签名证书冒充。
- 升级包本身必须做数字签名,即使传输通道被剥离,攻击者也无法篡改包内容。
我记得有个项目,设备端用了很新的TLS 1.3库,但OTA服务器配置了HTTP到HTTPS的自动跳转。攻击者利用这个跳转间隙,成功实施了SSL剥离。后来我们改了架构:设备启动后直接发起HTTPS请求,不再依赖服务器跳转。这个教训让我明白,安全不能依赖“对方会做正确的事”。
2.4 伪造升级服务器:最直接的“李鬼”攻击
如果攻击者拿到了你的OTA服务器域名对应的IP,或者通过DNS劫持把域名指向了自己的服务器,他就可以搭建一个“山寨”升级服务器。
伪造服务器能做什么?
- 下发恶意固件:植入后门、挖矿程序、勒索软件。
- 窃取设备信息:收集设备序列号、用户凭证、网络拓扑。
- 下发“空包”:让设备以为已经是最新版本,阻止真正的安全更新。
我见过最离谱的一次,攻击者伪造的升级服务器界面跟官方一模一样,连固件版本号都伪造得毫无破绽。设备下载了“升级包”后,直接变砖。后来分析发现,攻击者是从泄露的固件里提取了OTA升级的API接口格式。
我的经验:防御伪造服务器,核心是双向认证。不仅设备要验证服务器的证书,服务器也要验证设备的身份。另外,升级包的数字签名必须使用独立的签名密钥,跟通信加密的密钥分开管理。
2.5 攻击链路分析:一张图看懂全局
上面讲的几种攻击手法,攻击者往往不是单独使用,而是组合出击。我画了一张攻击链路图,帮你理清整个攻击链条。
从这张图你可以看到,攻击者可以在多个层面同时下手。局域网层面用ARP欺骗,网络层面用DNS劫持,传输层面用SSL剥离,应用层面直接伪造服务器。每一层都有对应的防御手段,但最关键的还是端到端的信任链——从设备启动到升级包安装,每一步都要验证对方的身份和数据的完整性。
核心观点:不要以为用了HTTPS就万事大吉。SSL剥离、伪造证书、中间人代理……攻击者的手段层出不穷。真正的安全,是传输加密 + 身份认证 + 数据签名三位一体,缺一不可。