4、Telnet协议与弱口令:从原理到实战

Telnet,这个诞生于1969年的古老协议,至今仍在IoT设备中大量存在。说实话,我第一次在智能摄像头里看到Telnet端口开放时,心里是又惊又喜——惊的是厂商居然还在用这么不安全的协议,喜的是这往往意味着一个唾手可得的突破口。

这一章,我们就来彻底搞懂Telnet。从协议原理到它在IoT设备中的实际应用,最后我会带你亲手做一次弱口令检测实战。

4.1 Telnet协议原理:一个“明文裸奔”的协议

Telnet协议的核心,说白了就是远程终端协议。它让你能通过网络,像坐在设备跟前一样操作它的命令行。

但这里有个致命问题——Telnet的所有通信都是明文传输的。包括你输入的用户名、密码、执行的命令、返回的结果……全都可以被网络上的任何人直接看到。

核心要点:Telnet使用TCP 23端口,采用客户端-服务器模型。它不加密、不认证、不校验——三无协议。

我遇到过不少刚入行的朋友问:“那Telnet和SSH有什么区别?” 区别大了去了。我整理了一个对比表,你看一眼就明白了:

特性 Telnet SSH
端口 TCP 23 TCP 22
加密 无(明文) 强加密
认证方式 仅密码(明文) 密码/密钥对
数据完整性 无校验 HMAC校验
典型应用场景 老旧设备、调试接口 生产环境、安全运维

你想想看,一个连加密都没有的协议,在IoT设备上意味着什么?意味着只要有人能嗅探到网络流量,你的设备密码就等于公开了。

4.2 Telnet在IoT设备中的应用:为什么还在用?

你可能觉得奇怪——都2025年了,为什么还有设备在用Telnet?

原因其实很现实。我在做IoT设备固件分析时,拆过几十款不同品牌的设备,总结下来主要有三个原因:

  • 成本考虑:Telnet的实现代码极其简单,不需要处理加密库、证书管理这些复杂的东西。对于成本敏感的IoT芯片来说,能省一点是一点。
  • 调试便利:很多厂商在开发阶段用Telnet做调试接口,结果产品上市时忘了关掉。我见过一款智能插座,出厂固件里Telnet服务默认就是开启的。
  • 历史遗留:一些基于老旧Linux内核的设备,本身就不支持SSH。厂商又不想升级系统,Telnet就成了唯一的选择。

⚠️ 避坑提醒:我曾经在测试一款工业路由器时,发现它的Telnet服务不仅开着,而且用的是出厂默认密码。更离谱的是,这个密码在用户手册里就能找到。嗯,这种“送分题”在IoT安全测试中其实很常见。

常见的IoT设备中,Telnet服务通常出现在这些地方:

  • 网络摄像头(尤其是白牌产品)
  • 智能路由器/AP
  • 工业控制网关
  • 智能家居中控
  • 老旧打印机/扫描仪

4.3 Telnet弱口令检测实战:从扫描到爆破

好了,理论说完了,我们来点实际的。下面我会带你走一遍完整的Telnet弱口令检测流程。

4.3.1 第一步:发现Telnet服务

首先,我们需要找到目标设备上开放的Telnet端口。我个人习惯用nmap来做端口扫描:

# 扫描目标IP的23端口
nmap -p 23 192.168.1.100

# 如果你想扫整个网段
nmap -p 23 192.168.1.0/24

# 更激进一点,快速扫描常见端口
nmap -p 23 --open 192.168.1.0/24

输出结果大概长这样:

Nmap scan report for 192.168.1.100
PORT   STATE SERVICE
23/tcp open  telnet

看到open两个字,就说明目标设备上Telnet服务是开启的。

4.3.2 第二步:确认服务版本

光知道端口开放还不够,我们还需要知道Telnet服务的具体版本。不同版本的Telnet服务,弱口令检测的策略可能不一样。

# 使用nmap的服务版本探测
nmap -sV -p 23 192.168.1.100

