- 网络安全
- 嵌入式
【免费下载链接】routersploit
Exploitation Framework for Embedded Devices
导读
creds/routers/cisco/ssh_default_creds是 routersploit(嵌入式设备渗透测试框架)中针对Cisco 路由器 SSH 服务的默认口令字典攻击模块。本文以该模块文档为主线,完整讲解其在交互式命令行中的加载、配置与运行流程,并结合模块源码、SSH 客户端底层实现与单元测试,剖析参数含义、攻击执行链路和结果判定机制。读完本文,你将能独立使用该模块对 Cisco 路由器开展默认凭据安全检测,并理解框架中 SSH 凭据模块的统一设计范式。
模块概览:功能与定位
该模块属于 routersploit 的creds(凭据类)模块族,核心功能是对 Cisco 路由器开放的 SSH 服务执行默认凭据字典攻击,一旦找到有效的用户名/密码组合,会立即在终端中展示给使用者。
其元信息定义在 模块源码 中:
- 模块名称:Cisco Router Default SSH Creds
- 模块描述:针对 Cisco Router SSH 服务的字典攻击,发现有效凭据后展示给用户
- 作者:Marcin Bury(threat9)
- 适用设备:Cisco Router
从代码继承关系看,该模块直接继承自通用的 ssh_default 模块,因此它本质上是"通用 SSH 默认凭据攻击引擎 + Cisco 专用参数预设"的组合——这也是整个creds/routers/*目录下所有厂商模块(如 FTP、Telnet 变体)共用的设计模式。
快速上手:三步完成 Cisco SSH 默认凭据检测
按照 模块文档 的验证步骤,使用流程如下:
- 启动框架:
./rsf.py - 加载模块:
use creds/routers/cisco/ssh_default_creds - 设置目标:
set target [TargetIP] - 执行攻击:
run - 若发现有效凭据,结果将以表格形式展示
完整的交互式会话示例如下(来自模块文档):
rsf > use creds/routers/cisco/ssh_default_creds rsf (Cisco Router Default SSH Creds) > set target 192.168.1.1 [+] target => 192.168.1.1 rsf (Cisco Router Default SSH Creds) > run [*] Running module... [*] Target exposes SSH service [*] Starting default credentials attack against SSH service [*] thread-0 thread is starting... [-] SSH Authentication Failed - Username: 'admin' Password: '12345' [-] SSH Authentication Failed - Username: 'admin' Password: '123456' [-] SSH Authentication Failed - Username: 'Admin' Password: '12345' [-] SSH Authentication Failed - Username: 'Admin' Password: '123456' [+] SSH Authentication Successful - Username: 'admin' Password: 'admin' [*] thread-0 thread is terminated. [*] Elapsed time: 2.3932292461395264 seconds [+] Credentials found! Target Port Service Username Password ------ ---- ------- -------- -------- 192.168.1.1 22 ssh admin admin从输出可观察到模块的完整行为链:先探测目标是否开放 SSH 服务 → 逐个尝试字典中的凭据 → 命中后停止并汇总成表。登录成功后会输出[+] SSH Authentication Successful,最终结果表中包含目标 IP、端口、服务类型、用户名和密码五个字段。
参数详解:五个可配置项及其默认值
模块暴露的选项定义在 模块源码,由基类 ssh_default 补充完整:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
target | OptIP | 空 | 目标 IPv4 / IPv6 地址,或file://前缀的 ip:port 列表文件 |
port | OptPort | 22 | 目标 SSH 服务端口 |
threads | OptInteger | 1 | 并发线程数(注意:Cisco 模块覆盖了基类的默认值 8) |
defaults | OptWordlist | admin:admin | 用户名:密码 组合,或file://前缀的凭据字典文件 |
stop_on_success | OptBool | true | 命中第一组有效凭据后是否停止(继承自基类) |
verbosity | OptBool | true | 是否逐条打印认证尝试过程(继承自基类) |
各参数类型的行为由 option.py 中的对应选项类约束:
- OptIP:通过正则严格校验 IPv4 / IPv6 格式,非法地址直接报错
Invalid address. Provided address is not valid IPv4 or IPv6 address.(见 option.py)。 - OptPort:强制转换为整数并校验
0 < port <= 65535(见 option.py)。 - OptWordlist:这是最灵活的选项——支持逗号分隔的内联列表(如
admin:admin,cisco:cisco),也支持file://前缀指向的外部字典文件;其__get__方法会在取值时自动把文件逐行读入并去除首尾空白(见 option.py)。 - OptInteger:支持十进制或十六进制(
int(value, 16))字符串到整数的转换。 - OptBool:仅接受
true/false两个取值。
这里有一个容易被忽略的细节:Cisco 模块将defaults预设为admin:admin、threads预设为 1,而通用基类默认加载的是 defaults.txt 全量字典(共 653 行)并使用 8 线程。原因是 Cisco 的 SSH 登录尝试属于慢速密码认证,单凭据单线程更稳妥、更不易触发目标设备的锁定或 IDS 告警。若需要更全面的覆盖,可在运行时覆盖defaults为框架内置全量字典:set defaults file:///routersploit/resources/wordlists/defaults.txt(按实际仓库绝对路径调整),该字典中即包含admin:cisco、cisco:cisco、Cisco:Cisco等典型 Cisco 组合。
攻击执行链路:从 run 到认证成功的源码级剖析
1. 服务探测(check)
run()首先调用attack(),其第一步是check()(见 ssh_default.py):创建一个 SSH 客户端并调用test_connect()尝试连接。底层实现在 ssh_client.py:
- 使用固定用户名
root+ 12 位随机密码发起连接(random_text(12)); - 若抛出
paramiko.AuthenticationException,说明目标确实存在 SSH 服务(只是拒绝该凭据),判定探测成功; - 若抛出其他异常(连接超时、拒绝等),判定目标未开放 SSH,模块直接返回,不做后续攻击。
这是整套框架creds模块"先探测、后攻击"安全模式的标准实现——不会对非 SSH 目标发起无意义的爆破。
2. 多线程字典攻击(attack)
服务探测通过后,模块输出Starting default credentials attack against SSH service,随后进入核心攻击循环(见 ssh_default.py):
- 用
LockedIterator(self.defaults)包装凭据列表,保证多线程安全迭代; run_threads(self.threads, self.target_function, data)按threads数量启动工作线程(示例输出中的thread-0即来源于此);- 每个工作线程在
target_function中循环取出一条username:password(按首个冒号切分,split(":", 1)),调用ssh_client.login(username, password)尝试认证; - 认证成功且
stop_on_success为 true 时,调用running.clear()通知所有线程停止; - 命中的凭据追加到
self.credentials列表; - 全部线程结束后,若
credentials非空,则打印成功提示并以表格输出(表头为 Target、Port、Service、Username、Password),否则输出Credentials not found。
3. 单次认证的底层实现(login)
每次认证最终落到 SSHCli.login,底层使用paramiko:
- 连接参数包括
timeout=SSH_TIMEOUT(8.0 秒)与banner_timeout=SSH_TIMEOUT; - 显式关闭
look_for_keys与allow_agent,确保只使用字典提供的用户名密码,不做本机密钥或 SSH Agent 干扰; - 捕获
paramiko.AuthenticationException时输出[-] SSH Authentication Failed - Username: '...' Password: '...',对应文档示例中的失败日志; - 认证成功则输出
[+] SSH Authentication Successful - ...并返回 True。
值得注意:verbosity参数贯穿整个调用链——login中的print_error/print_success均受其控制,若将verbosity设为false,攻击过程将静默执行,只输出最终结果表。
与其他 Cisco 凭据模块的横向对比
在creds/routers/cisco目录下,除了本文的 SSH 模块,还并列存在两个同族模块,共用同一套"继承通用引擎 + 覆盖参数"的设计:
- ftp_default_creds.py:针对 FTP 服务,默认端口 21,同样预设
admin:admin、单线程; - telnet_default_creds.py:针对 Telnet 服务,默认端口 23,参数结构完全一致。
三个模块唯一差异在于继承的基类(ssh_default/ftp_default/telnet_default)及默认端口,攻击流程、参数体系与输出格式保持统一。这也解释了为什么 docs 目录下三个文档的 Verification Steps 几乎逐字相同——它们共享同一套使用契约。
单元测试与验证
仓库为每个凭据模块都配套了 pytest 测试,见 test_ssh_default_creds.py:
- 断言模块默认参数:
target == ""、port == 22、threads == 1、defaults == ["admin:admin"]、stop_on_success is True、verbosity is True; - 针对测试桩目标执行
check()断言返回False(测试环境未真实部署 SSH 服务时探测失败属预期行为),check_default()返回None,run()返回None。
这些测试既锁定了模块参数契约,也验证了"无有效凭据时优雅退出、不抛异常"的容错路径,可用于在 CI 中回归验证模块行为。
使用建议与安全提示
- 授权前提:该模块仅用于对已获授权的目标设备进行安全评估。对未授权设备发起凭据爆破可能违反当地法律法规,请务必在隔离的实验环境或明确授权的渗透测试项目中操作。
- 线程数控制:Cisco 设备 SSH 登录通常较慢,且多次失败可能触发账户锁定或日志告警。建议保持默认单线程,或在确认目标抗性后再调大
threads。 - 字典扩展:框架内置的 defaults.txt 收录了 653 条常见默认凭据(含大量 Cisco 惯用组合),可作为
file://字典的起点;也可结合目标型号历史默认口令自建字典,覆盖更广。 - 结果解读:命中后输出的表格即最终审计证据,建议同时记录
Elapsed time与日志级别输出,作为评估报告的凭据发现时间线参考。
总结
creds/routers/cisco/ssh_default_creds是 routersploit 凭据检测模块族中极具代表性的一员:通过继承通用 SSH 攻击引擎并预设 Cisco 专用参数,仅需use → set target → run三步即可完成对 Cisco 路由器 SSH 服务的默认凭据检测。理解其"探测-爆破-汇总"三段式执行链与参数体系后,你可以举一反三,熟练使用框架内所有厂商的 FTP / SSH / Telnet 默认凭据模块,并可根据实际场景灵活定制字典与并发策略。
- 网络安全
- 嵌入式
【免费下载链接】routersploit
Exploitation Framework for Embedded Devices
相关推荐
routersploit Belkin 路由器 SSH 默认口令爆破模块实战指南(ssh_default_creds)
routersploit Belkin 路由器 SSH 默认口令爆破模块实战指南(ssh_default_creds) 导读 本文围绕 routersploit
网络安全嵌入式RouterSploit 实战:Movistar 路由器 SSH 默认口令爆破模块(ssh_default_creds)深度解析
RouterSploit 实战:Movistar 路由器 SSH 默认口令爆破模块(ssh_default_creds)深度解析 导读 本文以 RouterSp
网络安全嵌入式D-Link 路由器 SSH 默认凭据检测:routersploit `ssh_default_creds` 模块实战与源码解析
D Link 路由器 SSH 默认凭据检测:routersploit ssh_default_creds 模块实战与源码解析 本篇技术指南以 routerspl
网络安全嵌入式
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考