- A+
小胖子 (z7y首席代言人,园长的表哥...) | 2015-07-31 15:04
前言:随着各大厂商对于口令安全的逐步重视,不论在互联网行业还是传统行业,典型性弱口令已经逐步减少,123456是否会真的退出历史舞台。
那我们讲字典规则定义为几大块:%username%\%domain%\%number%
分解一下:
%username%就是用户名
在做登陆尝试的时候将用户名作为密码的一部分,在平时测试时,规则模块多用于fuzz,并非精细化单人逐个测试,所以如果生成单人针对性字典还是尝试http://zone.wooyun.org/content/21193 工具比较好,因为用户名比如@浩天 可以有很多种haotian\ht\haot\htian等。
%domain%就是公司域名
很多大公司员工会将公司品牌名称或者公司域名作为密码的一部分,甚至多数公司的初始密码,针对domain的处理需要人工细化,自动化最多只能完成全称处理,比如,jingdong,从WooYun: 大公司诟病系列#1 重置京东任意用户密码 案例可以看出,用360buy和jd和jingdong的都有,属于全称型,但是类似其他案例,比如www.kingdee.com 使用kingdee的能自动化处理,但也会有使用jindie,kd,jd等作为密码部分,并不能进行模块化的很好的处理,需要人工加以指定。
%number%就是乱七八糟的数字
什么?密码必须8位数以上?必须包含大小写?必须包含数字?此时数字的作用就显得非常重要了。什么奔放型数字比如123,什么年月型数字比如2015,什么搞基型数字比如520,所以数字在尝试字典中必不可少。
那怎样的定义会让效率更高呢,那需要对密码进行分析。我们且看如下几个例子。
http://zone.wooyun.org/content/17555
http://zone.wooyun.org/content/21881
在处理%username%和%domain%的时候,语言为我们提供了很多很好的函数库,比如PHP提供了ucfirst函数,Python提供了capitalize函数,那为什么要首字母大写呢?因为在分析密码得知,当系统要求密码组合必须包含大写字母时候,中国人密码设定习惯,会有83%的人将大写字母,且是唯一存在的大写字母放在第一位。
所以,在对%username%和%domain%处理时候,还要生成%username2%和%domain2%
废话完了之后,剩下的就是规则了,不管你用何种语言,用何种方式或者接口来实现,你需要定义或者得到一个最基本的参数,那就是%domain%,username最好在同一模块处理。
例如http://zone.wooyun.org/content/20976 可以修改代码,让密码不用为txt字典,而用%username%即时生成。
%username%
%username%1
%username%12
%username%123
%username%123
%username%12345
%username%123456
%username%1234567
%username%12345678
%username%123456789
%username%520
%username%521
%username%5201314
%username%2012
%username%2013
%username%2014
%username%2015
%username%2016
%username%_2012
%username%_2013
%username%_2014
%username%_2015
%username%_2016
%username%321
%username%@123
%username%123!@#
%username%!@#123
%username%666
%username%888
%username%@1
%username%..
%domain%
%domain%1
%domain%12
%domain%123
%domain%1234
%domain%12345
%domain%123456
%domain%1234567
%domain%12345678
%domain%123456789
%domain%520
%domain%521
%domain%5201314
%domain%2012
%domain%2013
%domain%2014
%domain%2015
%domain%2016
%domain%_2012
%domain%_2013
%domain%_2014
%domain%_2015
%domain%_2016
%domain%321
%domain%@123
%domain%123!@#
%domain%!@#123
%domain%666
%domain%888
%domain%@1
%domain%..
%username%@%domain%
%domain%%username%
%username%@%domain%2012
%username%@%domain%2013
%username%@%domain%2014
%username%@%domain%2015
%username%@%domain%2016
首字母大写的%username2%和%domain2%参照相同规则。
最终:大致保持在,每个username尝试密码次数在100-200次之间,是效率与命中率最好的区间。如果需要生成字典,将123、2015类似数字字段用%number%数组或列表代替即可。
右下角有感谢按钮,不谢!
$("img").load(function(){ if($(this).attr("width")>640) $(this).attr("width",640); });