空想网安の乌托邦
首页小说读书项目归档照片墙音乐说说杂谈关于
封面

HTB Academy:登录暴力破解

写作时间:2026-09-20 23:05:22
# 网安
# HTB Academy

模块:Login Brute Forcing(13 小节)
核心工具:Hydra、Medusa、CUPP
说明:本文按照实际测试流程重新归纳课程内容,并非原网页逐句翻译。任何凭据尝试只能在获得明确授权、了解锁定策略并限定速率的环境中进行。

​

‍

Login Brute Forcing 模块封面

​

0. 学习路线

了解密码空间与防御措施
  → 确认账户锁定、验证码和速率限制
  → 收集用户名及密码策略
  → 选择暴力、字典、混合或喷洒策略
  → 使用 Hydra/Medusa 测试协议或 Web 表单
  → 根据目标信息用 CUPP 制作自定义词表
  → 低速执行、识别成功特征并手工验证
  → 记录影响与防护建议

前置知识

  • Linux 命令行。
  • HTTP 请求和 Web 表单字段。
  • SSH、FTP 等常见网络服务。
  • 用户名、密码策略、账户锁定和 MFA 的基本概念。

1. Introduction

暴力破解通过系统化地尝试候选密码、凭据或密钥来寻找正确组合。成功率受密码复杂度、计算能力、网络速度及防御措施共同影响。

​

‍

暴力破解基本流程

​

1.1 基本过程

  1. 生成候选组合。
  2. 把候选值提交给认证系统。
  3. 根据响应判断是否成功。
  4. 失败则继续,成功后停止并验证访问范围。

1.2 常见攻击类型

类型 核心思路 适用情境 Simple Brute Force 穷举字符集与长度组合 密码空间较小且没有先验信息 Dictionary Attack 尝试常用密码或目标相关词表 用户可能使用常见词或弱密码 Hybrid Attack 对字典词追加、前置或替换字符 密码是常见词的轻微变体 Credential Stuffing 使用泄露的用户名/密码组合 怀疑存在跨站密码复用 Password Spraying 少量密码对大量账户 需要降低单账户连续失败次数 Rainbow Table 查询预计算哈希表 已取得无盐或适用的密码哈希 Reverse Brute Force 一个已知密码尝试多个账户 怀疑组织内复用同一密码 Distributed Brute Force 多节点分担候选空间 密码空间大且测试已获特别授权

在线登录暴力破解受网络、锁定和告警限制,与离线哈希破解不是同一种测试场景。


2. Password Security Fundamentals

2.1 密码空间

若字符集大小为 ​C​,长度为 ​L​,理论组合数为:

C^L

密码每增加一位,搜索空间会按字符集倍数增长。因此长度通常比简单地增加一种字符更显著。

2.2 弱密码来源

  • 常见单词和键盘序列。
  • 用户名、姓名、生日、宠物和公司名称。
  • 季节、年份、地点与业务术语。
  • 默认密码。
  • 满足复杂度但模式固定,如 ​Summer2026!​。
  • 多个平台重复使用相同凭据。

2.3 防御措施

  • 最小长度和密码历史。
  • 账户锁定及失败计数窗口。
  • 速率限制、指数退避和 IP 限制。
  • CAPTCHA。
  • MFA。
  • 泄露密码检查。
  • 登录告警、异常地理位置和设备检测。

测试前必须掌握锁定阈值、锁定时长和重置窗口;否则可能造成大批业务账户不可用。


3. Brute Force Attacks

简单暴力破解适合短 PIN、有限字符集或已知格式,而不适合直接穷举长而复杂的在线密码。

3.1 使用 crunch 生成候选词

首次检查:

crunch --help

生成 4 位数字 PIN:

crunch 4 4 0123456789 -o pin.txt

生成固定模式:

crunch 8 8 -t 'pass%%%%' -o passwords.txt

常见占位符:

@  小写字母
,  大写字母
%  数字
^  特殊字符

3.2 先估算规模

wc -l pin.txt
du -h pin.txt

生成前应计算候选数量和预计请求时间,避免制作巨大文件或对在线服务进行不可控测试。


4. Dictionary Attacks

字典攻击使用现成密码表,通常比完整穷举更适合在线认证测试。

4.1 常见字典

ls /usr/share/wordlists/
ls /opt/useful/seclists/Passwords/

RockYou 常见路径:

/usr/share/wordlists/rockyou.txt

