初探密码破解工具JTR

JTR是John The Ripper的缩写本身是用来专门破解linux系统用户hash的,但现在已经不再那么局限了,它同样也提供了非常多的散列类型,虽然,跟hashcat在某些方面确实还差了一个量级,但它也有自己很独到的地方,多用你就知道了,废话不多说,咱们开始吧

如何安装JTR

windows下提供了编译好的exe工具,但是实际破解的话还是推荐Linux版的,下面就简单介绍一下在Linux下的安装方法。

系统环境:在Ubuntu16.04.2 LTS

软件版本:John The Ripper 1.8

像类似的hash破解工具,不用多说,单独找个显卡或者CPU性能好点的机器是必须的,要不,意义何在呢,编译安装的过程就非常简单了,如下[如果实在嫌手敲的累,自己放脚本里跑跑就好了]

wget http://www.openwall.com/john/j/john-1.8.0.tar.xz
tar xvfJ john-1.8.0.tar.xz
cd john-1.8.0/src
make 选择对应的系统平台进行编译
make clean linux-x86-64
echo $?
cd ../run/
./john --test 测试当前系统的破解速度
echo $?

安装完以后,看到如下的情况,基本就算安装成功了

一些小建议

1 下面是john 默认破解规则的配置文件(可自行设置每种模式下的具体破解规则,一般没有极特殊的需求,我们是很少改配置的,有兴趣可以仔细阅读该文件):

cat john.conf

2 john在运行期间会在当前目录产生一个john.pot文件,用来缓存破解时的数据,主要是用来记录破解进度什么的,如果你每次想从头开始破解,直接把这个文件手工删除,然后重新跑即可

rm -fr john.pot

常用参数解释

--single	简单破解模式,也是默认的执行模式,就是根据用户和家目录名进行一些简单的变形猜解
--incremental   逐个遍历模式[其实跟hashcat的increment模式是一样的],直到尝试完所有可能的组合
--wordlist      纯字典模式,后面跟上字典的路径即可
--external      扩展[自定义]破解规则模式,今天先不讲,有闲工夫会专门说
--restore	从上次的破解进度接着执行破解过程,它会把破解的过程存到john.pot文件中,下次破解会先读取该文件,如果不想让它从这儿读取,而是从头跑,直接把它删掉就好了
--show 		显示已经破解出来的hash及所对应的明文密码
--users		只破解指定用户的hash,可以是用户名或者对应的uid
--groups	只破解指定用户组的hash,可以是组名或者对应的gid
--shells	只破解指定shell的hash,可以用逗号分隔多个shell程序
--format	指定要破解的hash所对应的加密类型,可以不用手工指定,john会自动识别
--stdout	从标准重定中接收指定字符

关于不同破解模式的官方介绍,如下,没事儿还是建议多看看官方文档,对你肯定会有很大的帮助:http://www.openwall.com/john/doc/MODES.shtml

Incremental模式详解

关于Incremental模式的一些默认破解规则,最大跑8位,为了节省时间,建议挨个字符集尝试,特别不建议一上来就给个特别大的范围,比如,all,机器性能不是太好的话,可能要跑很久:

破解模式的具体方法破解的密码长度所包含的字符
Incremental:all0-8All 95 printable ASCII characters
Incremental:all150-5All 95 printable ASCII characters
Incremental:all66All 95 printable ASCII characters
Incremental:all77All 95 printable ASCII characters
Incremental:all88All 95 printable ASCII characters
Incremental:alpha1-8A-Z 纯大写字母
Incremental:digits1-80-9 纯数字
Incremental:lanman0-7A-Z, 0-9, and some special characters 大写字母,数字加一些特殊字符

测试举例

暂以破解linux系统用户密码hash为例,我们需要先合并下linux系统中的用户/组和密码及hash的配置文件(实际中,你可以想办法直接把目标的账户hash文件先down下来,然后再在本地合并,另外,在john中有个比较好的地方,如果实在不知道某条hash的具体散列类型,直接在john后跟上要破解的hash即可,它会自动去识别出类型,然后先尝试简单模式,如果简单模式破不出来,会自动再用incremental):

./unshadow /etc/passwd /etc/shadow > user_hash.txtcat user_hash.txt

./unshadow /etc/group /etc/gshadow >> group_hash.txtcat group_hash.txt

实际测试用户

klion:x:1002:1002::/home/klion:
sec:x:1003:1003::/home/sec:
master:x:1004:1004::/home/master:
webadmin:x:1005:1005::/home/webadmin:
httpd:x:1006:1006::/home/httpd:
elk:x:1007:1007::/home/elk:/usr/sbin/noglogin

破解过程

破解linux系统用户的密码hash[新一点的发行版默认基本都是基于'sha512crypt'加密的],实际破解中,最好指定用户名,shell类型,以节省时间,接下来的演示中,为了能尽快演示给大家看到实际的破解效果,会尽量选择字典模式,实际破解中,按照下面的爆破顺序来就好了: 首先,使用默认的爆模式,它会先尝试single模式,然后再尝试incremental模式,直到把所有的规则都跑完,很显然,如果用户比较多,这样耗时必然就会很长,可以看到,由于我的密码设的都比较简单,所以瞬间就出来了,实际中可没那么轻松:

