跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

OSCP 实战:破解 SSH 私钥的密码短语

通过 OSCP 实战场景演示了 SSH 私钥密码短语的破解流程。攻击者通过 Web 文件管理器获取目标服务器上的 SSH 私钥及包含密码策略的说明文档。尝试直接使用私钥登录因缺少密码短语而失败。随后使用 Hashcat 进行暴力破解未成功,最终改用 John the Ripper (JtR) 结合字典与规则成功破解出密码短语。利用破解后的密钥完成远程 SSH 登录,验证了私钥泄露后若无强密码短语保护将面临严重安全风险。

雪落无声发布于 2026/2/8更新于 2026/9/34.6K 浏览
OSCP 实战:破解 SSH 私钥的密码短语

OSCP 实战:破解 SSH 私钥的密码短语

1. 密码破解实践

1.2 破解 SSH 私钥的密码短语

1.2.1 SSH 密钥认证原理与密码短语的作用
1.2.1.1 基本认证流程

SSH 使用非对称加密进行身份验证,其核心流程基于'公钥锁,私钥开'的机制:

  1. 用户侧:生成一对密钥(id_rsa 私钥 + id_rsa.pub 公钥),私钥自己严格保管。
  2. 服务侧:将用户的公钥(id_rsa.pub)放置于目标服务器的特定文件(如 ~/.ssh/authorized_keys)中。这相当于为你的账户装一把只让对应私钥打开的'数字锁'。
  3. 登录时:当你连接服务器,服务器会向你发出一个挑战。你用私钥进行签名响应。服务器用预留的公钥验证签名,匹配则允许登录。
1.2.1.2 私钥泄露的风险

一旦攻击者获取了你的私钥文件(id_rsa),他便拥有了你这把'钥匙',可以尝试冒充你的身份去开启服务器上的那把'锁'。如果没有额外保护,他就能直接登录。为了防止这个情况发生,这个时候就出现了**'密码短语'**。

1.2.1.3 密码短语:私钥的最后防线

密码短语:是在创建密钥对时,为用户私钥额外添加的一层对称加密保护。

  • 作用机制:私钥文件本身被一个由密码短语派生出的密钥加密存储。每次使用私钥前,必须先输入正确的密码短语来解密它。
  • 安全价值:即使私钥文件不慎泄露,攻击者得到的也只是一个被加密的乱码文件,无法直接使用。密码短语从而成为保护身份的最后一道屏障!
  • 攻击门槛:攻击者必须通过暴力破解或字典攻击等方式猜出密码短语,才能解密并最终使用私钥。这极大地增加了攻击难度和成本。

核心总结 SSH 密钥认证的安全模型建立在'公钥在服务端,私钥在客户端'的基础上。密码短语并非用于远程服务器验证,而是用于本地加密保护私钥文件本身。它是防止私钥泄露后导致即时权限沦陷的关键安全措施。

💡 类比理解:这就像你捡到了一把保险柜的钥匙(私钥),但钥匙上还挂着一个密码锁(密码短语),不知道密码仍然打不开柜子。

1.2.2 攻击场景还原

