3、常见默认密码类型:弱口令字典、空密码、硬编码密码与通用密码模式
大家好,我是老周。做物联网安全这些年,我拆解过的设备没有一千也有八百了。每次拿到新设备,第一件事就是看看它的默认密码是什么。说实话,翻来覆去就那么几类。今天我就把这四类最常见的默认密码类型掰开揉碎了讲清楚。
你想想看,为什么默认密码问题这么多年都根治不了?说白了,厂商图省事,用户图方便。但方便的背后,是巨大的安全隐患。
3.1 弱口令字典:最经典的“入门级”漏洞
弱口令字典,就是那些被反复使用的、极其简单的密码组合。我在做渗透测试时,第一个尝试的永远是这些。
核心特征:密码强度极低,通常由常见单词、数字序列或键盘顺序组成。
常见的弱口令有哪些?我列个表,你看看眼不眼熟:
| 类型 | 典型示例 | 出现频率(我统计的) |
|---|---|---|
| 用户名+简单数字 | admin/12345, root/123456 | 约35% |
| 键盘顺序 | qwerty, 12345678, asdfgh | 约20% |
| 重复数字 | 111111, 000000, 888888 | 约15% |
| 常见单词 | password, admin, guest | 约20% |
| 厂商名+版本号 | tp-link/1234, dlink/admin | 约10% |
我记得有一次,帮一个智能工厂做安全评估。他们的工业网关,默认密码是 admin/12345。我说你们赶紧改,对方工程师说“用了三年了,没事”。结果呢?我用了不到30秒就登进去了。嗯,从那以后他们再也不敢用默认密码了。
我的建议:弱口令字典是攻击者的第一把钥匙。如果你在做设备固件分析,先跑一遍弱口令字典,往往能直接拿到最高权限。
3.2 空密码:最危险的“零成本”漏洞
空密码,就是没有密码。你没看错,很多物联网设备出厂时,密码字段是空的。用户第一次登录,直接敲回车就进去了。
为什么会这样?我分析过几个案例:
- 开发偷懒:工程师调试时为了方便,把密码验证关了,忘了加回去。
- 设计缺陷:某些低端芯片,存储密码的EEPROM空间不够,干脆不设密码。
- “用户体验”借口:厂商觉得设密码麻烦用户,干脆留空。
警告:空密码设备一旦接入公网,平均存活时间不超过5分钟。我在蜜罐里捕获的数据显示,攻击者扫描到空密码设备后,平均3秒内就会尝试登录。
我曾经在某个智慧路灯项目里,发现一批控制器全是空密码。问厂商,对方说“为了方便维护”。我说你方便了,黑客也方便了。后来我们强制要求所有设备首次登录必须修改密码,才堵上这个窟窿。
3.3 硬编码密码:藏在代码里的“后门”
硬编码密码,就是写死在固件里的密码。这种密码最恶心人——你改不了,或者改了也没用。
硬编码密码通常出现在:
- 调试接口:UART、JTAG、SSH的默认登录凭证。
- 超级管理员账户:厂商留的后门,用于远程维护。
- 固件更新机制:签名验证的密钥或密码。
我举个例子,某款家用路由器,固件里藏着这么一段:
// 调试模式密码,仅供内部使用
#define DEBUG_USER "root"
#define DEBUG_PASS "wrt54g_debug_2020"
// 远程维护账户
const char* backdoor_user = "service";
const char* backdoor_pass = "s3rv1c3@dmin";
你看,注释里写着“仅供内部使用”,但实际上一经反编译,所有人都能看到。我在分析某款IP摄像头固件时,就发现过类似的硬编码密码。攻击者拿到这个密码,可以直接远程控制摄像头,甚至横向渗透到内网其他设备。
关键点:硬编码密码无法通过用户侧修改。唯一的解决办法是厂商发布新固件,或者用户彻底更换设备。
3.4 通用密码模式:看似复杂,实则脆弱
通用密码模式,是指密码遵循某种固定规则,但具体值因设备而异。比如:
- MAC地址后6位:密码是
admin + MAC后6位 - 序列号倒序:密码是序列号的逆序
- 固定前缀+随机数:密码是
P@ssw0rd_XXXX
这种模式看起来比弱口令强,但一旦规则泄露,所有设备都完蛋。我见过最离谱的一个案例:某厂商的智能门锁,密码规则是 设备ID的前4位 + 出厂日期。攻击者只要拿到一个设备ID,就能算出所有同批次门锁的密码。
你想想看,这跟没有密码有什么区别?
避坑指南:我曾经在评估某智能家居平台时,发现他们的设备密码生成算法是公开的——就在SDK文档里。我建议他们改用随机密码+首次强制修改的策略。记住,密码生成算法必须保密,且每个设备的密码必须独立随机。
3.5 四种密码类型的风险对比
为了让你看得更清楚,我把这四种类型放在一起对比:
| 类型 | 破解难度 | 影响范围 | 修复难度 | 典型场景 |
|---|---|---|---|---|
| 弱口令字典 | 极低 | 单设备 | 低(用户可改) | 路由器、摄像头 |
| 空密码 | 零 | 单设备 | 低(用户可设) | 工业控制器、开发板 |
| 硬编码密码 | 低(需逆向) | 同型号所有设备 | 高(需固件更新) | 嵌入式设备、IoT网关 |
| 通用密码模式 | 中(需知道规则) | 同批次所有设备 | 中(需修改算法) | 智能家居、门锁 |
从表中可以看出,硬编码密码和通用密码模式的危害最大——它们影响的是整个产品线,而不是单个设备。
3.6 知识体系:默认密码类型全景图
下面这张图,是我梳理的默认密码类型分类与风险传导关系。你可以把它当作本章的知识地图:
这张图展示了四种密码类型的关系。从左到右,破解难度和影响范围都在增加。弱口令和空密码是“个体问题”,而硬编码密码和通用密码模式是“系统性漏洞”。
3.7 实战建议:如何应对这些默认密码
说了这么多问题,总得给点解决方案。我个人习惯的做法是:
- 设备选型阶段:要求厂商提供默认密码策略文档,拒绝空密码和硬编码密码的设备。
- 部署阶段:所有设备首次上线前,强制修改默认密码。可以用脚本批量处理。
- 运营阶段:定期扫描内网设备,检查是否有人改回了默认密码。我见过太多运维人员为了方便,改完又改回去的。
- 应急响应:如果发现硬编码密码漏洞,立即联系厂商获取补丁。在补丁发布前,通过防火墙限制受影响设备的访问。
再次强调:不要相信任何“出厂默认密码很安全”的说法。默认密码存在的唯一意义,就是让你在第一次登录时改掉它。
好了,这一章的内容就到这里。四种默认密码类型,每一种我都见过真实案例。记住,安全不是靠运气,而是靠每一个细节的坚持。