声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。
前言
虽然弱口令yyds,但是随着安全意识的提升,在授权渗透测试过程中,用常规字典爆破出密码口令的概率已经越来越小了。
基于此,本文做了点工作来更新一下密码爆破字典。
不想看过程的话直接跳到最后就能白嫖字典了。
正文
密码强度
爆破密码不可能不管三七二十一,直接扔字典上去跑。首先要测试它的密码强度要求
一般可以分为:
要求 | 条件 | 强度 |
---|---|---|
无要求 | X条件 | X |
6位数字 | 单条件 | ⭐ |
6位数字+字母(无大小写要求) | 双条件 | ⭐⭐ |
6位数字+大小写字母 | 三条件 | ⭐⭐⭐ |
8位数字+字母(无大小写要求) | 双条件 | ⭐⭐⭐ |
8位数字+大小写字母 | 三条件 | ⭐⭐⭐⭐ |
8位数字+字母(无大小写要求)+特殊字符 | 三条件 | ⭐⭐⭐⭐ |
8位数字+大小写字母+特殊字符 | 四条件 | ⭐⭐⭐⭐⭐ |
需要注意的是,这里的6/8位是指至少是6/8位。一般情况下,如果要求是至少6位,那边密码大概率在6-9位之间,而如果要求是至少8位的话,就很有可能出现密码长度比较的情况了。
后面将根据每种情况生成对应的字典。
字符组合
所谓弱口令,即常见字符的各种组合。
常见字符这里,可能第一想到的就是123456 、111111、888、666、admin、password、aaa这种高频口令,当然实际中最多的也是这种。但是我们同样应该关注的是键盘组合。
所谓键盘组合,即键盘上相邻位置或者紧挨着的字符,以及紧挨着的数字、紧挨着的字母以及紧挨着的特殊符号的排列组合,常见的比如:
1qaz2wsx
、1qaz!QAZ
、1q2w3e
、1234QWER
、-pl,0okm
、asd123
、asd123!@#
、asdjkl123
等等。
每个人的精力都是有限的,如果一个不重要的网站要求你输入8位以上满足三条件的密码,你会怎么设置呢?(暂不考虑社工)
1qaz!QAZ
、123qwe!@#
、asd123!!
、asd123!@#
、!QAZ2wsx
、!QAZxsw2
是不是很大一部分都是这种。
还有一种拼音组合,根据我们的使用习惯,加入一些常见拼音也是很重要的,比如:
woaini
、hahaha
、mima
等等。
最后,我们再将高频口令、键盘组合、拼音组合 根据长度、强度要求,进行杂糅组合,就可以生成一份比较不错的字典了。
字典生成
好了,现在已经知道了常见的字符组合形式,开始着手生成我们的字典了。
数据来源:
所有原始数据均来自于 github以及在线网站https://weakpass.com/ ,该网站囊括了小到几百KB,大到几十G,各种类型的字典。
在这些原始数据的基础上,按照上面的形式进行归类、提取、组合,生成我们需要的字典:
-
高频口令:直接整合历年的top级别弱口令,去重
-
键盘组合:首先根据键盘相邻的顺序,生成一组dict,例如<q,a>,<q,w>,<1,2>,<!,@>, 再遍历字符串中的每个字符,判断它与它后面的一个字符是否在这组dict中,当至少n-2个字符满足此条件,就认为这是一个键盘组合。
-
拼音组合:首先建立一个拼音字典,然后在字符串中提取所有字母,然后判断这些字母是否是拼音。(只提取字母判断是因为我们把类似
woaini123
、520aini..
也视为拼音组合)
提取出来之后,整合在一起,然后再根据长度、复杂度要求,将密码字典分为如下几类:
-
数字+字母(无大小写要求)——8位及以下
-
数字+字母(无大小写要求)——8位及以上
-
数字+大小写字母
-
数字+字母(无大小写要求)+特殊符号
-
数字+大小写字母+特殊符号
-
all-top (数字或字母的高频口令)
所有处理代码放知识星球了,如果你有自己的字典库,可以通过代码将其进行筛选,然后扩充到本字典里。
分类之后,再将各类按频率排序,生成各类型的top字典,频率排序这里我用的是Linux中的sort指令
>sort top.txt | uniq -c | sort –rn
结合社工
最后,当通用的字符组合字典爆破不出来的话,我们就要考虑结合社工信息进行测试了。
社工信息可能大家听的最多的就是姓名、手机号、出生日期、邮箱、QQ等。当然,这些都是挺好的关键字,但是如果我们只有一个后台登录框,没有用户敏感信息呢?
这时候网站的名称(包括全拼、首字母缩写、大小写形式)、域名、企业名称等等也是很好的社工关键字。
将这些社工信息结合常见字符,进行组合,即为社工字典,github上有很多社工字典生成工具,如果收集到了比较多的社工信息,可以去用那些工具生成。
这里需要说明的一点是,假如只有很有限的社工关键字,比如网站的名称、域名,这里更推荐直接将社工关键字插入到现有的字典最前面或者最后面,以此来生成一份新的字典。
结果
公众号中回复“字典”,获取最新字典,最后处理之后的结果:
处理脚本需要的可以去星球看看:
最后
感兴趣的小伙伴可以关注公众号回复“加群”,添加Z2OBot 小K自动拉你加入Z2O安全攻防交流群分享更多好东西。
也可以加入我们的QQ交流群:
原文始发于微信公众号(Z2O安全攻防):该更新一下你的密码字典了