赞
踩
介绍:本文展示了密码存储原理及通过Kali使用Hashcat工具进行密码攻击的流程(也可以在windows系统中下载metasploit工具进行相关操作),工具详细教程可在Sangfor学习平台获取临时免费课程进行学习。
挂个链接:深信服产业教育中心
一.密码存储
1.明文存储
以普通文本等明文的方式保存数据(账号密码等)的存储方式,以数据库为例,虽然对用户而言很方便,但是一旦被黑客攻击后脱库,信息就完全泄露给黑客了,安全性极低。
2.加密存储
加密存储即字面意思,存储使用加密算法加密后的数据信息。加密算法分为对称加密算法和非对称加密算法,常用为对称加密算法,加密算法的原理是通过一个系统密钥对用户信息进行加密,但是这个系统密钥也是问题所在,如果系统密钥泄露,黑客能够通过系统密钥解密用户的信息。
3.Hash存储
Hash存储是利用单项散列(杂乱拼凑)函数对用户信息进行运算的,得到的hash值(指纹)存储在数据库中。较加密存储的好处是不需要再保管系统密钥,而且攻击者无法通过hash值逆向推算用户加密的数据信息。
Hash函数的特性,以 H(x)=h 关系式为例:
①固定长度的输出,函数H(x)的输入可以是任意长度,但是h的输出是固定长度的,即将任意长度的输入消息映射成一个固定长度的较短的哈希值
②单向性:已知x,要算出h比较容易,但是已知h,要逆向推算出H(x)是不可行的,个人认为这个和上面的输入输出有关。
③弱碰撞自由性:已知x,要找出y(y≠x)然后使得H(y)=H(x)是不可能的,个人认为和上面第一点的输入输出有关(这或许就是杂乱拼凑的含义关键)
④强碰撞自由性:任意选出两个x和y,使得H(y)=H(x)在计算上是不可行的
强弱碰撞自由性的区别:二者并非矛盾,弱碰撞自由性的意思是给定一个值x,在满足H(x)=H(y)的条件下想要找到另外一个y是不可能的,而强碰撞自由性的意思是要找到任意两个x和y去满足H(x)=H(y)也是不可能的。
常见的hash函数算法:
MD5
SHA系列(SHA-1,SHA-224,SHA-256等等)
二.密码攻击
概念:获取目标数据信息加密后的hash值或者密文,然后使用方法进行解密获取明文的过程。
攻击(破解)方式:
1.暴力攻击(Brute Force Attack):尝试对所有可能的密钥组合进行相同的hash运算,并将计算结果与与目标密钥的hash值进行对比,若相同则破解成功,这个方式的缺点是花费时间实在过长。
2.字典攻击(Dictionary Attack):提前构建一个"明文-密文"对应的数据库(类似于字典那种的),获取到密文后直接通过字典查找相关明文。这个方式在使用时时间比暴力攻击快很多,但是缺点是需要花费空间去存储这个字典(实际字典列表都比较长)
3.彩虹表攻击(Rainbow Table Attack):在字典攻击的基础上改进,以时间换空间,因为彩虹表攻击是根据目标的hash值来与彩虹表中存储的hash值比较,而字典攻击则是比较字符串(明文-密文)来进行比较。
防御方式——hash加盐法
字典攻击和彩虹表攻击之所以有效,是因为每一个密钥都是使用一样的运算方式来进行hash运算的,意思是使用同一个密钥的两个用户,他们的hash运算方式是一样的,密钥hash值也一定属于一类,破解一个就能破解另外一个
加盐法的思路是给hash值再加一个随机的前缀或后缀,增加hash值的复杂度,降低使用相同密钥的用户hash值被同时破解的可能性。加盐后相同密钥运算出的hash值每次也都是不同的值。
hash加盐法密钥加密存储和对比过程
Hashcat工具介绍
Hash作为目前常用的密码恢复工具之一,现在作为免费软件发布。支持多种常用的操作系统和散列算法,如MD4,MD5,SHA,Microsoft LM等等,此外还支持多种运算核心(CPU,GPU这些)。
Hashcat使用流程
1.Kali中启动Hashcat
2.hash常用选项参数:
(1)-a //指定破解模式
①-a 0 //Straight(字典破解)
②-a 1 //Combination(组合破解)
③-a 3 //Brute-force(掩码暴力破解)
④-a 6 //Hybrid Wordlist+Mask(混合式,字典加掩码破解)
注:这里的掩码指的是hashcat的掩码字符集,具体情况如下:
(2)-m //指定加密类型
①-m 900 //MD4
②-m 0 //MD5
③-m 100 //SHA1
④-m 1300 //SHA2-224
⑤-m 1400 //SHA2-256
⑥-m 10800 //SHA2-384
⑦-m 1700 //SHA2-512
⑧-m 10 //MD5($pass.$salt)
⑨-m 20 //MD5($salt.$pass)
⑩-m 3800 //MD5($salt.$pass.$salt)
此外还有-m 3000 //Microsoft LM,-m 1000 //NTLM 等等
(3)-o //将输出结果存储到指定文件
(4)--force //忽略告警信息
(5)--show //仅显示已经破解的hash和其对应的明文
(6)--increment //启用增量破解模式,可以利用此模式让hashcat在指定的密码长度范围内进行破解。
(7)--increment-max //密码最大长度,配合increment一起使用
(8)--increment-min //密码最小长度,同上
(9)--outfile-format //指定破解结果的输出格式id,默认是3
(10)--uesrname //忽略hash文件中的指定的用户名(在破解linux系统账户密码hash的时候可能会用到)
(11)--remove //删除已经破解的hash
(12)-r //自定义破解规则
Hashcat使用实例
1.Hashcat字典破解(-a 0)
本例使用单个字典对一个经过MD5加密算法加密过后的hash值进行破解
hashcat -a 0 -m 0 e10abc3949ba59abbe56e057f20f883e /usr/password.txt
输入命令回车后显示界面如下:
这个password.txt是自己收集的字典并存放到/usr目录下,这个需要自行收集,否则直接输入命令回车会破解失败,因为找不到password.txt
2.Hashcat组合破解(-a 1)
hashcat -a 1 -m 100 7ce0359f12857f2a90c7de465f40a95f01cb5da9 /usr/p1.txt /usr/p2.txt
3.Hashcat掩码暴力破解(-a 3)
①在管理员终端命令行界面启动Metasploit,也可在漏洞利用工具集里直接打开
②在msf终端下输入以下命令查找ms17-010的相关模块
search ms17-010
③在msf终端下输入以下命令对是否存在ms17-010漏洞进行检测
use auxiliary/scanner/smb/smb_ms17_010 //使用smb17_010模块
至此不再延申,因为在下发现了更方便好用的工具(后续会出该工具完整教程)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。