你花几十块钱买了个智能插座,觉得挺好用——手机一按,灯就亮。但你可能不知道,这台小玩意儿里跑着一个简化版 Linux,出厂时带着默认密码,固件从来没更新过,还和你家的 Wi-Fi 共用同一个网段。在 2026 年,这样的设备不是「智能家居」,而是一个没人看管的、随时可能被远程控制的小型服务器。今天这一篇,带你走一遍 IoT 安全审计的完整流程——搞清楚你家的「智能设备」到底安不安全。
一、为什么 IoT 设备是「最弱的一环」
物联网设备的安全问题,几乎可以用一个词概括:成本。为了把售价压到几十块,厂商会在这些地方疯狂妥协:
- 默认密码:
admin/admin、root/123456,出货即如此,且大量用户从没改过 - 不更新固件:设备卖出去就完事,没有 OTA 更新机制,漏洞永久留存
- 固件不签名:启动时不校验镜像签名,攻击者可加载恶意代码
- 明文通信:数据在网络上裸奔,无加密、无认证
这一系列妥协,在 2016 年 10 月酿成了史上最著名的 IoT 安全事件——Mirai 僵尸网络。Mirai 恶意程序通过扫描全网智能摄像头,尝试内置的约 60 组默认密码进行登录,一旦成功就把设备变成「肉鸡」,最终组织起海量受控设备对 DNS 服务商发起 DDoS 攻击,直接瘫痪了美国东海岸的大片互联网,Twitter、Netflix、CNN 等网站一度无法访问。
而 Mirai 远没有消失——它的源代码早已公开,2025 年安全研究人员仍在蜜罐中捕获到高度进化的 Mirai 变种(内部代号 Mirai_Revenant),在保留高效传播能力的同时加入了规避技术,继续威胁着智能家居、网络摄像头和工业物联网设备。
这里要强调一个常被低估的事实:Mirai 的技术原理其实「简陋」得惊人。它没有任何高级漏洞利用,靠的就是内置的一本「默认密码字典」(大约 60 组,比如 root/xc3511、admin/123456、root/vizxv 这些摄像头出厂默认值),全网扫描、挨个尝试。它之所以能造成如此巨大的破坏,不是因为它「聪明」,而是因为数以千万计的 IoT 设备连「改个默认密码」这么基础的事都没做。这背后揭示的,是一个比单个漏洞严重得多的系统性危机:IoT 安全的底线,是「大规模缺失」的。
二、IoT 的攻击面到底在哪
要对一台 IoT 设备做安全审计,先要理解它有哪些可被攻击的「面」:
| 攻击面 | 说明 | 常见风险 |
|---|---|---|
| 固件 | 设备里跑的底层软件 | 未签名、硬编码密钥、隐藏后门 |
| 物理接口 | UART、JTAG 调试口 | 可读取/修改固件、获得 shell |
| 网络通信 | Wi-Fi、蓝牙、MQTT 等 | 明文传输、弱认证、可重放 |
| 云端/App | 配套手机 App 和云服务 | API 越权、密钥泄露 |
| 默认配置 | 出厂密码、开放端口 | 被 Mirai 类僵尸网络批量扫描 |
一条完整的审计链路,通常从**「拿到固件」开始,到「摸清通信协议」**结束。下面按顺序走一遍。
三、第一步:拿到固件——四个途径
固件是 IoT 设备的「灵魂」,拿到它,就等于拿到了设备的核心代码。提取固件有四个常用途径:
- 从厂商官网下载:正规厂商会提供固件更新包(
.bin、.img等),这是最合法、最省事的方式。 - 从设备上直接 dump:通过 UART/JTAG 接口连接设备,直接读取 Flash 芯片里的内容。
- 从手机 App 里挖:很多设备通过 App 配置,App 里可能缓存或内置了固件更新包的下载 URL,用 Jadx-GUI 逆向 Android APK 常常能挖到。
- 拦截 OTA 更新流量:抓取设备联网更新时的流量,提取固件包。
说明:本文讲解的是授权范围内的安全审计流程(对自己的设备、或经授权的渗透测试)。未经授权提取他人设备固件、利用漏洞控制设备,属于违法行为。
这四个途径里,途径 2(UART/JTAG 调试口 dump) 是硬件安全审计的核心技能,也是最容易上手实战的一步,值得展开讲清楚。它的完整流程是:
- 拆机:用螺丝刀和撬片打开设备外壳,找到 PCB 主板。
- 找调试口:在板子上寻找未焊接的排针、测试点(test point),或标注着
UART、TXD、RXD、GND、VCC字样的焊盘。很多时候调试口是「四个一排的裸露焊盘」,这就是候选目标。 - 识别引脚:用万用表逐个测。先找 GND(和电源负极导通、对地电阻为 0);再找 VCC(对地电压稳定在 3.3V 或 5V);剩下的两个,电压持续跳变的是 TX(它在不断向外发送启动日志),电压相对稳定的是 RX(它在等待接收)。
- 接线:用 USB-TTL 转接板(CH340 / CP2102 / FT232 都行),把转接板的 GND 接设备的 GND、RX 接设备的 TX、TX 接设备的 RX(注意交叉,且通常不接 VCC)。
- 设波特率:用串口工具(PuTTY、minicom 或
screen)尝试常见波特率(115200、57600、9600 等),直到看到正常的启动日志。 - 进 shell / dump 固件:如果拿到的是 U-Boot 引导,可以在引导时打断它,进入 bootloader 命令行,用
md(memory dump)等命令把 Flash 里的固件整段读出来。
这套流程对路由器、摄像头、智能插座、门锁等几乎所有嵌入式设备都通用。掌握了它,你就拥有了「任何一台 IoT 设备都能拆开看」的能力。
四、第二步:拆解固件——Binwalk 的「解剖」能力
拿到固件后,第一件事是搞清楚里面有什么。这里的主角是 Binwalk(14.3k star,MIT 协议,现已用 Rust 重写为 v3 版本)。
Binwalk 是一款固件分析工具,核心能力包括:
- 识别嵌入文件:检测固件镜像里嵌入了哪些文件和数据结构
- 提取文件:把嵌入的文件和数据分离出来
- 熵分析:通过熵值识别哪部分是压缩或加密数据
- 文件系统提取:从固件镜像中还原出完整的根文件系统
用法极其简单,一条命令就能看穿一个固件镜像:
1 | binwalk firmware.bin |
它会输出固件里每一段的偏移量、类型(如 SquashFS 文件系统、LZMA 压缩数据、U-Boot 引导加载程序等)。对审计者来说,最有价值的一步是提取出根文件系统,然后就能像翻一个 Linux 系统目录一样,去 /etc/passwd、/etc/shadow、启动脚本、Web 服务配置里寻找硬编码的密码、隐藏的后门账号和未加密的密钥。
这里要特别提醒一个「新手最容易踩的坑」:不是所有固件都能被 Binwalk 自动识别。Binwalk 擅长的是「带文件系统的完整固件」(比如运行 Linux 的路由器、摄像头),但对于那些跑裸机代码或 RTOS 的轻量设备(比如很多智能门锁、传感器),固件是一个「纯可执行二进制」,里面没有 SquashFS、没有 ELF,Binwalk 会告诉你「识别不出任何东西」。这时候你就需要换一套思路——确认 MCU 型号、查内存映射、用 IDA 手动指定架构去反汇编。这一点我在后续写门锁那篇时还会展开。
五、第三步:摸清通信——MQTT 是最常见的重灾区
智能插座、灯泡这类设备,几乎都靠 MQTT 协议和云端、App 通信。MQTT 是一种轻量级的发布/订阅消息协议,非常适合资源受限的 IoT 设备。但它的安全问题也恰恰出在「轻量」上:
- 明文传输:默认 1883 端口不加密,控制指令(开灯、断电)在网络上一目了然
- 弱认证:很多设备用固定的用户名密码连接 broker,甚至根本不用认证
- 可重放:抓到的控制报文,可以直接重放,实现「隔空操控」
审计 MQTT 通信,核心工具是 Wireshark(配合 mqtt 过滤器)和 MQTT 客户端(如 mosquitto)。通过抓包,你能看到设备订阅和发布的 Topic,进而判断攻击者能否通过订阅或发布这些 Topic 来控制设备。
先解释一下 MQTT 的 Topic 是怎么运作的。MQTT 的 Topic 是一个用 / 分隔的层级字符串,比如:
1 | home/socket/1/control # 插座 1 的控制指令 |
设备会「发布」(publish)自己的状态到某个 Topic,同时「订阅」(subscribe)自己关心的 Topic 来接收指令。问题在于:
- 明文可读:如果走的是默认的 1883 端口(无 TLS),那么你发布「开灯」还是「断电」,在网络上都是明文,抓包者一眼看穿。
- Topic 可猜测:很多设备的 Topic 命名高度规律(
home/设备类型/编号/动作),攻击者猜出 Topic 结构后,直接往home/socket/1/control发布一条「关闭」指令,就能隔空关掉你家的插座。 - 认证形同虚设:有些设备连 MQTT 的用户名密码都不设,broker 对任何连接都放行。
一次 MQTT 抓包审计的实操示例
光讲理论不够,我们模拟一次对智能插座的 MQTT 抓包审计,看看攻击者视角会看到什么:
- 搭环境:把智能插座和手机连到同一个 Wi-Fi,在电脑上开 Wireshark,过滤条件填
mqtt。 - 触发操作:在手机 App 上按一下「开灯」,同时抓包。
- 看结果:你会看到设备向 broker(通常是云端服务器或本地网关)发送的 MQTT 报文,解开后大致长这样:
1 | Topic: home/socket/1/control |
如果这条报文是明文(走 1883 端口、无 TLS),那攻击者就掌握了三样东西:
- Topic 结构:
home/socket/1/control——据此能猜出插座 2、插座 3 的 Topic; - 指令格式:
{"power":"on"}——据此能构造{"power":"off"}关掉你的灯; - 认证方式:如果连接 broker 不需要密码,或密码是固定的默认值,攻击者直接就能「冒充设备」或「冒充 App」发布指令。
这就是「隔空关灯」的完整原理。它不需要任何「黑客技术」,只需要一台能连 Wi-Fi 的电脑 + Wireshark + 一个 MQTT 客户端。你家里那些「智能」设备,很多就裸奔在这样的明文协议上。
一个更直观的场景是:2017 年 GeekPwn 大赛上,安全极客在无需物理接触、无需拆解门锁的情况下,获得了果加互联网智能门锁的所有开锁密码——而果加正是当时中国使用量最大的智能锁品牌,被自如、万科、绿地、途家等公寓品牌广泛采用。这类演示揭示的,正是 IoT 设备「通信层」和「云端」的脆弱性。
一个完整的「审计闭环」示例
前面三步讲了”拿固件、拆固件、抓通信”,这里把它们串成一个完整的审计闭环,看一次真实的 IoT 审计是怎么流动的:
1 | ① 拿到固件(官网下载 / UART dump / App 里挖) |
这七步的关键在于:静态分析(看固件里的代码)和动态分析(看设备运行时的行为)要互相印证。 固件里搜到一个硬编码密码,只是”怀疑”,还得接上设备、真的用那个密码连一下,才能”确认”。反过来,抓包看到明文 MQTT,也最好回到固件里确认”这个 Topic 对应的操作是什么”。单靠任何一步都不够,闭环才有说服力。
六、第四步:找到漏洞——三类最高频的问题
审计到这一步,通常会撞见三类高频漏洞:
| 漏洞类型 | 典型表现 | 后果 |
|---|---|---|
| 弱口令/默认凭证 | admin/admin、硬编码的 telnet 密码 |
被 Mirai 类僵尸网络批量抓取为肉鸡 |
| 命令注入 | Web 管理界面、ping/traceroute 等输入点未过滤 | 远程执行任意命令 |
| 未授权访问 | RTSP/ONVIF 端口开放、无认证 API | 摄像头画面被直接观看 |
以摄像头为例,大量网络摄像头默认开放 RTSP(554 端口)和 ONVIF 协议,如果用户没改默认密码,攻击者用现成的工具就能直接拉取实时画面——这也是「偷窥摄像头」黑色产业链的技术根源。
命令注入(Command Injection)值得单独说明,因为它是 IoT 设备里最典型、也最「戏剧化」的一类漏洞。它的成因非常朴素:很多设备的 Web 管理界面里,有个「网络诊断」或「ping 测试」功能,让你输入一个 IP 地址,设备就会执行类似 ping 192.168.1.1 的命令。问题在于,如果开发者没有对输入做过滤,攻击者输入 192.168.1.1; cat /etc/shadow(用分号分隔第二条命令),设备就会「傻乎乎」地执行完整内容——先 ping,再把你想要的文件内容吐出来。这类漏洞在低端路由器、摄像头里层出不穷,本质上都是「把用户输入直接拼进 shell 命令」这一个低级错误造成的。
三类漏洞的「技术根源」对比
把上面三类高频漏洞放到一起,追它们的”根”,会发现它们其实是三个不同的”坏习惯”:
| 漏洞 | 根因 | 本质 | 修复思路 |
|---|---|---|---|
| 弱口令/默认凭证 | 出厂配置不设防 | “图省事”——厂商不想让用户”不会用” | 强制首启改密 + 禁用默认口令 |
| 命令注入 | 用户输入直接拼进 shell | “图省事”——过滤输入太麻烦 | 参数化调用 + 白名单校验 |
| 未授权访问 | 端口/API 默认开放 | “图省事”——开放才”功能全” | 最小权限 + 默认关闭 + 认证 |
发现规律了吗?三类漏洞的根因,其实是同一个字——“省”。 厂商为了”让用户开箱即用”,省掉了强制改密、省掉了输入过滤、省掉了权限控制。而”省”下来的这些安全成本,最终都变成了攻击者的”入场券”。
这也是 IoT 安全的终极困境:安全和不安全,在成本上天然对立。 厂商每省一分安全成本,售价就能低一分、用户体验就顺一分;而这些”省”下来的代价,不会立即显现,而是潜伏在设备里,直到某天被 Mirai 扫描、被偷窥、被当肉鸡。便宜,是有代价的——只是这个代价,往往不是出钱买设备的人在付。
七、防御与选购:普通用户能做什么
你不是安全研究员,但下面这些事,直接决定你家设备会不会变成「肉鸡」:
- 到手先改默认密码:这是成本最低、收益最高的一步,直接阻断 Mirai 类扫描。
- 给 IoT 设备单独建一个 Wi-Fi 网络:路由器开启「访客网络」或 VLAN 隔离,让智能设备和你电脑、手机所在的网络物理隔开——设备被攻破了,也碰不到你的核心数据。
- 关掉不需要的功能:不用 UPnP、不用远程访问就关掉,减少攻击面。
- 优先选支持本地控制的设备:支持 Home Assistant 这类开源本地化平台的设备,可以把控制权从云端收回到你自己手里,不依赖厂商的服务器,也少一条被云端拖累的风险链。
- 定期检查固件更新:虽然很多设备不更新,但对那些会更新的大牌设备,及时升级仍是必要的。
- 关注安全通报:留意你所用品牌的漏洞披露(CVE),一旦中招立即停用或隔离。
一个「新手自检清单」:审计任何设备前先问自己
在动手审计任何 IoT 设备之前,先过一遍这份自检清单,能帮你少走很多弯路:
- 它联网吗? —— 联网才有远程攻击面;纯本地设备(如离线门锁)只能靠物理接触攻击。
- 它的固件我能拿到吗? —— 官网有更新包最好;没有就看 App 里有没有、UART 能不能 dump。
- 它用什么通信? —— Wi-Fi?BLE?MQTT?Zigbee?不同协议对应不同的抓包工具。
- 它有没有调试口? —— 拆机找 UART/JTAG,这是”进内部”最快的路。
- 它的默认密码是什么? —— 查厂商文档、搜公开默认凭据库,先试默认密码,常常一击即中。
- 我的目标是”学习”还是”评估风险”? —— 学习可以慢慢来;评估风险要聚焦”最高危的攻击面”。
这份清单的底层逻辑是:审计不是”漫无目的地拆”,而是”带着问题找答案”。 先搞清楚”这个设备最可能从哪被攻破”,再针对性下手,比”什么都试一遍”高效得多。
八、结语:物联网安全,本质是「默认不安全」
写完这一篇,我想起一个扎心的类比:传统家电的安全是「设计出来的」,而 IoT 设备的安全是「省出来的」。厂商省掉签名、省掉加密、省掉更新,把这些成本转嫁给了每一个普通用户——而绝大多数用户根本不知道这些风险的存在。
所以 IoT 安全的第一课,不是学会用 Binwalk,而是先建立一个认知:你买回来的每一台「智能」设备,默认都是不安全的。从改密码、隔离网络开始,你就是在给自己家这台「分布式小服务器集群」做最基础的安全加固。
补一句呼应:这一篇讲”审计”的方法,下一篇(二手智能门锁安全研究)会把这套方法落到一个具体的实战目标上——买几把旧门锁回来,真的拆、真的抓包、真的逆向。如果你也想”从看懂到上手”,那是一个可以直接照做的起点。
素材来源与延伸阅读:
- Binwalk 官方仓库(14.3k star,MIT 协议,Rust 重写的固件分析工具,支持嵌入文件识别/提取、熵分析、文件系统提取)
- Home Assistant 官方仓库(开源家庭自动化平台,支持本地化控制,减少对厂商云端的依赖)
- 2016 年 Mirai 僵尸网络事件:通过约 60 组默认密码扫描摄像头,发起对 DNS 服务商的 DDoS,瘫痪美国东海岸互联网
- 2025 年 Mirai 变种(Mirai_Revenant)蜜罐捕获的逆向分析报告
- GeekPwn 2017 果加智能门锁破解案例(央广网/中新网报道,无需物理接触获取全部开锁密码)
- 相关文章:看门狗游戏里的无人车,现实里的”近源渗透车”
评论