若文件被 gzip 压缩,应先查看环境实际文件:

ls -l /usr/share/wordlists/rockyou*

4.2 字典预处理

sort -u passwords.txt -o passwords-unique.txt
grep -E '^.{8,12}$' passwords.txt > passwords-8-12.txt

若已知策略,可继续过滤字符模式,减少无效网络请求。

4.3 默认凭据

默认账户是字典测试前的高优先级检查项。需要结合产品、版本和部署文档,不能把不相关设备的默认凭据全部无差别尝试。


5. Hybrid Attacks

混合攻击以高相关性的基础词为中心,再模拟用户常见变体。

5.1 常见变形

  • 首字母大写。
  • 追加年份、月份或季节。
  • 末尾添加 ​!​、​@​、​#​。
  • 字母数字替换,如 ​a → 4​、​e → 3​、​o → 0​。
  • 公司名 + 部门/年份。

5.2 Hashcat 规则生成候选

即使目标是在线认证,也可以用 Hashcat 的 ​--stdout​ 离线生成小型变体词表:

hashcat wordlist.txt -r custom.rule --stdout > mutated.txt
sort -u mutated.txt -o mutated.txt

规则示意:

c
$2 $0 $2 $6
$!

先检查输出:

head mutated.txt
wc -l mutated.txt

混合规则应基于已知密码策略与目标信息,不能无节制扩展候选。


6. Hydra

Hydra 支持多种远程协议及 HTTP 表单,是本章的主要自动化工具。

6.1 首次使用

hydra -h
hydra -U ssh
hydra -U http-post-form

基础语法:

hydra [登录选项] [密码选项] [并发/输出选项] <TARGET> <MODULE>

6.2 用户和密码输入

-l <USER>       单个用户名
-L users.txt    用户名列表
-p <PASSWORD>   单个密码
-P pass.txt     密码列表
-C pairs.txt    username:password 组合列表

6.3 常用控制参数

-t <N>          并发任务数
-f              找到一组有效凭据后停止
-F              多目标模式下找到有效凭据后停止
-V              显示每次尝试
-vV             更详细输出
-o result.txt   保存结果
-s <PORT>       指定非默认端口
-S              使用 SSL/TLS

6.4 示例

hydra -l admin -P passwords.txt <TARGET> ssh
hydra -L users.txt -p 'Welcome1!' <TARGET> ftp
hydra -C credentials.txt <TARGET> ssh

6.5 风险控制

  • 不要直接使用很高 ​-t​。
  • 确认是否有锁定策略和 IDS/WAF。
  • 小字典先验证模块语法和成功标志。
  • 找到有效凭据后停止并手工登录验证。

7. Basic HTTP Authentication

HTTP Basic Authentication 使用 ​Authorization: Basic​ Header 发送 Base64 编码的用户名和密码。Base64 只是编码,必须由 HTTPS 保护传输。

7.1 手工观察

curl -I http://<TARGET>/protected/
curl -u '<USER>:<PASSWORD>' http://<TARGET>/protected/

生成 Basic 值:

printf '%s' 'user:password' | base64

7.2 Hydra

hydra -l <USER> -P passwords.txt <TARGET> http-get /protected/

非默认端口:

hydra -l <USER> -P passwords.txt -s <PORT> <TARGET> http-get /protected/

HTTPS:

hydra -S -l <USER> -P passwords.txt <TARGET> https-get /protected/

成功判断通常基于服务不再返回 ​401 Unauthorized​。仍应使用 curl 或浏览器验证获得的凭据与实际权限。


8. Login Forms

网页登录表单没有统一协议模块,需要准确描述请求路径、参数结构和失败/成功特征。

8.1 先捕获真实请求

可使用浏览器开发者工具或 Burp/ZAP 获取:

POST /login HTTP/1.1
Content-Type: application/x-www-form-urlencoded

username=admin&password=test

记录:

  • 请求方法和路径。
  • 用户名、密码字段名。
  • 固定参数。
  • Cookie、CSRF Token。
  • 登录失败与成功响应差异。

8.2 Hydra POST 表单语法

hydra -l <USER> -P passwords.txt <TARGET> \
  http-post-form '/login:username=^USER^&password=^PASS^:F=Invalid credentials'

成功条件:

hydra -l <USER> -P passwords.txt <TARGET> \
  http-post-form '/login:username=^USER^&password=^PASS^:S=Dashboard'

8.3 Header 或 Cookie