在本文的示例中,攻击者已通过字典攻击破解了目标 Web 登录表单(用户名:user,密码:121212),从而获得了基于 Web 的文件管理器访问权限(地址:http://192.168.50.201:8080)。以上过程参考:前述文章'HTTP POST 登录表单'的内容。

1.2.2.1 信息收集发现敏感文件

在登录文件管理器后,攻击者在服务主目录中发现了两个重要文件,将这两个文件下载至本地 Kali 机器的 passwordattacks 目录中。

  • id_rsa:SSH 私钥文件
  • note.txt:说明文档

文章配图

查看 note.txt 文件,内容令人惊喜:

文章配图

该文件竟以明文形式记录了用户'Dave'的潜在密码列表!这为后续破解 SSH 私钥的密码短语提供了宝贵的字典来源。同时,还说了:

  • '新的密码政策何时启用:2022 年 1 月'
  • 具体密码政策'需包含:3 个数字、一个大写字母、一个特殊字符'
1.2.2.2 攻击流程梳理

下图概括了从初始渗透到最终破解 SSH 私钥密码短语的完整过程:

文章配图

1.2.3 使用 SSH 私钥文件登录尝试(失败)

在拿到 SSH 私钥文件后,尝试使用用户 dave 的私钥 id_rsa 文件进行 SSH 连接。

1.2.3.1 修改 id_rsa 文件权限

在使用 SSH 私钥前,必须修改 id_rsa 的私钥文件的权限:

chmod 600 id_rsa # 设置仅所有者可读写

🔐 注意:权限过宽的私钥文件会被 SSH 客户端拒绝使用,这是重要的安全限制。

1.2.3.2 SSH 登录尝试(失败)

执行命令尝试连接目标服务器(端口:2222):

ssh -i id_rsa -p 2222 [email protected]

系统提示输入私钥的密码短语。由于没有密码短语,连接被拒绝。

1.2.4 使用 Hashcat 破解私钥文件 id_rsa 的密码短语(失败)
1.2.4.1 私钥文件 id_rsa 转换为.hash 格式

首先需要将私钥文件提取哈希值供 Hashcat 识别:

ssh2john id_rsa > id_rsa.hash
1.2.4.2 Hashcat 模式识别

Hashcat 支持多种 SSH 密钥格式。对于 RSA 私钥,通常使用模式 17220 (RSA private key) 或 17221 (OpenSSH private key)。根据生成的 hash 类型选择对应模式。

1.2.4.3 创建密码规则

根据 note.txt 中的策略(3 个数字、1 个大写字母、1 个特殊字符),可以编写自定义规则增强字典攻击效果,但 Hashcat 默认规则可能不足以覆盖复杂组合。

1.2.4.4 创建密码字典

利用 note.txt 中记录的明文密码列表作为基础字典,结合常见弱口令规则生成混合字典。

1.2.4.5 使用 Hashcat 来执行破解(失败)

执行 Hashcat 命令:

hashcat -m 17220 id_rsa.hash wordlist.txt --force

经过长时间运行,Hashcat 未能成功破解出密码短语。原因可能是密码复杂度超出了 Hashcat 在该环境下的计算能力,或者字典不够精准。

1.2.5 改用 JtR 破解私钥文件 id_rsa 的密码短语(成功)
1.2.5.1 规则集成至 JtR 的配置文件

John the Ripper (JtR) 在处理某些加密算法时表现更佳。编辑 john.conf 或直接在命令行指定规则,使其符合密码策略。

1.2.5.2 执行密码破解

使用 JtR 加载哈希并执行破解:

john --wordlist=wordlist.txt --rules=id_rsa.hash
1.2.5.3 破解结果分析

JtR 成功返回了密码短语。结果显示密码符合之前发现的策略要求。

1.2.5.4 破解成功的关键因素
  1. 工具选择:JtR 对 OpenSSH 格式的私钥支持更为成熟。
  2. 字典质量:note.txt 提供的明文密码列表大大缩小了搜索空间。
  3. 策略利用:利用已知的密码组成规则优化了攻击路径。
1.2.5.5 核心安全启示

私钥文件不应随意存放,且密码短语必须具备足够的熵值。简单的密码短语配合泄露的私钥等同于无保护状态。

1.2.6 使用破解的私钥密码短语完成远程 SSH 登录

获得密码短语后,再次尝试 SSH 连接:

ssh -i id_rsa -p 2222 [email protected]
# 输入破解出的密码短语

连接成功,获得 Shell 访问权限。

1.2.7 总结:完整的 SSH 密钥认证流程
  1. 渗透入口:通过 Web 漏洞获取文件管理器权限。
  2. 资产发现:定位并下载 SSH 私钥及密码策略文档。
  3. 初步尝试:直接使用私钥登录失败(因有密码短语保护)。
  4. 密码破解:Hashcat 失败,JtR 结合字典与策略成功破解密码短语。
  5. 权限获取:使用破解后的密钥成功登录服务器。

此案例展示了即使拥有私钥文件,若无强密码短语保护,仍面临极高的安全风险;同时也说明了在 CTF 或渗透测试中,多工具协同与情报分析的重要性。

目录

  1. OSCP 实战:破解 SSH 私钥的密码短语
  2. 1. 密码破解实践
  3. 1.2 破解 SSH 私钥的密码短语
  4. 1.2.1 SSH 密钥认证原理与密码短语的作用
  5. 1.2.1.1 基本认证流程
  6. 1.2.1.2 私钥泄露的风险
  7. 1.2.1.3 密码短语:私钥的最后防线
  8. 1.2.2 攻击场景还原
  9. 1.2.2.1 信息收集发现敏感文件
  10. 1.2.2.2 攻击流程梳理
  11. 1.2.3 使用 SSH 私钥文件登录尝试(失败)
  12. 1.2.3.1 修改 id_rsa 文件权限
  13. 1.2.3.2 SSH 登录尝试(失败)
  14. 1.2.4 使用 Hashcat 破解私钥文件 id_rsa 的密码短语(失败)
  15. 1.2.4.1 私钥文件 id_rsa 转换为.hash 格式
  16. 1.2.4.2 Hashcat 模式识别
  17. 1.2.4.3 创建密码规则
  18. 1.2.4.4 创建密码字典
  19. 1.2.4.5 使用 Hashcat 来执行破解(失败)
  20. 1.2.5 改用 JtR 破解私钥文件 id_rsa 的密码短语(成功)
  21. 1.2.5.1 规则集成至 JtR 的配置文件
  22. 1.2.5.2 执行密码破解
  23. 1.2.5.3 破解结果分析
  24. 1.2.5.4 破解成功的关键因素
  25. 1.2.5.5 核心安全启示
  26. 1.2.6 使用破解的私钥密码短语完成远程 SSH 登录
  27. 输入破解出的密码短语
  28. 1.2.7 总结:完整的 SSH 密钥认证流程

更多推荐文章

查看全部
  • VS Code 中 GitHub Copilot 安装后无法使用?关键排查步骤
  • Windows 下 VSCode 配置 C/C++ 开发环境完整指南
  • 数据结构:单向链表,顺序栈和链式栈
  • 基于Java的校园二手物品在线交易平台设计与实现
  • Rust 与 WebAssembly 深度实战:浏览器与 Node.js 高性能部署
  • 从卡顿到流畅:Tesla K80 显卡上的 llama.cpp CUDA 优化实战指南
  • 如何在 Ubuntu 上配置 OpenClaw 实现文件创建功能
  • 民用无人机新规 2026 年 5 月实施:实名登记与激活要求详解
  • 数据库查询执行:排序与聚合算法详解
  • VS Code 结合 Overleaf Workshop 插件实现本地 AI 辅助 LaTeX 写作
  • 基于 Qwen3-VL 的游戏 AI 视觉决策系统搭建
  • LazyLLM 多 Agent 应用实践:源码部署与 Web 调试指南
  • Beyond Compare 安装与试用期重置指南
  • LazyLLM 多 Agent 应用全流程实践:从源码部署到可视化 Web 调试
  • Generative UI 如何重塑 AI 时代的前端交互
  • LazyLLM 框架实战:构建代码专家智能体
  • LazyLLM 框架实战:代码专家智能体进阶模块开发指南
  • 深入理解大模型:LM、基础模型与核心技术解析
  • MCP Server 案例:利用 Excel 生成可视化 HTML 报告
  • 高频算法推理场景下的灵活计费与本地模型部署

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online