./john --user=klion,sec,1004,webadmin,httpd,1007 user_hash.txt

粗暴简单的爆破模式 [single],只爆破指定用户的hash(如果不手工指定hash类型,john会自动帮你识别,并提示你):

./john --single --user=klion,sec,1004,webadmin,httpd,1007 user_hash.txt

基于纯字典的爆破模式[wordlist,顾名思义,你需要事先精心准备好一个高质量字典,字典不用过大,可以多在质量上做些文章]:

john --wordlist=./weakpass.txt --users=elk,root user_hash.txt

只破解特定shell类型的用户hash,如果用户实在比较多,我们只需要破解那些可以登录到系统中的用户就好了,伪用户可以暂时不用管:

./john --wordlist=./weakpass.txt --shells=/usr/sbin/noglogin user_hash.txt

逐个遍历的爆破模式,这里暂以纯数字为例[incremental 实际破解速度可能会比较的慢,毕竟是一位位的猜解,组合比较多]:

./john --incremental:digits --users=webadmin user_hash.txt

显示已经破解出的hash:

./john --user=klion,sec,1004,webadmin,httpd,1007 user_hash.txt --show

破解实战

实际破解中推荐的爆破顺序,为了尽量节省爆破时间,可以自行尝试:

single模式 -> wordlist模式 -> incremental模式 -> 默认模式

破解最普通的md5

john --wordlist=weakpass.txt --format=Raw-MD5 hash.txt

破解 ntlm

可能是编译的时候,没把有些库加进去,导致john不支持NT2类型的hash,所以后面的掩饰就直接用win版的john代替了(实际测试的hash为2008r2系统用户的hash):

john --list=formats	查看john所支持的所有散列类型
john --wordlist=weakpass.txt --format=NT2 hash.txt

破解mssql 2012系列数据库用户hash

john --wordlist=weakpass.txt --format=mssql12 hash.txt

破解mysql 系列数据库用户hash

john --wordlist=weakpass.txt --format=mysql-sha1 hash.txt

破解oracle 11g 数据库用户hash

john --wordlist=weakpass.txt --format=oracle11 hash.txt

破解 postgresql 数据库用户hash

如果特意指定散列类型貌似不太好使,让它自动识别就好了,不知道今天什么情况,之前在centos7中用一直都没问题的呀

john --wordlist=weakpass.txt  hash.txt

破解office 系列加密后的hash(2016)

"c:\Program Files\python27\python.exe" office2john.py sec.docx >> office_hash.txt
type office_hash.txt
john --wordlist=weakpass.txt --format=office office_hash.txt

破解drupal7 用户密码hash

john --wordlist=weakpass.txt --format=drupal7 hash.txt

破解rar系列密码hash(rar和rar5的hash提取破解方法几乎是一模一样的)

rar2john.exe sec.rar > rar_hash.txt
type rar_hash.txt
john --wordlist=weakpass.txt --format=rar rar_hash.txt

rar2john.exe sec.rar > rar5_hash.txt
type rar5_hash.txt
john --wordlist=weakpass.txt --format=rar5 rar5_hash.txt

破解zip密码hash

zip2john.exe sec.zip > zip_hash.txt
type zip_hash.txt
john --wordlist=weakpass.txt --format=PKZIP zip_hash.txt

破解7z密码hash

可能提取脚本的问题,暂时没空管它,不过还有7z2hashcat.pl的脚本(运行时候可能需要你自己装一些perl模块)可以直接转成hashcat识别的格式,大家可以试试

"c:\Program Files\python27\python.exe" 7z2john.py sec.7z
john --wordlist=weakpass.txt --format=7z 7hash.txt

破解pdf密码hash

可能又是脚本的问题,哪天闲下来了统一搞下吧,看样子,脚本估计没几个能用的

"c:\Program Files\python27\python.exe" security-geek-2016-A.pdf > pdf_hash.txt
type pdf_hash.txt
john.exe pdf_hash.txt

这里跟pgsql一样,不用特意指定类型,暂时还不知道是什么毛病

破解wpa/wpa2hash

直接从标准输出中读取密码然后挨个尝试

john --stdout --incremental:all | aircrack-ng -b 目标ap的mac -w - wpa2*.cap

参考连接

https://countuponsecurity.files.wordpress.com/2016/09/jtr-cheat-sheet.pdf

http://msu-nftc.org/courses/intro/material/9 Password Cracking/Tools/John the Ripper.pdf

总结

作为john的入门使用,到这里基本就差不多了,确实非常简单,里面所支持的散列类型这里就不一一演示了,破解方式几乎都是一样的,关键是知道各种爆破模式的工作细节和各类hash的提取方法,这才是今天要关注的重点,关于自定义规则后续有空会再单独说明,它比hashcat唯一好一点的是,如果你不指定目标的hash类型它会自动匹配,但实际破解中跟hashcat还是有着比较大差距的[就免费版来说],估计专业版应该会好很多吧,反正我自己没用过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值