跳到主要内容

2.3.2 弱口令爆破 – 测试账户密码安全性

2.3.1 节中,我们学习了如何通过端口扫描来发现目标网络中存活的主机与开放的服务。探测到开放服务后,评估其安全性的一个关键步骤,便是检查是否存在弱口令配置漏洞。弱密码检测(通常称为“爆破”或字典攻击)是信息安全评估中最基础也最有效的技术之一,其核心原理在于系统化地尝试使用预定义的凭据列表(用户名字典和密码字典)去登录目标服务,直至发现有效的访问凭证。Yakit 的该模块将此过程工程化、自动化,极大地提升了检测效率。

该模块的主要应用场景是在获得授权的前提下,对内部或外部网络中的服务进行安全审计,以发现和修复弱密码问题。例如,在一次内部网络渗透测试中,攻击者首要目标之一就是寻找一个立足点(Foothold),而一个使用了“admin/admin123”这类常见弱口令的SSH、RDP或数据库服务,往往就成为最易被攻破的突破口。此模块通过内置对多种协议的支持,如 SSH、FTP、Tomcat、VNC、PostgreSQL、MySQL、Redis、MSSQL、RDP 等,实现了对企业常见信息化资产的广泛覆盖。

操作界面与核心参数配置

模块的界面设计兼顾了易用性与灵活性,允许用户通过精细化的参数配置来应对不同的测试环境和策略需求。

图:Yakit弱口令检测配置界面

服务类型选择(Service Type Selection)

操作界面的左侧是“可被爆破类型”列表,这是定义任何爆破任务的起点。该列表收录了企业网络环境中常见的、依赖于身份认证的各类网络服务协议。

  • 全面的协议覆盖:该列表涵盖了从远程管理(如 SSH, RDP, VNC)、数据库服务(如 MySQL, MSSQL, Oracle, Redis)到文件传输(如 FTP, SMB)和邮件服务(如 SMTP, POP3, IMAP)等多种关键应用。这种广泛的覆盖确保了工具在多样化的IT基础架构中具有极高的适用性。

  • 支持多选(Multi-select):此列表一个核心的易用性设计在于支持多项选择。这一功能极大地提升了审计效率。例如,当对一个网段进行初步安全评估时,管理员可以一次性选择 SSH, MySQL, RDP 等多个常见服务,然后对整个目标范围执行一次统一的爆破任务。这避免了为不同服务创建和管理多个独立任务的繁琐操作,实现了“一次配置,多重检测”的高效工作流。

目标配置 (Target Specification)

  • 爆破目标:这是任务定义的核心输入区域。它支持高度灵活的目标格式,用户可以输入单个目标(如 192.168.1.1test.com:3306),也可以输入CIDR格式的IP段(如 192.168.1.0/24)。为了便于批量操作,系统支持通过换行符分割多个目标,并可以直接导入TXT或Excel文件,这对于处理大规模资产列表至关重要。

额外参数 (Advanced Parameters Configuration)

图:Yakit 爆破任务高级参数配置界面

点击“额外参数”按钮,可以展开对爆破任务行为的精细化控制面板。这部分是实现高效、隐蔽测试的关键。

  • 凭据配置 (Credential Configuration)

    • 爆破用户/密码:用户可在此处提供自定义的用户名和密码字典。在实际应用中,应根据目标信息(如企业名称、业务特性)生成针对性的字典,以提高成功率。多个凭据之间使用换行符进行分割。

    • 同时使用默认字典:这两个复选框是极为实用的功能。勾选后,系统会将用户提供的自定义字典与内置的、经过优化的常见弱口令字典进行合并。这确保了基础覆盖率,同时不失针对性,实现了广度与深度的结合。

  • 性能与调度 (Performance and Scheduling)

    • 同时并发数:此参数(图中为50)定义了整个爆破任务同时执行的线程总数。较高的并发数可以显著加快扫描速度,但也会增加网络流量和目标服务器的负载,甚至可能触发IDS/IPS告警。需要根据网络带宽和目标承受能力进行权衡。

    • 目标内并发:此参数(图中为1)控制对单个目标(例如一个IP地址)同时发起的认证尝试次数。将其设置为1是一种保守且安全的策略,可以有效避免因在短时间内发起大量失败登录而导致账户被锁定或IP被封禁。

    • 自动终止:这是一个任务流程控制开关。启用后(“直到第一个爆破结果的终止任务”),一旦任何一个目标的任何一个凭据组合被成功验证,整个任务将立即停止。这在寻求快速突破口的场景下非常高效。若禁用此开关,工具将尝试找出所有目标上存在的所有弱密码组合。

    • 延迟控制 (Delay Control):通过设置 最小延迟最大延迟(图中为1-5,单位通常为秒),可以在每次认证尝试之间引入一个随机的等待时间。这是绕过基于固定频率检测的简单防御机制(如防火墙的速率限制)的有效手段,使攻击行为更接近于真实的人工操作,从而降低被发现的概率。

标准操作流程指引

执行一次完整的弱密码检测任务通常遵循以下步骤:

