John the Ripper
简介和背景
由于Linux是Internet最流行的服务器操作系统,因此它的安全性备受关注,这种安全主要靠口令实现
Linux使用一个单向函数 crypt() 来加密用户口令;单向函数 crypt() 从数学原理上保证了从加密的密文得到加密前的明文是不可能的或是非常困难的; 当用户登录系统时,系统并不是去解密已加密的口令, 而是将输入的口令明文字符串传给加密函数, 将加密函数的输出与 /etc/passwd 文件中该用户的PASSWORD域进行比较,若匹配成功,则允许用户登录系统;
John-the-Ripper 是一款免费,开源的暴力密码破解器,它有多平台版本,支持目前大多数的加密算法,如DES, MD4, MD5等;该软件破解密码方式简单而粗暴,理论上只要时间上面允许,该软件可以破译绝大多数用户密码;
用法
在 macOS 上面安装 John-the-Ripper:
1 | brew install john-jumbo |
简单的使用方式是 john --wordlist=/path/to/wordlist.txt /path/to/passwords.txt,
其中 john 会基于你提供的 wordlist 为起步阶段来做各种尝试, wordlist
是网络上很多用户常用的密码集合, 最著名的公用 wordlist 是 rockyou.txt
如果不提供 wordlist, john 会使用自带的 wordlist
Hash 密码形式
一般而言的哈希函数开头是 $id 形式,通过 id 来说明其采用的 哈希函数类型
(例如sha512 对应的 id 是 $6)
在 id 之后的是 $salt,salt 是一个随机数,用于增加哈希函数的复杂度,使得破解更加困难
在 salt 之后的是 $hash,哈希值是通过哈希函数对明文进行加密得到的
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
