ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

RouterSploit 实战:使用 ssh_default_creds 模块对 ZTE 路由器执行默认 SSH 凭据字典攻击

RouterSploit 实战:使用 ssh_default_creds 模块对 ZTE 路由器执行默认 SSH 凭据字典攻击 RouterSploit 实战使用 ssh_default_creds 模块对 ZTE 路由器执行默认 SSH 凭据字典攻击【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit导读本文围绕 RouterSploit 中的creds/routers/zte/ssh_default_creds模块展开讲解如何对 ZTE 路由器上暴露的 SSH 服务执行默认凭据字典攻击并在命中后自动展示有效账号密码。读完本文你将掌握该模块的加载方式、参数配置、完整攻击流程以及其底层基于 paramiko 的 SSH 认证与多线程字典攻击的实现原理可直接在 RouterSploit 交互终端中复现整个操作。模块功能概述creds/routers/zte/ssh_default_creds是 RouterSploit 中针对ZTE Router中兴路由器的默认凭据审计模块。其核心职责是对目标 ZTE 路由器的 SSH 服务执行基于默认凭据的字典攻击dictionary attack一旦发现有效的用户名与密码组合立即将其展示给用户支持多线程并发加快爆破速度。模块在源码中注册的设备类型为ZTE Router其实现继承自通用 SSH 默认凭据模块 ssh_default.py并通过 ssh_default_creds.py 注入 ZTE 专属的默认凭据列表。快速上手验证步骤Verification Steps原文档给出了完整的操作路径在 RouterSploit 交互终端中依次执行即可启动 RouterSploit./rsf.py加载 ZTE SSH 默认凭据模块use creds/routers/zte/ssh_default_creds设置目标 IPset target [TargetIP]执行攻击run若找到有效凭据模块会将结果显示在终端中。其中./rsf.py为仓库根目录下的主入口脚本负责启动 Python 3 环境并拉起交互解释器详见 rsf.py。需要注意的是RouterSploit 仅支持 Python 3若在 Python 2 环境中启动会直接提示并退出。实战场景演示下面是对目标192.168.1.1执行模块的完整输出可直接作为操作参照rsf use creds/routers/zte/ssh_default_creds rsf (ZTE Router Default SSH Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (ZTE 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 Failed命中记录为SSH Authentication Successful最终以表格形式汇总输出Target / Port / Service / Username / Password五列结果并统计总耗时。模块源码与核心参数解析ZTE 专属模块的源码非常精简ssh_default_creds.py它通过继承通用 SSH 默认凭据模块仅重定义元信息与四个关键参数参数默认值类型说明targetOptIP目标 IPv4 / IPv6 地址也支持file://指向的ip:port列表文件port22OptPort目标 SSH 端口默认 22threads1OptInteger并发线程数ZTE 模块默认 1通用模块默认 8defaultsadmin:admin,ZXDSL:ZXDSL,user:user,on:on,root:Zte521,root:W!n0oO7.OptWordlist以逗号分隔的用户:密码组合或file://指向的字典文件其中内置的 6 组 ZTE 默认凭据为admin:admin、ZXDSL:ZXDSL、user:user、on:on、root:Zte521、root:W!n0oO7.。这一点也由测试用例 test_ssh_default_creds.py 直接断言验证assert exploit.defaults [...]。参数类型的底层约束各参数的校验逻辑定义在 option.py 中OptIP会校验地址必须是合法的 IPv4 或 IPv6否则抛出OptionValidationErrorOptPort将值转为整数并要求落在0 value 65535区间OptWordlist支持两种取值方式直接传入user:pass,user2:pass2字符串按逗号切分或传入file:///path/to/wordlist指向的本地字典文件按行读取并 strip 空白文件不存在时同样会校验报错。这意味着你可以通过set defaults file:///home/user/zte_creds.txt的方式将自定义字典喂给该模块实现更大规模的默认凭据审计。底层攻击流程与实现原理该模块的实际攻击逻辑由父类 ssh_default.py 提供主要包含三个环节1. 服务探测checkcheck()方法调用ssh_client.test_connect()向目标 SSH 端口发起一次携带随机密码random_text(12)的连接尝试见 ssh_client.py 中的test_connect。若返回paramiko.AuthenticationException说明端口上确实存在 SSH 服务认证失败恰恰证明服务在响应此时输出Target exposes SSH service并返回True若连接超时或出现其他异常则判定目标未暴露 SSH直接终止攻击。2. 字典迭代与多线程并发攻击入口attack()使用LockedIterator包装凭据列表保证多个线程从同一数据源取凭据时不会重复或冲突随后通过run_threads()启动指定数量的线程并发执行target_function线程调度实现在 exploit.py 的run_threads与LockedIterator中。每个线程不断从迭代器中取出user:pass组合切分后交给 SSH 客户端尝试登录。3. SSH 认证与结果汇总认证核心在 ssh_client.py 的login()方法中基于 paramiko 的SSHClient.connect()完成认证设置timeout与banner_timeout均为 8 秒并显式关闭look_for_keys与allow_agent避免本机密钥干扰纯密码爆破。认证失败打印SSH Authentication Failed成功则打印SSH Authentication Successful并将结果追加到self.credentials。攻击结束后attack()会检查self.credentials非空输出Credentials found!并以Target / Port / Service / Username / Password表格打印全部命中结果为空输出Credentials not found。父类中还提供了两个可调参数stop_on_success命中后是否立即停止其余线程默认True与verbosity是否显示每次认证尝试默认True均可通过set命令调整。多目标批量审计attack()方法带有multi装饰器见 exploit.py。当target被设置为file://开头的文件路径时模块会自动读取文件中每行ip:port的目标并逐个执行攻击适合对网段内多台 ZTE 设备做批量默认凭据巡检。自动化接口与测试验证除了交互式使用该模块还面向自动化场景暴露了check_default()接口它被mute装饰器静默化不向 stdout 输出任何内容仅返回命中的凭据列表或None便于被上层脚本如自动扫描工具复用。对应的单元测试 test_ssh_default_creds.py 验证了模块默认参数target 、port 22、threads 1、defaults与内置 6 组凭据一致stop_on_success is True、verbosity is True针对未运行 SSH 服务的测试目标check()返回False、check_default()返回None、run()正常返回且不报错。这为在 CI 环境或自动化脚本中安全地回归测试该模块提供了参考范例。使用注意事项该模块属于凭据审计类模块请仅在已获授权的目标上使用遵守当地法律法规与测试授权边界默认凭据列表仅覆盖常见 ZTE 设备出厂配置若目标已修改口令可结合set defaults file://...扩展自定义字典ZTE 模块默认threads 1如需加速可set threads 8提升并发但过高的并发可能触发目标设备的安全防护或影响稳定性若目标 SSH 端口非默认 22务必通过set port同步修改否则check()阶段会直接判定目标未暴露 SSH 而中止攻击。延伸阅读同系列 ZTE 模块creds/routers/zte/telnet_default_creds、creds/routers/zte/ftp_default_creds可覆盖其余管理协议通用模块源码ssh_default.pySSH 客户端实现ssh_client.py参数类型与校验option.py线程调度与多目标装饰器exploit.py。【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表