RouterSploit Technicolor 路由器 Telnet 默认口令检测模块实战解析【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit本文以 RouterSploit 仓库中 Technicolor 路由器 Telnet 默认口令模块文档 为核心讲解如何通过creds/routers/technicolor/telnet_default_creds模块对 Technicolor 路由器的 Telnet 服务执行默认凭据字典攻击从模块加载、参数配置到运行验证的完整流程并结合仓库源码剖析其底层登录探测、多线程调度与结果输出机制。读完本文你将能独立使用该模块完成一次针对 Telnet 服务的默认口令审计并掌握自定义凭据字典与结果解读的实战技巧。一、模块概述该模块的功能定位在源码的__info__元数据中有明确描述见 telnet_default_creds.py模块名称Technicolor Router Default Telnet Creds功能针对 Technicolor 路由器 Telnet 服务执行默认凭据字典攻击若发现有效凭据则展示给用户作者Marcin Burymarcin[at]threat9.com适用设备Technicolor Router。从代码结构看该模块并不是从零实现的而是通过继承通用 Telnet 默认凭据模块 telnet_default.py 派生而来from routersploit.core.exploit import * from routersploit.modules.creds.generic.telnet_default import Exploit as TelnetDefault class Exploit(TelnetDefault): __info__ { name: Technicolor Router Default Telnet Creds, description: Module performs dictionary attack against Technicolor Router Telnet service. If valid credentials are found, they are displayed to the user., authors: ( Marcin Bury marcin[at]threat9.com, # routersploit module ), devices: ( Technicolor Router, ), } target OptIP(, Target IPv4, IPv6 address or file with ip:port (file://)) port OptPort(23, Target Telnet port) threads OptInteger(1, Number of threads) defaults OptWordlist(admin:admin,admin:password,admin:1234,Administrator:, User:Pass or file with default credentials (file://))这意味着攻击引擎服务探测、登录尝试、线程调度、结果收集全部复用通用模块的能力Technicolor 专用模块只需声明自己的默认字典与默认端口即可。仓库中同目录下还有 ftp_default_creds.py 与 ssh_default_creds.py三者采用完全一致的派生模式分别覆盖 FTP、SSH 与 Telnet 三种协议。二、快速上手验证步骤按文档给出的标准流程在 RouterSploit 交互式环境中加载并运行该模块入口脚本为仓库根目录的 rsf.py启动框架./rsf.py加载模块use creds/routers/technicolor/telnet_default_creds设置目标set target [TargetIP]运行run若发现有效凭据模块会将其显示给用户。三、运行场景演示以下是文档中提供的完整运行输出展示了从加载模块到命中凭据的整个交互过程rsf use creds/routers/technicolor/telnet_default_creds rsf (Technicolor Router Default Telnet Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (Technicolor 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—— 模块先验证目标 23 端口是否开放 Telnet 服务并发爆破thread-0 thread is starting...—— 工作线程开始逐个尝试凭据逐条反馈每条失败的尝试输出Telnet Authentication Failed成功则输出Telnet Authentication Successful结果汇总结束时打印Credentials found!并以表格形式列出命中凭据Target / Port / Service / Username / Password。注意输出表格中Service列显示为telnet该值来自TelnetClient基类中声明的target_protocol Protocol.TELNET见 telnet_client.py。四、模块参数详解该模块对外暴露的可配置参数定义在本模块及父类 telnet_default.py 中具体如下参数类型默认值说明targetOptIP空目标 IPv4/IPv6 地址或包含ip:port的文件file://前缀支持多目标批量攻击portOptPort23目标 Telnet 端口threadsOptInteger1并发线程数本模块默认 1通用模块默认 8defaultsOptWordlistadmin:admin,admin:password,admin:1234,Administrator:以用户名:密码逗号分隔的凭据列表或用file://指向字典文件stop_on_successOptBooltrue命中第一组有效凭据后是否停止攻击继承自父类verbosityOptBooltrue是否显示每次认证尝试的详细输出继承自父类4.1 target目标地址OptIP类型在 option.py 中实现设置值时会校验 IPv4/IPv6 合法性非法地址会抛出OptionValidationError。同时支持file://前缀指向包含多个ip:port目标的文件便于批量审计。4.2 portTelnet 端口OptPort类型option.py将值强转为整数并要求满足0 value 65535。Technicolor 路由器 Telnet 服务默认监听 23 端口如目标使用非标端口可用set port 端口覆盖。4.3 defaults默认凭据字典这是本模块的核心参数。Technicolor 专用模块将字典收敛为 4 组默认凭据admin:adminadmin:passwordadmin:1234Administrator:用户名为Administrator密码为空而通用 Telnet 模块默认使用仓库内置的wordlists.defaults大字典。OptWordlist类型option.py在读取时按逗号切分若值以file://开头则读取本地字典文件每行一组用户名:密码。这一设计让用户既能直接使用内置精简字典也能挂载自己维护的大字典set defaults file:///path/to/technicolor-telnet.txt字典文件每行格式示例admin:admin user:user root:12345五、源码级原理攻击是如何执行的模块执行的核心逻辑全部继承自通用模块 telnet_default.py其工作流可划分为三个阶段。5.1 阶段一服务连通性检查run()方法调用attack()后者首先执行check()telnet_default.pydef check(self): telnet_client self.telnet_create() if telnet_client.test_connect(): print_status(Target exposes Telnet service, verboseself.verbosity) return True print_status(Target does not expose Telnet service, verboseself.verbosity) return Falsetest_connect()位于 telnet_client.py它通过telnetlib.Telnet建立连接并expect登录提示符Login:/login:/Username:/username:5 秒内匹配成功即认为目标暴露 Telnet 服务随后关闭连接。若探测失败attack()直接返回不会发起任何爆破请求。5.2 阶段二多线程字典攻击check()通过后模块使用LockedIterator包装凭据字典并通过run_threads启动指定数量的工作线程data LockedIterator(self.defaults) self.run_threads(self.threads, self.target_function, data)每个线程在target_function()telnet_default.py中循环取出用户名:密码按第一个冒号切分后调用 Telnet 客户端进行登录尝试username, password data.next().split(:, 1) telnet_client self.telnet_create() if telnet_client.login(username, password, retries3): if self.stop_on_success: running.clear() self.credentials.append((self.target, self.port, self.target_protocol, username, password)) telnet_client.close()命中凭据时若stop_on_success为 true则清除运行标志让其他线程尽快退出命中记录追加到self.credentials列表供最终汇总展示。线程通过LockedIterator保证每条凭据只被消费一次避免并发冲突。5.3 阶段三Telnet 登录协议交互每次登录尝试最终落到 telnet_client.py 的login()方法其认证判断逻辑非常关键建立 TCP 连接超时TELNET_TIMEOUT 30.0秒等待登录提示符写入用户名等待密码提示符写入密码并补一个回车等待响应若出现Incorrect/incorrect字符串则判定失败若未出现错误提示且响应中包含 shell 提示符#、$、或响应长度超过 500 字节用于兼容 Mikrotik 等设备的大横幅则判定认证成功。这一判定逻辑说明该模块对认证成功的识别不依赖设备返回统一的成功标志而是通过无错误提示 存在 shell 提示符/大横幅的组合来推断因此对多种 Telnet 实现具有较好的兼容性。每个凭据默认重试 3 次retries3以应对网络抖动造成的偶发失败。5.4 结果输出攻击结束后若self.credentials非空模块输出Credentials found!并按(Target, Port, Service, Username, Password)表头打印结果表格telnet_default.py若全部失败则输出Credentials not found。此外父类还提供了被mute修饰的check_default()方法telnet_default.py它以静默方式执行一次完整攻击并返回命中的凭据列表供其他模块以编程方式调用验证结果而不产生交互式输出。六、自动化测试验证仓库在 test_telnet_default_creds.py 中为该模块提供了完整的自动化测试可作为理解模块行为的权威参考def test_check_success(generic_target): Test scenario - testing against Telnet server exploit Exploit() assert exploit.target assert exploit.port 23 assert exploit.threads 1 assert exploit.defaults [admin:admin, admin:password, admin:1234, Administrator:] assert exploit.stop_on_success is True assert exploit.verbosity is True exploit.target generic_target.host exploit.port generic_target.port assert exploit.check() is True assert exploit.check_default() is not None assert exploit.run() is None测试断言了该模块相对通用模块的几个关键差异点默认字典被精简为 4 组 Technicolor 常用凭据、默认线程数为 1同时验证了check()服务探测、check_default()静默爆破与run()主入口在真实 Telnet 服务generic_targetfixture上均能正常工作。generic_target定义于 conftest.py在测试环境中模拟 Telnet 服务端。七、实战建议与注意事项合理设置线程数本模块默认threads 1适合对单台设备做温和的探测若目标网络状况良好且希望加快速度可适当调大但需注意过高的并发可能触发设备侧连接限制或 IDS 告警。优先使用精简字典Technicolor 专用模块的 4 组默认凭据针对该品牌设备常见弱口令优化攻击速度快、噪音小若未命中再考虑替换为通用大字典如set defaults file://wordlist挂载外部字典做补充枚举。区分服务探测与登录尝试模块先通过check()确认 Telnet 服务存在才发起爆破因此在结果中看到Target does not expose Telnet service时应优先排查目标端口是否开放、是否有防火墙过滤而非凭据问题。结果可信度认证成功判定依赖响应特征shell 提示符 / 大横幅 / 无 Incorrect 字样个别 Telnet 实现可能返回非常规横幅导致误报建议对命中凭据使用 Telnet 客户端人工复核后再用于后续渗透操作。合法使用边界该模块属于安全审计工具仅应在获得授权的前提下对自有或测试环境中的设备使用对 Technicolor 路由器执行默认凭据检测本质上是验证设备是否仍处于出厂弱口令状态可用于企业内网安全基线核查。八、小结creds/routers/technicolor/telnet_default_creds是 RouterSploit 中厂商专用默认凭据检测模块的标准范例通过继承通用 Telnet 爆破引擎、覆盖精简字典与端口默认值将复杂的多线程认证尝试收敛为一条命令。掌握该模块的用法即可触类旁通地使用仓库中同构的其他厂商模块如 ftp_default_creds.py、ssh_default_creds.py并借助通用模块的stop_on_success、verbosity、check_default()等机制构建可脚本化、可批量化的设备弱口令审计能力。【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
