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

渗透测试--5.3.使用john破解密码

前言

由于Linux是Internet最流行的服务器操作系统,因此它的安全性备受关注。这种安全主要靠口令实现。

Linux使用一个单向函数crypt()来加密用户口令。单向函数crypt()从数学原理上保证了从加密的密文得到加密前的明文是不可能的或是非常困难的。当用户登录系统时,系统并不是去解密已加密的口令,而是将输入的口令明文字符串传给加密函数,将加密函数的输出与/etc/passwd文件中该用户的PASSWORD域进行比较,若匹配成功,则允许用户登录系统。

在目前多数Linux系统中,口令文件都做了shadow变换,即把/etc/passwd中的口令域分离出来,单独存在/etc/shadow文件中,并加强对shadow文件的保护,以增强口令安全。因此,在破解密码是,要先做UNshadow变换,将/etc/passwd文件与/etc/shadow文件合二为一。

Linux 系统下的用户密码存储在 /etc/shadow (hash值)或者 /etc/passwd 文件中。如果有管理员权限,则可以从这两个文件中获取加密后的密码 hash,然后使用 john 等工具进行密码破解。要破解 Linux 系统用户密码,可以使用暴力破解或者字典攻击的方式进行尝试。

目录

前言

1、john简介

2、john参数

3、john实例

步骤一: 合并密码文件

步骤二: 使用John工具进行密码破解


1、john简介

John the Ripper一款免费、开源的暴力密码破解器,它有多平台版本,支持目前大多数的加密算法,如DES、MD4、MD5等。该软件破解密码方式简单而粗暴,理论上只要时间上面允许,该软件可以破译绝大多数用户密码。

John the Ripper免费的开源软件,支持目前大多数的加密算法,如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。


2、john参数

John支持四种密码破解模式:

  • 1.字典模式:在这种模式下,用户只需要提供字典和密码列表用于破解。
  • 2.单一破解模式:这是john作者推荐的首选模式。John会使用登录名、全名和家庭通讯录作为候选密码。
  • 3.递增模式:在该模式下john会尝试所有可能的密码组合。这是最具威力的一种。
  • 4.外部模式:在这种模式下,用户可以使用john的外部破解模式。使用之前,需要创建一个名为(list.external : mode)的配置文件,其中mode有用户分配。
     

下面是 John the Ripper 常用的参数和选项:

  1. --wordlist=<file>: 指定密码字典文件路径。

  2. --rules: 使用密码破解规则,如大小写互换、添加特殊字符等。

  3. --stdin: 从标准输入中读入密码,适用于使用管道等方式输入密码。

  4. --format=<format>: 指定哈希算法类型,如MD5、SHA-1、SHA-256等。

  5. --show: 显示已破解的密码。

  6. --pot=<file>: 指定已破解密码的保存文件路径。

  7. --incremental: 使用增量模式进行破解,尝试所有可能的密码组合。

  8. --session=<name>: 为当前破解会话指定名称。

  9. --status: 显示当前破解进度。

  10. --fork=<n>: 指定使用多少个进程进行并行破解。

  11. --mask: 使用掩码模式进行暴力破解,限制密码的可能字符类型。

以上是 John the Ripper 常用的参数和选项,可以根据需要进行组合使用。


3、john实例

使用unshadow命令及John工具破解某一Linux系统靶机的用户密码,并实现明文输出显示。

步骤一: 合并密码文件

在Linux系统中,密码哈希值通常存储在/etc/shadow文件中,只有root用户才能读取和修改该文件

使用unshadow命令生成一个含有/etc/passwd和/etc/shadow文件信息合并的文件

sudo unshadow /etc/passwd /etc/shadow > gyp

步骤二: 使用John工具进行密码破解

Linux使用一个单向函数crypt()来加密用户口令,所以密码算法为crypt 的hash算法,

john --format=crypt gyp

可以看到破解了三个用户的密码为:kali 

http://www.lryc.cn/news/69267.html

相关文章:

  • Go中的变量类型
  • 基于STM32的NRF24L01 2.4G通讯模块的驱动实验(HAL库)
  • DJ5-3 多路访问链路和协议
  • 技术领导力?
  • 计算机的基本工作原理
  • 【论文简述】Cross-Attentional Flow Transformer for Robust Optical Flow(CVPR 2022)
  • 【JAVA】Java中方法的使用,理解方法重载和递归
  • 高级网络计算模式复习
  • 【笔试强训选择题】Day15.习题(错题)解析
  • 图论专题(一)
  • 新星计划2023【网络应用领域基础】————————Day4
  • [CTF/网络安全] 攻防世界 view_source 解题详析
  • 目前流行的9大前端框架
  • 【mysql】explain执行计划之select_type列
  • 网易云音乐开发--音乐播放暂停切换上下首功能实现
  • 如何学习网络安全?
  • 软件测试适合女生吗?
  • 华为云——代码托管的使用
  • ChatGPT从⼊⻔到精通
  • node + alipay-sdk 沙箱环境简单测试电脑网站支付
  • 卷积神经网络详解
  • API架构的选择,RESTful、GraphQL还是gRPC
  • 人机融合智能的测量、计算与评价
  • 虹科新品 | 高可靠性、可适用于高磁/压的线性传感器!
  • 支付系统设计五:对账系统设计01-总览
  • 阿里三面过了,却无理由挂了,HR反问一句话:为什么不考虑阿里?
  • 办公智慧化风起云涌,华为MateBook X Pro 2023是最短距离
  • 分布式项目 09.服务器之间的通信和三个工具类
  • C# 基本语法
  • 做网络爬虫需要掌握哪些技术?