模块字符串可以附加 Header,例如 Cookie:

H=Cookie: session=<VALUE>

实际格式应通过 ​hydra -U http-post-form​ 查看并按课程环境调整。

8.4 常见失败原因

  • 字段名写错。
  • 路径或方法不正确。
  • 失败字符串在成功页中也存在。
  • 应用使用 JSON,而不是表单编码。
  • CSRF Token 每次改变。
  • 登录后需要重定向,工具未正确判断。
  • WAF、验证码或锁定机制介入。

9. Medusa

Medusa 同样支持并行远程登录测试,语法围绕 Host、User、Password 和 Module。

9.1 首次使用

medusa -h
medusa -d
medusa -M ssh -q
  • ​-d​:列出可用模块。
  • ​-q​:显示指定模块帮助。

9.2 基本语法

-h <HOST>        单个目标
-H hosts.txt     目标列表
-u <USER>        单个用户
-U users.txt     用户列表
-p <PASSWORD>    单个密码
-P pass.txt      密码列表
-M <MODULE>      协议模块
-n <PORT>        自定义端口
-t <N>           并发登录数
-f               找到当前主机有效凭据后停止
-F               找到任意有效凭据后停止全部任务

9.3 示例

medusa -h <TARGET> -u admin -P passwords.txt -M ssh
medusa -h <TARGET> -U users.txt -p 'Welcome1!' -M ftp

Hydra 和 Medusa 的模块、错误处理及成功判断方式不同。如果一款工具结果异常,应先用协议客户端验证,而不是立刻换工具反复加速尝试。


10. Web Services

本节把 Hydra/Medusa 应用于 SSH、FTP 等远程服务以及 Web 服务认证。

10.1 服务识别

nmap -sV -p21,22,80,443 <TARGET>

先确认:

  • 服务和端口是否正确。
  • 是否使用 TLS。
  • 用户名是否有效。
  • 是否允许密码认证。
  • 是否存在锁定、Fail2ban、速率限制或 MFA。

10.2 SSH

hydra -l <USER> -P passwords.txt <TARGET> ssh
medusa -h <TARGET> -u <USER> -P passwords.txt -M ssh

验证:

ssh <USER>@<TARGET>

若服务器只允许公钥认证,密码字典不会成功。

10.3 FTP

hydra -l <USER> -P passwords.txt <TARGET> ftp
medusa -h <TARGET> -u <USER> -P passwords.txt -M ftp

验证:

ftp <TARGET>

10.4 反向暴力与喷洒

一个密码对多个用户:

hydra -L users.txt -p 'Welcome1!' <TARGET> ssh

喷洒必须依据锁定策略安排批次和等待窗口;工具并不会自动保证“安全喷洒”。


11. Custom Wordlists

目标相关词表往往比通用大字典更有效。课程使用 CUPP 根据个人和组织信息生成候选。

11.1 CUPP 首次使用

cupp -h
cupp -i

交互模式会询问:

  • 姓名、昵称。
  • 生日。
  • 伴侣、孩子、宠物。
  • 公司、关键词。
  • 是否添加特殊字符、数字和 leet 变形。

输出后检查:

wc -l <WORDLIST>
head <WORDLIST>
sort -u <WORDLIST> -o <WORDLIST>

11.2 组织级词表

可组合公开且授权使用的信息:

公司名、品牌、产品、部门、地点、季节、年份、口号

然后按密码策略筛选长度,并仅生成合理变形。

11.3 数据最小化

自定义词表可能包含个人信息,应保存在受控目录,报告中只保留必要示例,测试结束后按项目要求销毁。


12. Skills Assessment Part 1

第一部分主要考察识别认证类型、构建候选并正确配置工具。

推荐流程

  1. 使用 Nmap 或浏览器确认服务和端口。
  2. 手工发送一次错误登录,捕获请求与响应。
  3. 确认用户名、密码字段及失败字符串。
  4. 检查是否有 Basic Auth、表单认证或远程协议。
  5. 从课程线索选择通用或自定义字典。
  6. 用低并发、小规模列表验证 Hydra/Medusa 语法。
  7. 找到候选凭据后立刻手工验证。

常用模板

Basic Auth:

hydra -l <USER> -P <PASSLIST> <TARGET> http-get <PATH>

POST 表单:

hydra -l <USER> -P <PASSLIST> <TARGET> \
  http-post-form '<PATH>:<USER_FIELD>=^USER^&<PASS_FIELD>=^PASS^:F=<FAIL_TEXT>'

