- 网络安全
- 嵌入式
【免费下载链接】routersploit
Exploitation Framework for Embedded Devices
导读
本文讲解 RouterSploit 框架中creds/routers/netcore/telnet_default_creds模块的完整用法与底层实现。该模块针对 Netcore(磊科)品牌路由器暴露的 Telnet 服务执行默认凭据字典攻击,命中后自动将有效的用户名/密码组合展示给用户,用于安全评估中快速验证设备是否仍在使用出厂默认口令。读完本文,你将掌握该模块的调用步骤、全部可配置参数、凭据字典的加载方式,以及其背后"连接探测 → 多线程字典爆破 → 结果表格输出"的完整执行链路。
模块定位与适用场景
在 RouterSploit 的模块分类中,creds/routers/netcore/telnet_default_creds属于凭据(creds)模块族,其官方描述为:
Module performs dictionary attack with default credentials against Netcore Router Telnet service. If valid credentials are found, they are displayed to the user.
即:针对 Netcore 路由器 Telnet 服务执行默认凭据字典攻击,若发现有效凭据则展示给用户。该模块面向的硬件目标为Netcore Router(见 模块源码 中__info__["devices"]字段)。
从目录结构看,Netcore 品牌还配套了同族的 FTP 与 SSH 变体(ftp_default_creds.py、ssh_default_creds.py),三者的模块骨架完全一致,仅协议端口与默认端口不同。而 Telnet 变体是其中历史最悠久、对嵌入式设备(路由器/摄像头)最常用的检测方式之一。
快速上手:完整验证步骤
按照官方文档(telnet_default_creds.md)的验证步骤,可在 RouterSploit 交互式终端中完成一次完整攻击:
- 在仓库根目录启动框架:
./rsf.py(入口脚本 rsf.py 仅接受 Python3 环境,检测到 Python2 会直接退出) - 加载模块:
use creds/routers/netcore/telnet_default_creds - 设置目标:
set target [TargetIP] - 运行:
run - 若发现有效凭据,框架会将其展示给用户
典型运行场景
官方文档给出的完整运行实录如下:
rsf > use creds/routers/netcore/telnet_default_creds rsf (Netcore Router Default Telnet Creds) > set target 192.168.1.1 [+] target => 192.168.1.1 rsf (Netcore Router Default Telnet Creds) > run [*] Running module... [*] Target exposes Telnet service [*] Starting default credentials attack against Telnet service [*] thread-0 thread is starting... [-] Telnet Authentication Failed - Username: 'admin' Password: 'admin' [-] Telnet Authentication Failed - Username: '1234' Password: '1234' [-] Telnet Authentication Failed - Username: 'root' Password: '12345' [-] Telnet Authentication Failed - Username: 'root' Password: 'root' [+] Telnet Authentication Successful - Username: 'user' Password: 'user' [*] thread-0 thread is terminated. [*] Elapsed time: 5.389287948608398 seconds [+] Credentials found! Target Port Service Username Password ------ ---- ------- -------- -------- 192.168.1.1 23 telnet user user上述输出中几个关键信息点值得注意:
Target exposes Telnet service:表示模块先做了连通性预检(check()),确认目标 23 端口确实开放 Telnet 服务后才进入字典攻击阶段;[-] Telnet Authentication Failed:verbosity(详细输出)开启时逐条打印失败的凭据尝试;[+] Telnet Authentication Successful:命中有效凭据,随后以表格形式汇总输出(Target / Port / Service / Username / Password 五列);Elapsed time:整个攻击耗时,由 exploit.py 中run_threads()统一计时。
模块参数详解
该模块自身只定义了 4 个参数(见 telnet_default_creds.py),其余高级参数继承自通用基类 telnet_default.py。
| 参数 | 默认值 | 类型 | 说明 |
|---|---|---|---|
target | 空字符串 | OptIP | 目标 IPv4/IPv6 地址,或file://前缀指定包含ip:port的目标文件 |
port | 23 | OptPort | 目标 Telnet 端口,取值范围 1~65535 |
threads | 1 | OptInteger | 并发线程数(Netcore 模块默认单线程) |
defaults | admin:admin,guest:guest | OptWordlist | User:Pass组合,逗号分隔或file://指向凭据文件 |
stop_on_success | true | OptBool | 命中第一组有效凭据后是否立即停止(继承自基类) |
verbosity | true | OptBool | 是否逐条打印认证尝试过程(继承自基类) |
各参数的类型校验逻辑可在 option.py 中确认:
- OptIP:设置时校验值必须为空、合法 IPv4 或 IPv6,否则抛出
OptionValidationError; - OptPort:强制转为整数并限定
0 < value <= 65535; - OptWordlist:这是字典攻击模块最核心的参数类型。它重写了
__get__:若值以file://开头,则读取对应文件、逐行 strip 后返回列表;否则按逗号切分返回列表。__set__时若指定file://路径还会校验文件是否存在; - OptBool:仅接受字符串
true/false。
值得强调的是,与通用基类的默认值不同,Netcore 模块把threads收敛为1、把defaults收敛为admin:admin,guest:guest这两组最常见的组合——这是厂商模块对"该品牌常见出厂口令"的定制化体现。
自定义凭据字典
defaults参数支持两种赋值方式:
rsf (Netcore Router Default Telnet Creds) > set defaults admin:admin,root:root,user:user # 或使用文件(每行一组 user:pass) rsf (Netcore Router Default Telnet Creds) > set defaults file:///path/to/creds.txt当采用file://方式时,文件中的每一行都会被 strip 后作为一个User:Pass组合参与尝试。RouterSploit 仓库内置了包含653 行常见设备默认凭据的通用词表 defaults.txt(如1111:1111、1234:1234、Administrator:admin、各厂商 Alphanetworks 系列组合等),你可以在交互终端用show wordlists查看仓库内置词表及其file://引用路径(见 interpreter.py 中_show_wordlists实现)。
底层执行流程:从 run 到结果输出
虽然 Netcore 模块源码只有 22 行,但它通过类继承复用了通用 Telnet 默认凭据模块的完整攻击逻辑。整体调用链如下:
run() → attack() → check() → target_function() × N(线程) → 结果表格各环节在 telnet_default.py 中的实现要点:
run():重置self.credentials列表后调用attack();attack()(被@multi装饰):先执行check()预检——调用telnet_create()建立连接并执行test_connect(),若目标不暴露 Telnet 服务则直接返回。随后用LockedIterator(self.defaults)包装凭据迭代器(内部持有一个threading.Lock,保证多线程安全地逐个取凭据,见 exploit.py),并调用run_threads()启动self.threads个线程执行target_function;target_function():循环从迭代器取出username:password(按第一个冒号split(":", 1)切分),创建 Telnet 客户端调用login(username, password, retries=3)。认证成功时,若stop_on_success=True则通过running.clear()通知其余线程停止,并把(target, port, target_protocol, username, password)追加进credentials;- 所有线程结束后,若
credentials非空则print_success("Credentials found!")并以表格打印,否则输出Credentials not found。
@multi装饰器(exploit.py)还支持批量目标:当target以file://开头时,它会逐行读取目标文件,按ip:port格式解析出每个目标并依次执行一次attack(),实现单次命令批量扫描多个 Netcore 设备。
Telnet 认证判定原理
模块的认证判定发生在 Telnet 客户端层 telnet_client.py 的login()方法中,其流程为:
- 建立 Telnet 连接(超时
TELNET_TIMEOUT = 30.0秒); expect([b"Login: ", b"login: ", b"Username: ", b"username: "], 5)等待登录提示并发送用户名(UTF-8 编码 +\r\n);expect([b"Password: ", b"password: "], 5)等待密码提示并发送密码;- 最后
expect([b"Incorrect", b"incorrect"], 5)检查响应中是否出现认证失败关键字; - 判定规则:若未匹配到
Incorrect(索引i == -1),且响应中包含 shell 提示符#、$、>中的任意一个,或响应长度超过 500 字节(用于兼容 MikroTik 等大横幅设备),则判定认证成功并打印Telnet Authentication Successful;否则判定失败并打印Telnet Authentication Failed。
这一点也解释了官方场景示例中失败/成功消息的来源——它们由 telnet_client.py 的print_success/print_error输出,并由模块的verbosity参数控制是否显示。
自动化与测试验证
该模块同时提供了自动化接口与回归测试:
check_default():被@mute装饰器(exploit.py)包裹,将攻击过程中的 stdout 输出重定向到虚拟文件对象,静默执行完整字典攻击并返回命中的凭据列表(未命中返回None)。该接口可供其他模块或扫描器(如 autopwn.py)以编程方式复用,无需解析终端输出;- 单元测试test_telnet_default_creds.py 验证了模块的默认参数值(
target == ""、port == 23、threads == 1、defaults == ["admin:admin", "guest:guest"]、stop_on_success is True、verbosity is True),并在测试 Telnet 服务器上断言check()返回 True、check_default()返回非空结果、run()正常执行完毕;对应的通用基类测试见 test_telnet_default.py。
安全使用提示
本模块本质上是默认口令合规性检测工具:它只尝试设备厂商出厂预设的弱口令组合,不涉及任何漏洞利用。建议仅在获得授权的渗透测试、内部安全审计或资产盘点场景中使用,用于发现仍在使用admin:admin、guest:guest等出厂凭据的 Netcore 设备,并及时整改。Telnet 本身以明文传输凭据,若目标设备支持,更推荐配合同族的 ssh_default_creds.py(默认端口 22)进行安全通信条件下的凭据检测。
- 网络安全
- 嵌入式
【免费下载链接】routersploit
Exploitation Framework for Embedded Devices
相关推荐
RouterSploit PFSense 路由器默认 Telnet 凭据检测模块实战指南(telnet_default_creds)
RouterSploit PFSense 路由器默认 Telnet 凭据检测模块实战指南(telnet_default_creds) 本指南以 RouterSp
网络安全嵌入式Routersploit 实战:使用 telnet_default_creds 模块对 Juniper 路由器执行 Telnet 默认凭据字典攻击
Routersploit 实战:使用 telnet_default_creds 模块对 Juniper 路由器执行 Telnet 默认凭据字典攻击 导读 本指南
网络安全嵌入式routersploit Netgear 路由器 Telnet 默认凭据字典攻击模块实战指南(telnet_default_creds)
routersploit Netgear 路由器 Telnet 默认凭据字典攻击模块实战指南(telnet_default_creds) 本指南围绕 route
网络安全嵌入式
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考