如何为没有界面的IoT设备安装Burp Suite证书

11 人参与

说起给那种连屏幕都没有的 IoT 小玩意儿装 Burp 证书,我的脑袋里立马浮现出上个月把一盏智能灯泡拆成零件的情景——它根本没有 UI,唯一能碰到的就是一根 UART 串口。于是我只能把手伸进命令行的海里,想办法让它信任 Burp 那张自签根证书

准备工作

我先在自己的笔记本上装好 Burp Suite,打开「Proxy → Options」把 Certificate Authority 导出来,得到 burp_ca.der。随后把笔记本的两块网卡拔出来:一块连外网,另一块开成热点(hostapd + dnsmasq),让 IoT 设备只会看到我这块“专属” Wi‑Fi。

透明代理让设备不知情

只要把 80/443 的流量都 NAT 到 Burp 的 8080 端口,设备根本不需要手动配置代理。下面这几条 iptables 命令是我的必备:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j REDIRECT --to-ports 8080

把透明代理打开后,所有连上我热点的设备请求都会悄悄经过 Burp,等于是“暗箱操作”。

把证书塞进设备

接下来要让设备信任 Burp 的根证书。大多数基于 linux 的固件都把受信任的 CA 放在 /etc/ssl/certs,于是我用了两招:

  • 如果设备支持 SSH(很多开发板都有),直接 scp burp_ca.der root@device:/etc/ssl/certs/,再跑 update-ca-certificates
  • 没有 SSH?把证书写进 OTA 升级包里,利用固件的 post‑install 脚本把它复制到同目录。

完成后,重启服务,设备的 HTTPS 握手就会出现 Burp 的自签证书,抓包画面里瞬间出现 “TLS handshake successful” 的提示,爽到不行。

实战案例:智能灯泡

我把上面的步骤套在一盏 Wi‑Fi 灯泡上——这灯泡只提供 OTA 升级接口,没有任何 UI。先把灯泡接入我的热点,拦截它的固件下载请求,手动注入 burp_ca.der,再让它完成升级。升级完后,我用 Burp 抓到了灯泡的配网协议(JSON),甚至还能改改颜色切换的频率,玩得不亦乐乎。

整个过程最让人惊喜的,是那一刻灯泡在手机 App 里显示「安全连接」的图标瞬间变成了红色警告——原来它根本不信任我的证书。把证书塞进去后,红灯立马变绿,说明一切已经在我掌控之中。

如果你手里也有类似「看不见」的设备,别忘了先把网络划给自己,再把根证书塞进去。等到抓到想要的包时,你会发现——这玩意儿真的太好用了,根本不需要去搬砖改固件源码。

参与讨论

11 条评论
  • 暴躁的猫

    要是设备用的是mbedtls这种轻量库咋办?证书路径都不一样

    回复
  • 绮梦

    这操作太硬核了,我连UART在哪都不知道😂

    回复
  • WickedGale

    之前搞过一个智能家居网关,折腾了一个礼拜才把CA塞进去

    回复
  • 地平线追逐者

    没有SSH简直地狱模式,还得伪造OTA包

    回复
  • 长靠将

    burp还能这么玩?学废了(不是)

    回复
  • 溪边行者

    红灯变绿那一下真的爽到飞起

    回复
  • StellarWanderer

    dnsmasq配好了但设备死活不走代理是为啥?求指点

    回复
  • 纯白奏鸣曲

    感觉比改固件源码现实多了,至少不用重新签名

    回复
  • 豆蔻

    那个post-install脚本得小心校验机制,有的会检测文件完整性

    回复
  • 梦回唐

    我的灯泡升级完直接变砖了……是不是证书格式不对?

    回复
  • 伟伟

    这种透明代理的思路挺实用,回头试试看

    回复