最近SVN升级管理工具,希望给用户一个更好的体验,就是把用户的密码破解之后自动导入到新系统中(注:管理员知道所有人的密码,只是数量大,不想一个一个找和对应),而不是让用户重置密码,于是在CLF的建议下尝试了John(http://www.openwall.com/john/),调研了一下,发现这个工具是目前开源领域除了GPU破解工具cudaHashCat(http://hashcat.net/oclhashcat/)之外最好的工具了,在给定词表的情况下瞬间就可以将用户名和密码对应上,对于不知道的密码则会进入爆破流程 — 后者并非我需要的功能,但是确实是可以工作的。
网上多数教程都是传授简单的使用,但是John的强大之处在于配置文件,大体研究了一下,发现John很强大 – 用户平常想到的一些密码生成方式John都已经变成规则了。John大体有4种破解模式:1、简单规则式破解;2、词表模式3、扩展模式4、外部模式。
Jumbo版本默认的配置文件自带了大约200条简单规则,千余条常见密码(据说有几十MB常见密码文件可以下载)和大约几百条扩展模式规则和自定义代码。摘录一些规则,自己看看是否中枪了:
一、简单模式(和用户名相关,约200条规则,摘录一些)
1、密码=用户名
2、密码=用户名大写或者小写
3、密码=用户名中部分字母大写,部分小写
4、密码=用户名的简单复制,”Fred” -> “FredFred”
5、密码=用户名反转,”Fred” -> “derF”,同时大小写可以变化
6、密码=用户名反射,”Fred” -> “FredderF”
7、密码=用户名字母左右转动,"jsmith" -> "smithj"
8、密码=用户名单复数、时态(ed和ing)变化
9、密码=用户名加上数字、字母、符号前缀
10、密码=用户名加上响应后缀
11、密码=用户名中去掉元音字母
12、密码=用户名中将y变成ie,或者反过来,e.g. mary –> marie
13、密码=用户名中删除部分字符和数字,包括年份
14、密码=用户命中加入“.”
……
经验就是密码要和用户名一点儿关系也没有,否则死无葬身之地
二、词表模式(和词表相关,约70条规则,摘录一些)
1、所有单词大写和小写
2、部分字母小写
3、基本上类似简单模式的各种各样变换…
……
经验是别使用大众化的密码,想想一个几十MB的文件能有多少常见密码,而且还在被每年更新
三、扩展模式(太复杂,非英文字符也会被处理,没有仔细研究)
到底什么才是安全的,我理解需要给出足够复杂的密码,让John计算不出来
但是John是可以被分布化的,由于无需MR,以往很多人做过MPI和OpenMP的实现,下表是已经有人做过的事情,这个事情其实并不难做,John的计算是可以按照不同的规则分开的,当然计算需要共享内存以便避免重复计算,这对代码或许有些改动
但是可能由于道德或者其他因素,并没有人将John作为一种服务放到AWS上,相反,反而看到有人曾经搞过一个Cloud Crack Service,用于破解WIFI密码,计划使用AWS的GPU虚拟机;还有人用AWS的虚拟机部署Hashcat来破解密码,也是利用GPU。
是不是看到了一线商机?
相关信息:
- http://www.openwall.com/john/
- http://hashcat.net/oclhashcat/
- http://openwall.info/wiki/john/parallelization
- http://openwall.info/wiki/john/tutorials
- 史上最牛的密码破解软件John the Ripper中文说明(一般)
- 另外一个中文说明(不全)
- http://www.openwall.com/john/doc/RULES.shtml
- GECOS和GCOS
- http://www.zdnet.com/researcher-uses-aws-cloud-to-crack-wi-fi-passwords-3040091430/
- http://du.nham.ca/blog/posts/2013/03/08/password-cracking-on-amazon-ec2/