13. Skills Assessment Part 2

第二部分通常需要组合用户名发现、目标相关词表和跨服务验证。

识别服务
  → 收集/验证用户名
  → 推断密码策略与目标信息
  → CUPP 或规则生成精简词表
  → 选择 Hydra/Medusa 模块
  → 控制并发并执行
  → 手工验证凭据
  → 检查同一凭据是否用于授权范围内的其他服务

完成标准

  • 有效凭据能通过原生客户端重复登录。
  • 能说明凭据来源和工具参数。
  • 明确账户权限,而不只写“登录成功”。
  • 记录锁定、验证码、MFA 和日志告警情况。
  • 给出具体修复建议。

附录 A:Hydra 与 Medusa 对照

需求 Hydra Medusa 单主机 目标参数 ​-h​ 主机列表 ​-M​(视模式) ​-H​ 单用户 ​-l​ ​-u​ 用户列表 ​-L​ ​-U​ 单密码 ​-p​ ​-p​ 密码列表 ​-P​ ​-P​ 模块 末尾 ​ssh​、​ftp​ 等 ​-M ssh​、​-M ftp​ 自定义端口 ​-s​ ​-n​ 并发 ​-t​ ​-t​ 保存输出 ​-o​ 按帮助选择输出参数 模块帮助 ​-U ​ ​-M -q​

附录 B:策略选择表

已知信息 推荐方式 短 PIN 或固定格式 有限字符集暴力破解 只知道用户名 精简密码字典 知道个人/组织信息 CUPP/目标相关字典 密码可能是常见词变体 混合攻击 少量常见密码、大量账户 密码喷洒 泄露的用户名密码组合 Credential stuffing 一个疑似复用密码 Reverse brute force 已取得哈希 转入离线破解,不应继续在线尝试

附录 C:常见失败原因

现象 检查项 所有 Web 尝试都判定成功 失败字符串/成功字符串配置错误 所有尝试都失败 字段、路径、方法、Content-Type 或 Cookie 不对 第几次后全部失败 账户锁定、WAF、速率限制或验证码 SSH 工具失败但手工可连 并发过高、旧算法、端口或模块参数错误 凭据有效但无法登录 SSH 账户可能不允许远程登录,或只允许密钥认证 Basic Auth 失败 路径、HTTP/HTTPS 模块或自定义端口错误 表单 Token 每次变化 需要动态处理 CSRF/会话,不适合静态模块字符串 结果速度极慢 网络限制、服务延迟或工具免费/模块限制;不要盲目提速 字典巨大但无结果 候选缺乏目标相关性,先分析策略和目标信息

附录 D:授权测试记录模板

目标与端口:
授权账户范围:
锁定阈值 / 时长 / 重置窗口:
MFA / CAPTCHA / WAF:
认证类型:Basic / Form / SSH / FTP / 其他
用户名来源:
字典来源与候选数量:
工具与完整参数:
并发 / 速率 / 测试时间窗:
成功判断依据:
手工验证结果:
账户权限:
是否观察到告警或锁定:
修复建议:

附录 E:防护要点

  • 使用长且唯一的密码并阻止已泄露密码。
  • 为重要账户启用 MFA。
  • 采用合理锁定、速率限制和指数退避。
  • 对失败登录、跨账户喷洒和异常来源告警。
  • 禁用默认凭据和不需要的密码认证。
  • 对管理入口限制网络来源。
  • 错误提示不要泄露用户名是否存在。
  • 对 CAPTCHA 作为补充控制,而非唯一防线。

总结

在线登录测试的核心不是“把线程开到最大”,而是准确识别认证请求、选择高相关性候选、理解锁定与限速,并可靠地区分成功和失败。最有效的流程通常是:先收集信息,再缩小候选;先低速验证工具语法,再谨慎扩大;工具发现凭据后,必须用原生客户端手工确认。

avatar

Zybaxy918039

书本,学术,网安之间反复横跳的业余爱好者,目前在自学计算机网络和AI相关知识

RECOMMENDED

HTB Academy:使用 Nmap 进行网络枚举

2026-09-19 22:17:09

HTB Academy:信息收集-网络版(Web Reconnaissance)学习笔记

2026-09-19 22:22:34

HTB Academy:Footprinting(足迹收集)

2026-09-20 12:23:20

Table of Contents