密码攻击是渗透测试中最基础也最关键的环节之一。在OSCP认证考试和实际渗透测试工作中,掌握系统的密码破解方法论往往能直接决定测试的成败。不同于简单的暴力破解,专业的密码攻击需要结合目标系统特性、加密算法原理和实际环境限制,制定科学的攻击策略。
我从事渗透测试工作多年,处理过数百个密码破解案例。从简单的Web登录表单到企业级Active Directory域控,不同类型的密码系统需要采用差异化的攻击手法。本文将系统梳理密码破解的核心理论框架,重点讲解基于哈希的离线攻击技术,这些内容不仅适用于OSCP考试准备,也是实际渗透测试中的必备技能。
现代系统通常不会直接存储明文密码,而是采用以下三种主要存储机制:
对称加密存储:
哈希单向存储:
加盐哈希存储:
实际经验:在2018年某次企业渗透测试中,我们发现其内部系统仍在使用MD5无盐存储密码。通过提取数据库哈希值,我们仅用6小时就破解了85%的员工密码,包括多个管理员账户。
| 算法 | 输出长度 | 速度 | 抗碰撞性 | 典型应用场景 |
|---|---|---|---|---|
| MD5 | 128-bit | 极快 | 已破解 | 遗留系统 |
| SHA1 | 160-bit | 快 | 已破解 | Git版本控制 |
| SHA256 | 256-bit | 中等 | 安全 | 区块链、现代系统 |
| bcrypt | 可变 | 可调节 | 安全 | Web应用密码存储 |
| PBKDF2 | 可变 | 可调节 | 安全 | 企业级身份认证 |
标准的离线密码攻击包含五个关键阶段:
哈希提取:
哈希识别:
攻击模式选择:
破解执行:
结果分析:
最基础的攻击方式,使用预编译的密码字典尝试匹配。效率取决于:
bash复制# Hashcat字典攻击示例
hashcat -m 0 -a 0 target_hashes.txt rockyou.txt
在字典基础上应用变换规则,如:
bash复制# 使用Best64规则集
hashcat -m 1000 -a 0 -r rules/best64.rule hashes.txt dict.txt
当其他方法失效时的最后手段,需注意:
bash复制# 暴力破解6位数字密码
hashcat -m 500 -a 3 hashes.txt ?d?d?d?d?d?d
GPU选择:
多卡配置:
bash复制# 指定使用多块GPU
hashcat -d 1,2 -m 0 hashes.txt dict.txt
对于大型企业环境,建议采用:
Hashcat集群:
云破解服务:
通过已破解密码总结规律:
在一次金融行业渗透测试中,客户系统采用了bcrypt cost=10的哈希存储。即使使用8块RTX 3090显卡,平均破解速度也仅为15次/秒。这充分证明了适当配置的现代哈希算法能有效抵御密码攻击。