当前位置: 首页 > java >正文

【学习记录】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 RipperHashcat 进行本地哈希提取与爆破,从而实现对 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:设置密码长度范围。

📋 示例命令汇总

类型工具命令模板
合并用户与密码unshadowunshadow /etc/passwd /etc/shadow > passwords.txt
自动破解John the Ripperjohn passwords.txt
指定哈希类型John the Ripperjohn --format=sha512crypt passwords.txt
字典攻击Hashcathashcat -a 0 -m 1800 hashes.txt dict.txt
暴力破解Hashcathashcat -a 3 -m 1800 hashes.txt ?a...

🧠 五、总结

本文详细介绍了如何从 Linux 系统中提取 /etc/shadow 文件,并结合 John the RipperHashcat 进行本地密码哈希的提取与破解。

主要优势包括:

  • 无需上传工具:仅需导出系统文件即可完成操作;
  • 规避检测:使用原生命令操作,降低被发现的风险;
  • 离线分析:可在本地进行高效破解,提升灵活性;
  • 获取高价值用户凭证:有助于进一步横向渗透。

📌 注意:本文仅供学习交流,请勿用于非法用途。未经授权获取他人系统权限属于违法行为。


💬 欢迎留言交流你在实际操作中遇到的问题,或分享你的经验技巧!

http://www.xdnf.cn/news/12077.html

相关文章:

  • Stream流性能分析及优雅使用
  • FSC认证概述?FSC认证的核心原则与标准?FSC认证的市场价值与意义
  • 数学知识体系难易程度表及关系
  • (25)课41 删除外键约束:ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
  • Python绘图库及图像类型之基础图表
  • 6个月Python学习计划 Day 14 - 阶段复盘 + 项目练习测试
  • Qwen2.5-VL - 多模态旋转位置嵌入(Multimodal Rotary Position Embedding, MRoPE)
  • 计算机操作系统知识点总结②
  • 天机学堂(我的课表)
  • winform下DevExpress中datagridview中数据批量保存不上
  • 【python深度学习】Day 44 预训练模型
  • 安装 Nginx
  • 一则systemctl service诡异问题
  • GAN模式崩塌难题:成因分析与多维度解决方案
  • stripe支付测试,ngrok无法使用?免费vscode端口转发,轻松简单!
  • 第八部分:第四节 - 列表渲染与条件渲染:根据订单显示不同内容
  • [Java 基础]类,面向对象的蓝图
  • Windows 下载、安装、配置和使用Node
  • BUU MISC(持续更新)
  • Java 中实现线程的创建和启动
  • [ACM MM 2024]Lite-Mind:Towards Efficient and Robust Brain Representation
  • MySQL对数据库用户的操作
  • VS Code开发项目,配置ESlint自动修复脚本
  • 高防CDN有用吗?它的防护效果怎么样?
  • 1. 数据库基础
  • 卫星的“太空陀螺”:反作用轮如何精准控制姿态?
  • 蓝桥云课ROS一键配置teb教程更新-250604
  • 嵌入式就业难不难?
  • 【趣味Html】第11课:动态闪烁发光粒子五角星
  • 力扣刷题Day 70:在排序数组中查找元素的第一个和最后一个位置(34)