John the Ripper使用教程

From: w3b0rz

今天为了完成 ISG 上的一道题目,不得不去学习了 JTR,不过说起来这样的神器是早晚都得掌握的。

中文的虽然量看起来挺多的,但大多重复,有自己思考的内容不多

最初一定要三步走:

1
2
3
4
5
6
7
1、先消灭FOOL USER,就是“笨蛋用户”: 
john -single shadow.txt
2、再消灭稍微聪明一点的用户:
john -wordfile:password.lst -rules shadow.txt
3、最后进行大屠杀:
john -i:all shadow.txt
当然了,第三步可能要你的电脑跑上10000年。

然后再摘录一段个人觉得比较有价值的片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
john的几个用法 

脱离字典档用暴力法破密码只要加上参数-i:all
就可破象5e5t56e6这样的密码了。
破解到一半因种种原因需要暂时停止破解,按ctrl+c,
下次破解不必从新来过,只要john -restore:restore即可接着破。
john在纯dos下要比在win95下快,用unix更快,
建议在linux下运行因为crypt函数系统本身就有,
会快一点吧!?


john笨招

说说我用JOHN的经历和成果:
(PASSWD 有300来个ACCOUNT, 一般无防犯)
1.
john -w:password.lst passwd
成功10个左右。
2.
john -si passwd
成功(增加,后同)35个左右。
3.
john -i passwd
将minlen, maxlen都设成5
成功1个root(以后不可能啦)。
4.
john -i passwd
改john.ini,1个字母加3个数字:成功1个左右。
改john.ini,1个字母加4个数字:成功5个左右。
5.
john -w:password.lst -rules passwd
成功3个左右。
6.
xtract \bdc\ck-x?.pms > myword1.lst
john -w:myword1.lst -rules passwd
(BDC小学词库)成功5个左右。
7.
xtract passwd > names.lst
(sort,etc.)
john -w:names.lst -rules passwd
成功2个左右。
8.
将john.ini中Single -> SingleOLD
自己再造一个,各次分别加入
l$[0-9]$[0-9]
成功5个左右。
l$[0-9]$[0-9]$[0-9]$[0-9]
成功5个左右。
l^[0-9]^[0-9]^[0-9]
成功1个。
l$[a-z]$[a-z]$[a-z]
成功5个左右。
l^[a-z]^[a-z]^[a-z]
成功10个左右(很多人用类似tsh*)。
etc.
john -si passwd
(不算太慢)
9.
将john.ini中Wordlist -> *OLD
自己再造一个,各次分别加入类似8
成功2个左右。
john -w:word.lst -rules password

总共有100左右,1/3


john.ini 建立自己的模式例子

比如,在incremental:all模式完毕后,添加如下行,即可得到一个自己的模式
两个字母+4位数字。6162中的字母顺序是拷贝以前的东东的,无所谓,只要
26个都列上就可以了。这个模式并命名为zylin1d。

[Incremental:zylin1d]
CharCount = 36
MinLen = 6
MaxLen = 6

Charset61 = smbcpadtrjhgflkwneoivzquyx
Charset62 = aoeiurhlntmpscwybkdgvfxjzq
Charset63 = 0123456789
Charset64 = 0123456789
Charset65 = 0123456789
Charset66 = 0123456789


以后要调用这个模式时,只要用john -i:zylin1d passwd 就可以了。

需要注意的是,在新版本中 john.ini 已经不存在了,取而代之的是 /etc/john/john.conf
还有以上这个 Charset 好像没用啊 = =

1
2
3
4
5
[Incremental:Alnum]
File = $JOHN/alnum.chr
MinLen = 1
MaxLen = 8
CharCount = 36

上面这段代码是 john.ini 中的原始代码,先来看它的规则,它的最小长度为 MinLen = 1,最大长度为 MaxLen = 8, 字符数量为 CharCount = 36。这里的 36 是怎么来的呢?实际上是 10 + 26,也就是数字 + 小写字母。其它的规律可以参考其它自带规则。

注意:一定需要 File = $JOHN/alnum.chr 这样的一个文件,否则的话就要使用 .include 来包含一个已有的文件。吐血了,真不知道怎么定一个合适的规则了。

另外,这里的 CharCount 和 MinLen MaxLen 是有效的。

此外,注意代码中的第二行 File = $JOHN/alnum.chr,这段规则实际上是存在一个文件的,文件在 /usr/share/john/alnum.chr 也就是 JOHN 的程序路径($JOHN)。这不是一个文本文档,因此不能直接用 Vim 来编写修改,至今还不知道该怎么处理,官方文档上说的是可以用 --make-charset=new.chr passwd 参数来添加。我还不是很懂,不过我觉得实用性不是很强吧。

那么最重要的如何使用这些规则呢?对于 JTR 已经给我们提供的 chr 文件,我们可以通过 john -incremental:alnum Passwdfile 命令来使用。


如果要使用字典就容易多了,只要在 $JOHN 下面创建一个 mylist.lst 文本文档,再将密码加进去即可。要使用的话可以执行 john -wordlist=mylist.lst Passwdfile


结束以后用 -show 就很好


有空还是多看看官方文档吧!
John