十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

routersploit 实战:针对 Mikrotik 路由器 Telnet 服务的默认口令字典攻击模块详解

routersploit 实战:针对 Mikrotik 路由器 Telnet 服务的默认口令字典攻击模块详解 routersploit 实战针对 Mikrotik 路由器 Telnet 服务的默认口令字典攻击模块详解【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit导读本文围绕 routersploit 中的creds/routers/mikrotik/telnet_default_creds模块展开讲解如何使用该框架对 Mikrotik 路由器的 Telnet 服务执行默认口令字典攻击Default Credentials Dictionary Attack从模块加载、参数配置到运行与结果解读并深入源码剖析其底层 Telnet 认证探测与多线程调度原理。读完本文你将掌握在 routersploit 中针对嵌入式设备 Telnet 服务批量验证默认口令的完整方法与可复用的模块扩展思路。模块概述它是做什么的creds/routers/mikrotik/telnet_default_creds是 routersploit 认证凭据creds类模块家族中的一员。根据官方文档 telnet_default_creds.md 的定义Module performs dictionary attack with default credentials against Mikrotik Router Telnet service. If valid credentials are found, they are displayed to the user.即该模块使用一组“默认口令”字典针对 Mikrotik 路由器的 Telnet 服务进行暴力验证一旦发现可用的用户名/口令组合会立即在终端中展示给用户。它面向的是仍保留出厂默认口令、或使用弱口令的 Mikrotik 设备如 RouterOS 管理的路由器属于安全评估/渗透测试中的常见环节。在 telnet_default_creds.py 中模块的元信息将适用设备声明为Mikrotik Router作者为 routersploit 核心维护者 Marcin Bury。该模块类直接继承自通用模块telnet_default见 telnet_default.py因此它复用了通用 Telnet 默认口令攻击的全部逻辑仅通过覆盖目标端口、线程数和默认字典来定制出“Mikrotik 专属”行为。快速上手完整验证步骤按照官方文档 telnet_default_creds.md 中的 Verification Steps在 routersploit 交互式控制台中的完整操作流程如下启动框架./rsf.py加载模块use creds/routers/mikrotik/telnet_default_creds设置目标set target [TargetIP]执行攻击run若发现有效口令框架会将其显示给用户官方文档给出的典型运行场景Scenario如下rsf use creds/routers/mikrotik/telnet_default_creds rsf (Mikrotik Router Default Telnet Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (Mikrotik 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从输出可以清晰看到攻击的完整生命周期先探测目标是否暴露 Telnet 服务再逐条尝试默认口令组合失败的以[-]标记、成功的以[]标记最终以表格形式汇总全部有效凭据。模块参数详解可配置选项与取值范围虽然官方文档只展示了target一个参数但该模块实际暴露了多个可调选项。下面结合 telnet_default_creds.py 与其父类 telnet_default.py 的源码逐一说明参数默认值类型说明target空OptIP目标 IPv4/IPv6 地址或ip:port格式的文件file://前缀。校验逻辑见 option.py 的OptIP非法的 IP 会被拒绝port23OptPort目标 Telnet 端口合法范围为 165535见OptPort实现threads1父类默认 8OptInteger并发线程数。Mikrotik 模块将其覆盖为 1即默认串行执行避免对设备造成过大压力defaultsadmin:admin父类为内置 wordlistOptWordlist用户名:口令 字典支持两种形式逗号分隔的内联字典或file://指向的外部字典文件stop_on_successtrueOptBool命中第一组有效凭据后是否立即停止继承自父类verbositytrueOptBool是否逐条打印认证尝试过程继承自父类关于defaults的两种用法内联形式set defaults admin:admin,user:user,root:root模块会按逗号切分后逐条尝试文件形式set defaults file:///path/to/creds.txt文件中每行一个username:password条目。OptWordlist的读取与校验逻辑在 option.py以file://开头时逐行读取并去除首尾空白否则按逗号切分。说明当前仓库中 Mikrotik 模块的默认字典被精简为admin:admin见 telnet_default_creds.py而父类默认引用wordlists.defaults内置词表。实际使用时强烈建议通过file://挂载自定义字典文件以扩大覆盖面。攻击流程从探测到输出结果的完整调用链第一步服务探测check模块运行时会先调用check()确认目标确实开启了 Telnet 服务见 telnet_default.py。底层由TelnetClient.test_connect()完成见 telnet_client.py建立 TCP 连接并等待Login:/login:/Username:/username:提示符5 秒内能拿到登录提示即判定为“目标暴露 Telnet 服务”否则打印Target does not expose Telnet service并中止攻击。第二步字典迭代与多线程调度探测通过后模块将defaults包装成线程安全的LockedIterator再通过run_threads按threads参数启动多个工作线程见 telnet_default.py。每个工作线程的target_function会循环取出下一组username:password按:切分一次调用telnet_client.login()尝试认证成功则把(target, port, protocol, username, password)追加到self.credentials列表见 telnet_default.py。第三步认证判定逻辑核心认证尝试的核心实现在 telnet_client.py 的login()方法建立 Telnet 连接超时TELNET_TIMEOUT 30.0秒等待登录提示发送用户名 \r\n等待密码提示发送密码 \r\n再等待一段响应检查其中是否出现Incorrect/incorrect字样若未出现错误提示且响应中包含#、$、等 Shell 提示符特征或响应长度超过 500 字节源码注释特别注明这是为了兼容 Mikrotik 这类大 Banner 设备则判定认证成功否则判定失败并打印Telnet Authentication Failed - Username: ... Password: ...。这个“大 Banner 即成功”的特殊分支正是本模块为 Mikrotik 等设备定制的重要细节部分 Mikrotik 设备登录后返回的欢迎 Banner 很长且不带Incorrect字样若按常规逻辑会误判为失败因此源码显式加入了len(res) 500的兜底判定。第四步结果汇总所有线程结束后若self.credentials非空打印Credentials found!并以表格形式输出Target / Port / Service / Username / Password五列见 telnet_default.py否则打印Credentials not found。与同族模块的关系Mikrotik 默认口令全家桶telnet_default_creds并非孤立模块routersploit 为 Mikrotik 提供了一整套默认口令攻击模块见 routersploit/modules/creds/routers/mikrotik 目录telnet_default_creds.py — Telnet 服务端口 23ssh_default_creds.py — SSH 服务端口 22结构与 Telnet 版完全一致仅继承自generic.ssh_defaultftp_default_creds.py — FTP 服务端口 21api_ros_default_creds.py — Mikrotik RouterOS 专有 API 服务依赖 apiros_client.py。这四个模块均采用“继承通用实现 覆盖专属参数”的工厂模式每个设备厂商目录下的模块只需声明target、port、threads、defaults四个关键差异点即可复用全部攻击逻辑。这意味着同一套默认凭据字典可以通过多条服务路径Telnet/SSH/FTP/API验证 Mikrotik 设备评估覆盖面更完整。自动化与测试如何验证模块行为该模块配有对应的自动化测试 test_telnet_default_creds.py使用pytestthreat9_test_bed的 Telnet 模拟服务见 conftest.py 中的generic_targetfixture基于TelnetScenario.AUTHORIZED场景验证def test_check_success(generic_target): exploit Exploit() assert exploit.target assert exploit.port 23 assert exploit.threads 1 assert exploit.defaults [admin:admin] 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该测试同时验证了三点关键行为模块默认参数端口 23、单线程、admin:admin字典、成功后停止、开启详细输出check()能正确识别模拟 Telnet 服务check_default()在模拟环境中能实际命中有效凭据。测试通过AUTHORIZED场景模拟一台接受登录的 Telnet 服务端印证了上述认证判定逻辑等待提示符 → 发送凭据 → 检查响应在真实调用链上的正确性。实战建议与注意事项合法性前提默认口令攻击本质是凭据爆破行为只应在获得明确授权的目标自有设备、靶场、渗透测试合同范围内上使用。控制并发Mikrotik 模块默认threads 1这是有意为之——嵌入式设备资源有限过高并发易触发服务宕机或防火墙封禁如需加速可在set threads N后小幅上调并观察设备响应。扩充字典默认字典仅含admin:admin实际效果有限。建议通过set defaults file:///path/to/wordlist.txt挂载包含厂商出厂口令与常见弱口令的字典文件格式为每行username:password。结合多条服务路径Mikrotik 设备常同时开放 Telnet 与 SSH。若 Telnet 未开启或已禁用可无缝切换到 ssh_default_creds.py 或 ftp_default_creds.py 继续验证同一套凭据。解读 Banner 特判源码中针对大 Banner响应 500 字节的“视为认证成功”判定是 Mikrotik 场景的经验性兜底使用时需结合输出结果人工复核避免 Banner 误导造成误报。总结creds/routers/mikrotik/telnet_default_creds是 routersploit 中“厂商化默认口令攻击”模块的标准范例通过继承通用 telnet_default.py 并覆盖设备专属参数以极少的代码量实现了针对 Mikrotik 路由器 Telnet 服务的完整默认凭据探测。理解它的参数体系、认证判定细节尤其是大 Banner 兜底逻辑与多线程调度方式不仅能直接指导实战操作也能帮助你在需要时为其他设备型号编写同类的定制化 creds 模块。【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表