Menu

如何破解Linux密码———–John

2015-06-13 - Linux渗透, 密码破解

John the Ripper password cracker, ver: 1.7.9-jumbo-7_omp [linux-x86-64]
Copyright (c) 1996-2012 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
–config=FILE use FILE instead of john.conf or john.ini
–single[=SECTION] “single crack” mode
–wordlist[=FILE] –stdin wordlist mode, read words from FILE or stdin
–pipe like –stdin, but bulk reads, and allows rules
–loopback[=FILE] like –wordlist, but fetch words from a .pot file
–dupe-suppression suppress all dupes in wordlist (and force preload)
–encoding=NAME input data is non-ascii (eg. UTF-8, ISO-8859-1).
For a full list of NAME use –list=encodings
–rules[=SECTION] enable word mangling rules for wordlist modes
–incremental[=MODE] “incremental” mode [using section MODE]
–markov[=OPTIONS] “Markov” mode (see doc/MARKOV)
–external=MODE external mode or word filter
–stdout[=LENGTH] just output candidate passwords [cut at LENGTH]
–restore[=NAME] restore an interrupted session [called NAME]
–session=NAME give a new session the NAME
–status[=NAME] print status of a session [called NAME]
–make-charset=FILE make a charset file. It will be overwritten
–show[=LEFT] show cracked passwords [if =LEFT, then uncracked]
–test[=TIME] run tests and benchmarks for TIME seconds each
–users=[-]LOGIN|UID[,..] [do not] load this (these) user(s) only
–groups=[-]GID[,..] load users [not] of this (these) group(s) only
–shells=[-]SHELL[,..] load users with[out] this (these) shell(s) only
–salts=[-]COUNT[:MAX] load salts with[out] COUNT [to MAX] hashes
–pot=NAME pot file to use
–format=NAME force hash type NAME: afs bf bfegg bsdi crc32 crypt
des django dmd5 dominosec dragonfly3-32 dragonfly3-64
dragonfly4-32 dragonfly4-64 drupal7 dummy dynamic_n
epi episerver gost hdaa hmac-md5 hmac-sha1
hmac-sha224 hmac-sha256 hmac-sha384 hmac-sha512
hmailserver ipb2 keepass keychain krb4 krb5 lm lotus5
md4-gen md5 md5ns mediawiki mscash mscash2 mschapv2
mskrb5 mssql mssql05 mysql mysql-sha1 nethalflm netlm
netlmv2 netntlm netntlmv2 nsldap nt nt2 odf office
oracle oracle11 osc pdf phpass phps pix-md5 pkzip po
pwsafe racf rar raw-md4 raw-md5 raw-md5u raw-sha
raw-sha1 raw-sha1-linkedin raw-sha1-ng raw-sha224
raw-sha256 raw-sha384 raw-sha512 salted-sha1 sapb
sapg sha1-gen sha256crypt sha512crypt sip ssh
sybasease trip vnc wbb3 wpapsk xsha xsha512 zip
–list=WHAT list capabilities, see –list=help or doc/OPTIONS
–save-memory=LEVEL enable memory saving, at LEVEL 1..3
–mem-file-size=SIZE size threshold for wordlist preload (default 5 MB)
–nolog disables creation and writing to john.log file
–crack-status emit a status line whenever a password is cracked
–max-run-time=N gracefully exit after this many seconds
–regen-lost-salts=N regenerate lost salts (see doc/OPTIONS)
–plugin=NAME[,..] load this (these) dynamic plugin(s)

1、先消灭FOOLUSER,就是“笨蛋用户”:
john -single shadow.txt

2、再消灭稍微聪明一点的用户:
john -wordfile:password.lst -rules shadow.txt

3、最后进行大屠杀:
john -i:all shadow.txt

当然了,第三步可能要你的电脑跑上10000年。

第一步主要针对笨蛋而进行的,原理是根据用户的名称,加上常见的变化而猜测密码。一般所谓的笨蛋是这样的,比如此用户叫fool,而他的密码是fool123、fool1、loof、loof123、lofo…。这样的用户一般在一分钟内会被全部消灭。

第二步是使用字典文件来进行解密,不为什么,只是因为设置密码的是人而不是机器,如人们常用hello、superman、cooler、asdfgh、 123456等作为自己的密码。而-rules参数则在此基础上再加上些变化,如字典中有单词cool,则JOHN还会尝试使用cooler、CoOl、 Cool等单词变化进行解密。一般视SHADOW中的用户多少及你的字典大小、你的机器速度,解密时间从几小时到几天不等。

第三步是纯粹的碰运气解法,主要原理是遍历所有可能的密匙空间。JOHN会尝试以95个字母(因为从键盘上只能输入95种可能的键值)进行1-8(8个字 母是密码的最长值,所有密码中8位以后的部分均不会被使用,目前的DES加密体系就是这样的)个长度的所有组合,这是很漫长的过程,我们计算一下:以仅攻 击一个用户为例,MMX200微机一台(攻击速度18000次/秒),假设遍历50%的密码空间,需要的时间为:

95^8+95^7+95^6+95^7+95^6+…..+95^1)/2/18000
=6.7047809E15/18000
=3.7248783E11秒
=10346884.19小时
=4311201.745天
=11811.5年

还好在JOHN可以进行自动预设取值。所以这样破解密码还是可能的,一般的经验是20个小时可能破解一个,可能什么都没有。

本文后面介绍的经验可以帮助你尽快地进行破解

详细功能说明

JohntheRipper1.4是目前比较好的破解密码工具,在解密过程中会自动定时存盘,你也可以强迫中断解密过程(用ctrl+c),下次还可以从 中断的地方继续进行下去(john-restore),任何时候敲击键盘,你就可以看到整个解密的进行情况,所有已经被破解的密码会被保存在当前目录下的 JOHN.POT文件中, SHADOW中所有密文相同的用户会被归成一类,这样JOHN就不会进行无谓的重复劳动了。在程序的设计中,关键的密码生成的 条件被放在JOHN.INI文件中,你可以自行修改设置,不仅支持单词类型的变化,而且支持自己编写C的小程序限制密码的取值方式。唯一的遗憾是:在自动 产生密码的遍历解密方法中不支持-rules选项。不过还好有方法可以克服。

命令行的参数功能解释

命令行方式:john [-功能选项] [密码文件名]

功能选项(所有的选项均对大小写不敏感,而且也不需要全部输入,只要在保证不与其他参数冲突的前提下输入即可,如-restore参数只要输入-res即可):

-pwfile:<file>[,..]

用于指定存放密文所在的文件名,(可以输入多个,文件名一我“,”分隔,也可以使用*或者 这两个通配符引用一批文件)。也可以不使用此参数,将文件名放在命令行的最后即可。

-wordfile:<字典文件名>-stdin

指定的用于解密用的字典文件名。你也可以使用STDIO来输入,就是在键盘中输入。

-rules

在解密过程中使用单词规则变化功能。如将尝试cool单词的其他可能,如COOLER、Cool等,详细规则可以在JOHN.INI文件中的[List.Rules:Wordlist]部分查到,我们在下面详细解释。

-incremental[:<模式名称>]

使用遍历模式,就是组合密码的所有可能情况,同样可以在JOHN.INI文件中的[Incremental:*****]部分查到,我们在下面详细解释