ARTICLE DETAIL

资讯详情

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

routersploit 实战:IPFire 路由器 SSH 默认凭据审计模块(ssh_default_creds)使用指南

routersploit 实战:IPFire 路由器 SSH 默认凭据审计模块(ssh_default_creds)使用指南 网络安全嵌入式【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址https://gitcode.com/gh_mirrors/ro/routersploit点击查看免费下载本篇技术指南聚焦于 routersploit 框架中的creds/routers/ipfire/ssh_default_creds模块讲解如何针对 IPFire 路由器上开启的 SSH 服务执行默认凭据字典攻击。读完本文你将掌握该模块的完整交互式操作流程、每个可配置选项的含义与默认值、底层基于 Paramiko 的 SSH 认证实现原理以及如何通过源码与测试用例验证模块行为从而在授权测试场景下高效完成嵌入式设备弱口令审计。模块功能概述ssh_default_creds是 routersploit 中专门面向 IPFire 路由器的凭据审计模块。根据官方文档描述Module performs dictionary attack with default credentials against IPFire Router SSH service. If valid credentials are found, they are displayed to the user.即该模块针对 IPFire 路由器的 SSH 服务执行默认凭据字典攻击一旦发现有效的用户名/密码组合就会在控制台以表格形式展示给使用者。模块的元信息定义于 ssh_default_creds.py 的__info__字典如下模块名称IPFire Router Default SSH Creds描述针对 IPFire Router SSH 服务执行字典攻击若发现有效凭据则展示给用户作者Marcin Bury适用设备IPFire Router值得注意的是该模块本身非常精简——它的核心逻辑全部继承自通用的 ssh_default.pySSH Default Creds模块IPFire 专属模块只负责覆写设备信息与默认凭据清单。这是 routersploit 凭据模块常见的厂商定制 通用引擎设计模式。模块源码结构继承链与专属参数打开 ssh_default_creds.py 可以看到整个模块只有寥寥数十行from routersploit.core.exploit import * from routersploit.modules.creds.generic.ssh_default import Exploit as SSHDefault class Exploit(SSHDefault): __info__ { name: IPFire Router Default SSH Creds, description: Module performs dictionary attack against IPFire Router SSH service. If valid credentials are found, they are displayed to the user., authors: ( Marcin Bury marcin[at]threat9.com, # routersploit module ), devices: ( IPFire 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,root:admin,admin:, User:Pass or file with default credentials (file://))关键点在于继承关系Exploit(SSHDefault)即 IPFire 模块直接复用通用 SSH 默认凭据模块的run()、attack()、check()、target_function()、check_default()等全部逻辑专属覆盖将threads默认线程数从通用模块的 8 降为 1对单目标审计更克制并将defaults收窄为针对 IPFire 路由器的三组内置凭据target_protocol由父类SSHClient定义为Protocol.SSH这意味着后续结果表格中的 Service 列将显示为ssh。模块内置默认凭据清单defaults参数使用OptWordlist类型其内置默认值为用户名密码adminadminrootadminadmin空密码在代码中表示为字符串admin:admin,root:admin,admin:。解析时每个条目按:分割一次得到(username, password)二元组因此admin:表示用户名 admin、空密码的组合。从源码的OptWordlist实现option.py可以看出该参数有两种取值形式逗号分隔的内联清单如admin:admin,root:admin,admin:直接以字符串形式写在set命令中外部字典文件以file://前缀指向本地文件例如set defaults file:///path/to/ipfire_creds.txt。文件按行读取每行一条用户名:密码记录自动去除行首尾空白。这一机制使你可以随时扩充 IPFire 相关的已知默认凭据而不需要修改任何源码。实战操作步骤Verification Steps根据官方文档模块的标准使用流程如下启动框架./rsf.py加载模块use creds/routers/ipfire/ssh_default_creds设置目标set target [TargetIP]执行攻击run若发现有效凭据会在终端中展示给用户启动命令./rsf.py对应仓库根目录的 rsf.py 入口脚本它会拉起 routersploit 的交互式解释器interpreter.py并自动完成所有模块的注册与加载。完整运行场景示例以下是文档中给出的真实运行场景IPFire 路由器的目标地址为 192.168.1.1SSH 端口默认 22rsf use creds/routers/ipfire/ssh_default_creds rsf (IPFire Router Default SSH Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (IPFire 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对该输出做逐段解读[*] Target exposes SSH service来自check()方法说明目标 22 端口确实运行 SSH 服务攻击才会继续[*] Starting default credentials attack against SSH service攻击正式开始[*] thread-0 thread is starting.../[*] thread-0 thread is terminated.框架线程池对单线程任务的生命周期提示[-] SSH Authentication Failed ...单条凭据认证失败的提示受verbosity控制[] SSH Authentication Successful - Username: admin Password: admin命中有效凭据结尾的表格print_table(headers, *self.credentials)的产物列出Target / Port / Service / Username / Password五列若全部凭据均失败则会输出[-] Credentials not found。核心参数详解模块从父类继承并暴露了以下可配置选项均可在交互式解释器中通过set修改参数类型默认值说明targetOptIP空目标 IPv4 / IPv6 地址或形如file://的 ip:port 列表文件portOptPort22目标 SSH 端口合法范围 165535threadsOptInteger1IPFire 专属覆写并发线程数defaultsOptWordlistadmin:admin,root:admin,admin:用户名:密码清单或file://字典文件stop_on_successOptBooltrue命中第一组有效凭据后立即停止其余尝试verbosityOptBooltrue是否逐条打印认证成功/失败信息其中OptIP在赋值时会校验目标是否为合法 IPv4/IPv6不合法直接抛出OptionValidationErrorOptPort会强制转为整数并检查端口范围。这些约束定义于 option.py保证了运行时参数的有效性。target还支持file://前缀指向包含多个ip:port条目的文件配合multi装饰器可实现对多个 IPFire 设备批量执行相同攻击。底层工作原理从 check 到登录模块的完整执行链路可拆解为以下几步逻辑实现在 ssh_default.py1. 服务探测check()def check(self): ssh_client self.ssh_create() if ssh_client.test_connect(): print_status(Target exposes SSH service, verboseself.verbosity) return True print_status(Target does not expose SSH, verboseself.verbosity) return Falsessh_create()由父类 SSHClient 提供负责用paramiko.SSHClient构造连接器。test_connect()的实现细节是使用用户名root、随机生成的 12 位密码发起一次连接若服务端返回paramiko.AuthenticationException说明 SSH 服务存活认证失败恰恰证明端口开放、协议可用从而返回True。SSH_TIMEOUT常量为 8 秒所有连接的timeout与banner_timeout均取自该值。2. 多线程字典攻击attack()multi def attack(self): if not self.check(): return print_status(Starting default credentials attack against SSH service) data LockedIterator(self.defaults) self.run_threads(self.threads, self.target_function, data) ...LockedIterator为线程安全的迭代器run_threads按threads数量派发工作线程每个线程从迭代器中取一条用户名:密码记录执行认证。3. 单条凭据认证target_function()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))login()最终落到 ssh_client.py 的SSHCli.login()调用paramiko的connect()进行密码认证look_for_keysFalse、allow_agentFalse确保只使用给定的用户名/密码捕获到paramiko.AuthenticationException时打印失败信息并继续下一条成功则打印成功信息并返回True。4. 结果汇总所有工作线程结束后若self.credentials非空则print_success(Credentials found!)并输出结果表格否则输出Credentials not found。5. 静默校验check_default()该方法带有mute装饰器执行与run()相同的攻击流程但不输出任何终端信息仅以返回值命中列表或None供上层自动化逻辑如 autopwn.py调用。测试用例如何验证模块行为仓库为 IPFire SSH 模块提供了对应的单元测试 test_ssh_default_creds.py测试内容可作为模块默认值的权威依据assert exploit.target assert exploit.port 22 assert exploit.threads 1 assert exploit.defaults [admin:admin, root:admin, admin:] assert exploit.stop_on_success is True assert exploit.verbosity is True测试同时验证了对无 SSH 服务的目标执行check()返回False、check_default()返回None、run()正常结束不抛异常确保模块在目标不可达或未开放 SSH 时不会产生副作用。该测试使用generic_targetfixture定义于 conftest.py指向本地模拟的 SSH 服务端。关联模块与扩展方向IPFire 目录下还包含同一套模式的 FTP 与 Telnet 凭据模块见 routersploit/modules/creds/routers/ipfire/ftp_default_creds与telnet_default_creds。三者的使用流程完全一致只需替换use的模块路径。如果你需要的是对任意设备的 SSH 服务做更全面的口令枚举而非仅默认凭据可改用通用模块 ssh_bruteforce.py它通过usernames与passwords两个词表的笛卡尔积进行爆破并同样支持stop_on_success与verbosity选项。使用注意事项授权前提本模块属于安全审计工具仅应在获得明确授权的环境中使用未经授权对第三方设备进行口令尝试可能违反法律法规。默认值局限模块内置的默认凭据仅为admin:admin、root:admin、admin:三组实际设备可能使用其他出厂口令建议通过file://字典文件补充厂商文档中的完整默认凭据列表。端口与版本若目标 SSH 端口非 22务必先set port 端口再run模块依赖 Paramiko 库运行前请确认requirements.txt中的依赖已安装完毕。线程数控制IPFire 模块默认单线程执行对单目标足够且更不易触发服务端防爆破机制如需加速可在确认目标可承受后适当调大threads。赞分享网络安全嵌入式【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址https://gitcode.com/gh_mirrors/ro/routersploit点击查看免费下载相关推荐routersploit 实战使用 Billion 路由器 SSH 默认凭据爆破模块ssh_default_credsroutersploit 实战使用 Billion 路由器 SSH 默认凭据爆破模块ssh_default_creds 本篇技术指南围绕 routersp网络安全嵌入式routersploit 实战指南使用 ssh_default_creds 模块检测 PFSense 路由器 SSH 默认凭据routersploit 实战指南使用 ssh_default_creds 模块检测 PFSense 路由器 SSH 默认凭据 导读 本文围绕 routers网络安全嵌入式routersploit 中 Netsys 路由器 SSH 默认凭据检测模块实战指南ssh_default_credsroutersploit 中 Netsys 路由器 SSH 默认凭据检测模块实战指南ssh_default_creds 导读 本文围绕 routersplo网络安全嵌入式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表