图:弱密码爆破模块标准操作流程

  1. 选择服务类型:从左侧的“可被爆破类型”列表中,点选本次任务需要检测的目标服务,例如 mysql

  2. 定义目标范围:在“爆破目标”输入框中,填入或导入待检测的资产列表。

  3. 配置认证字典:在“额外参数”中,根据需求填入自定义的用户名和密码,并决定是否启用内置的默认字典。

  4. 调整性能参数:根据测试目标(效率优先还是隐蔽优先)以及对目标环境的预判,精细调整并发数、延迟和自动终止等高级选项。

  5. 启动任务:点击“开始执行”按钮,启动弱密码检测任务。

  6. 分析与验证:在任务执行过程中或结束后,审查工具返回的结果。对于任何报告成功的凭据,都应进行手动验证,以确认其有效性。

使用案例

使用Yakit MITM模块配置一个在 127.0.0.1:18888 的认证代理服务为目标,演示一次完整的弱点审计流程。该流程旨在模拟攻击者尝试使用常见默认凭证(admin/admin)获取代理访问权限的场景,从而验证该服务的安全性。

  1. 审计任务配置

在发起审计之前,精确地定义测试范围与攻击载荷是确保测试效率与准确性的关键。在 Yakit 的爆破模块中,我们进行了如下高度针对性的配置:

  • 设定攻击目标 (输入目标): 目标地址被精确指定为 127.0.0.1:18888。此配置告知 Yakit,所有测试流量应发向本地主机的 18888 端口,这正是我们先前设定的 MITM 代理服务监听的地址与端口。

  • 配置攻击载荷 (Payload): 这是定义“如何攻击”的核心步骤。在此次测试中,我们采用了单一凭证验证的策略,而非广泛的字典攻击。

    • 爆破用户名: 直接在输入框中填入 admin

    • 爆破密码: 同样,直接填入 admin

图:Yakit弱口令检测配置与结果展示

上图直观地展示了整个任务的配置界面。整个操作流程体现了安全审计的精确性原则:首先识别出高风险的检查点(默认口令),然后配置最小化的测试集(admin/admin)进行快速验证。还展示了本次审计任务的最终结果。结果面板提供了直接且明确的反馈,验证了安全风险的存在:

  • 结果摘要 (Summary Card): 摘要卡片是最高层级的结果概览。其中,“成功次数”明确显示为 1,“漏洞风险”被自动评估为高危 (High)。这两个核心指标直接确认,admin/admin 这组凭证成功通过了代理服务器的身份验证。

  • 成功详情 (Success Details): 在下方的结果列表中,Yakit 详细记录了此次成功的交互数据。对于 HTTP 代理认证而言,一次成功的 CONNECT 请求通常会收到 HTTP/1.1 200 Connection established 或类似的成功响应。Yakit 通过捕捉并解析这种成功的响应模式,将其标识为一次成功的爆破尝试。

技术原理:并发调度与协议支持

为了支撑大规模、高效率的弱密码检测任务,Yakit 的爆破模块底层依赖于一个名为 bruteutils 的核心库。该库的设计精髓在于其高并发调度模型统一的协议抽象层,确保了工具在面对不同网络环境和目标服务时,兼具性能与可扩展性。

  • 双层并发调度模型:爆破本质上是 I/O 密集型任务,其效率高度依赖于并发处理能力。bruteutils 采用了一种现代的高级并发模型,通过轻量级的并发任务与安全的任务间通信机制来实现高效调度。它实现了两层并发控制:

    • 全局并发数 (TaskConcurrency):对应界面上的“同时并发数”,控制整个任务中同时运行的认证任务总数(Worker 数量),决定了任务的整体速度。

    • 目标内并发 (TargetTaskConcurrency):对应“目标内并发”,限制对同一个目标(如单个 IP)同时发起的认证尝试次数。这种双层设计,既能通过高全局并发保证对大量目标的高速扫描,又能通过低目标内并发避免因频繁失败尝试而触发单一目标的账户锁定或 IP 封禁策略,实现了效率与隐蔽性的平衡。

  • 统一的服务认证抽象:为了支持对 SSH、MySQL、RDP 等多种异构协议的爆破,bruteutils 实现了一个统一的服务认证接口(如 ServiceAuthInfo 接口定义)。该接口将不同协议的连接、认证及结果判断等逻辑封装起来,为上层调度器提供了一个标准化的调用方式。当需要支持新的服务协议时,只需为其实现对应的认证逻辑,而无需改动核心的并发调度引擎,这体现了框架高度的可扩展性。

  • 异步化结果处理:任务的执行与结果的反馈采用的是异步回调机制(BruteItemCallBack)。当任何一个认证尝试完成(无论成功或失败),调度器会通过回调函数将结果立即抛出,交由上层(如UI界面)进行处理和展示。这种非阻塞的设计确保了核心引擎始终能以最高效率执行任务,不会因为结果处理或界面渲染而产生性能瓶颈。

Yakit 的弱口令爆破功能并非简单的循环尝试,而是基于一个精心设计的后端工程。通过并发调度模型、协议抽象和异步处理三大技术支柱,它实现了高效、稳定且易于扩展的弱点审计能力。