口令破解
#口令安全威胁、口令安全概述
现在很多地方都以用户名(账号)和口令(密码)作为鉴权的方式,口令(密码)就意味着访问权限
口令(密码)就相当于进入你家门的钥匙,当他人有一把可以进入你家的钥匙,想想你的安全、你的财务、你的隐私。
口令安全现状
弱口令
类似于123456、654321、admin123等这样的弱密码。
默认口令
很多应用或者系统都存在默认口令,比如phpstudy的mysql数据库默认账密[root/toor],Tomcat管理控制台默认账密[tomcat/tomcat]等
明文传输
比如HTTP|FTP|TELNET
等服务,在网络中传输的数据流都是明文的,包括口令认证信息等。这样的服务,有被嗅探的风险
破解方式
在线破解方式
账密,需要认证
用户名未知,密码未知
用户名已知,密码未知
用户名未知,密码已知
hydra
-l 指定一个用户名
-p 指定一个密码
-P 指定密码字典
-L 指定用户名字典
-vV 显示爆破细节
-o 保存爆破结果
-f 找到正确的密码就停止爆破
-e
n null
s same
r 反向
-t 线程
离线破解方式
密文还原成明文的过程
暴力破解
暴力破解就是利用所有可能得到的字符组密码,去尝试破解
这是最原始,粗暴的破解方式,根据运算能力,如果能够承受的起事件成本的话,最终一定会爆破出密码。下表时根据不同位数生成密码的空间大小。
字符集 密码位数 密码空间
[0-9] 8 位 10^8==100000000
[0-9][a-z] 8 位 36^8=2821109907456
[0-9][a-z] 1-8 位 ??
[ceunch 1 8 abcdefghijklmnopqrstuvwxyz0123456789]
字典破解
如果能够通过比较合理的条件,筛选或者过滤掉一些全自付组合的内容,就会大幅降低爆破的成本
我们把筛选出的密码组合成特定的字典。在用字典爆破密码也是可以的,但是这样做有可能会漏掉真正的密码。密码字典大致分为以下几类。
#弱口令字典
比如123456,admin 等这样的默认口令或弱口令
#社工字典
人们在设置密码的时候,往往为了便于记忆,密码的内容和组合会与个人信息有关,比如常见的密码组合"名字+生日"
[zhangsan1992]
社工字典更具针对性,准确率也比较高
我们可以根据个人信息生成密码字典。可以使用cupp工具
[zhangsan|ajest|19920701|dnsec|123]
#字符集字典
如果能确定密码的字符集合,也大大降低爆破的成本
windows口令破解
#windows口令远程爆破
[hydra -l administrator -P ../dic/pwd.dic 172.16.132.163 smb]
windows账户hash值破解
除了可以从远程爆破windows密码,我们还可以在本地破解windows 密码 本地windows账户破解主要有两种方式
crunch
是一种创建密码字典的工具,按照指定的规则生成密码字典,可以灵活的定制自己的字典文件
使用crunch工具生成的密码可以输出到屏幕,保存文件或领一个程序
尤其在渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。
安装
基础环境
[kali-linux-2019.2-vbox-amd64]
下载地址
[https://sourceforce.net/projects/crunch-wordlist/]
kali
crunch 为kali自带的工具,以下命令均在kali下直接运行
[crunch]
查看帮助
[man crunch > crunch.help]
文件内容在文档末尾
命令格式
crunch <min-len> <max-len> [<charset string>] [options]
参数说明
min-len 设定最小字符串长度(必选)
max-len 设定最大字符串长度(必选)
charset string 字符串
options
-b 指定文件输出的大小,避免字典文件过大
-c 指定文件输出的行数。即包含密码的个数
-d 限制相同的元素出现的次数
-e 定义停止字符,即到该字符串就停止生成
-f 调用库文件(/usr/share/crunch/charset.lst)
-i 改变输出格式,即aaa,aab -> aaa,baa
-l 通常与-t联合使用,表明该字符串为实意字符
-m 通常与-p搭配
-o 将密码保存到指定文件
-p 指定元素以组合的方式进行
-q 读取密码文件,即读取pass.txt
-r 定义重某一个字符串重新开始
-s 指定一个开始的字符,即从自己定义的密码xxxx开始
-t 指定密码输出的格式
-u 禁止打印百分比(必须为最后一个选项)
-z 压缩生成的字典文件,支持gzip,bzip2,lzma,7z
特殊字符
% 代表数字
^ 代表特殊符号
@ 代表小写字母
, 代表大写字母
查看库文件
[cat /usr/share/crunch/charset.lst]
密码字典
#生成密码字典
生成1-8位密码字典,字符合集位为小写字母,从a开始到zzzzzzzz结束
[crunch 1 8]
生成1-6位密码字典,字符合集位[abcdefg],从a开始到gggggg结束
[crunch 1 6 abcdefg]
生成3位的密码字典,字符集合为[ab],从a开始到[b]结束
生成指定字符串,比如生日的日期
[crunch 8 8 -t 199307%% -e 19930730]
生成元素的组合,比如123.com
[crunch 7 7 -t %%%.com -s 111.com -e 123.com]
在字典中输出特殊字符
[crunch 3 3 abc -t @@@ -l @aa]
以元素组合生成字典
[zhangsan|1993|0701]
[crunch 4 4 -p ajest 1992 0701]
保存字典文件
[crunch 11 11 -t 1700010%%%% -b 20mb -o START]
自定义字符合集
将自带自检文件进行备份
创建自定义字符集合
使用自定义字符集合
使用自定义字符集合生成[*.com]字典文件
[crunch 5 5 -f charset.lst test -t @.com]
简单介绍字典
子域名字典
默认账号密码字典
文件路径字典
日志文件
web目录
常用变量名字典
常用文件名字典
弱口令字典
windows口令破解
#windows口令远程爆破
[hydra -l amdinistrator -P ../dic/pwd.dic 172.16.132.163 smb]
windows账户hash值破解
除了可以远程爆破windows密码,我饿么还可以在本地破解windows密码。本地windows账户破解主要有两种方式
从内存中读取windows密码我们可以使用getpass直接从windows系统内存中读取账户密码
windows hash值破解一共需要两步操作。首先我们使用QuarkPwDump工具读取(导出)windows账户密码hash值,然后再使用john工具破解
linux口令破解
linux
口令破解也分远程破解与本地破解。远程破解主要是爆破ssh服务,属于在线密码攻击,本地破解需要拿到linux的shadow文件,进行hash值破解,属于密码攻击
破解SSH 服务
我们使用hydra攻击破解ssh服务,hydra攻击已经自动集成在kali虚拟机中,命令如下
[hydra -l root -P ../dic/pwd.dic 172.16.132.160 ssh]