输出示例:

PORT   STATE SERVICE VERSION
23/tcp open  telnet  BusyBox telnetd

看到BusyBox telnetd了吗?这是IoT设备上最常见的Telnet服务实现。BusyBox是一个集成了大量Unix工具的轻量级软件,专门用于嵌入式系统。

💡 经验之谈:BusyBox telnetd有一个特点——它默认不记录登录失败的日志。这意味着你即使爆破失败了,设备也不会留下痕迹。当然,这不代表你可以为所欲为,测试前一定要获得授权。

4.3.3 第三步:准备弱口令字典

弱口令检测的核心,就是有一个好的字典。我这些年积累了一些经验,IoT设备上最常见的弱口令组合其实就那么几类:

类型 常见用户名 常见密码
出厂默认 admin, root, user admin, 123456, password
厂商特定 admin, root, support admin123, 888888, 666666
空密码 root, admin (空)
简单组合 admin, root admin123, root123, 12345678

我个人习惯把这些组合整理成一个文本文件,每行一个,格式是用户名:密码:

root:root
root:admin
root:123456
root:password
admin:admin
admin:123456
admin:password
admin:admin123
user:user
user:123456
support:support

4.3.4 第四步:执行弱口令检测

这里我推荐使用hydra,它是目前最流行的在线密码爆破工具之一。命令如下:

# 使用hydra对Telnet进行弱口令检测
hydra -l root -P /path/to/passwords.txt telnet://192.168.1.100

# 如果你有用户名列表和密码列表
hydra -L /path/to/users.txt -P /path/to/passwords.txt telnet://192.168.1.100

参数说明:

  • -l:指定单个用户名
  • -L:指定用户名字典文件
  • -P:指定密码字典文件
  • telnet://:指定协议为Telnet

运行后,hydra会尝试每个用户名和密码组合。如果找到了正确的凭据,它会显示类似这样的结果:

[23][telnet] host: 192.168.1.100   login: root   password: 123456

看到这行输出,就意味着你找到了一个弱口令。

⚠️ 法律红线:未经授权的弱口令检测是违法行为。我每次做测试前,都会先签好授权协议,明确测试范围和边界。这一点,请你务必牢记。

4.3.5 第五步:验证与利用

找到弱口令后,我们需要验证它是否真的能用。直接用Telnet客户端连接试试:

telnet 192.168.1.100

输入用户名和密码,如果成功登录,你会看到设备的命令行界面。这时候,你就可以进一步探索设备了——查看文件系统、检查运行进程、寻找其他漏洞……

不过,我建议你验证完就退出,不要做多余的操作。毕竟,我们的目标是检测弱口令,不是破坏设备。

4.4 知识图谱:Telnet弱口令检测全流程

下面这张SVG图,把整个Telnet弱口令检测的流程串起来了。你可以把它当作一个快速参考:

Telnet弱口令检测全流程 1. 发现Telnet服务 2. 确认服务版本 3. 准备弱口令字典 4. 执行弱口令检测 5. 验证与利用 常用工具 nmap - 端口扫描 hydra - 密码爆破 telnet - 连接验证 常见弱口令 admin:admin root:123456 admin:password ⚠️ 所有测试必须获得授权,遵守法律法规

4.5 本章小结

Telnet弱口令检测,是IoT安全入门最友好的切入点之一。它不需要复杂的工具链,也不需要高深的技术背景。你只需要:

  • 理解Telnet协议的原理——明文传输,天生不安全
  • 知道它在IoT设备中的常见位置——摄像头、路由器、智能家居
  • 掌握基本的检测流程——扫描、识别、字典、爆破、验证

说实话,我见过太多IoT设备因为Telnet弱口令而被攻破的案例。有些厂商甚至把root密码直接写死在固件里,用户连改都改不了。嗯,这就是现实——安全从来不是厂商的第一优先级。

但对我们来说,这恰恰是机会。从Telnet弱口令开始,你就能一步步深入IoT安全的广阔世界。