文章目录
一、密码存储的基本方式
- 明文存储:将用户密码以普通文本的方式保存在数据库字段中。
- 加密存储:一般常用的是对称加密方法,该方法使用系统密钥对所有用户密钥进行加密。这种方法的关键在于系统密钥的安全性,如果系统密钥泄露,所有用户的密钥将变得不安全。
- hash存储:利用单项散列(杂凑)函数对用户密钥进行运算得到hash值(指纹)并存储在数据库中。与加密存储相比,这种方法的好处在于不需要存储和保护系统密钥,且攻击者无法通过hash值逆向计算出用户密钥的明文。目前最常用的密码存储方式就是hash存储。
常用的Hash算法:
- MD5
- SHA系列(主要包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512)
二、密码攻击概述
(1)密码攻击概念
在已经获取目标密钥hash值或加密后的密文的情形下,利用某种方式还原出明文的过程。
(2)密码攻击的一般方法
-
暴力攻击
尝试对所有可能的密钥组合进行相同的hash运算,并将计算结果与目标密钥的hash值进行对比,对比结果一致则破解成功。 -
字典攻击
提前构架一个"明文- > 密文"对应关系的一个大型数据库(字典),破解时通过密文直接反查明文。
-
彩虹表攻击
在字典法的基础上改进,以时间换空间。常用的彩虹表
(3)哈希加盐法——抵抗字典和彩虹表攻击
字典和彩虹表之所有有效,是因为每一个密钥都是通过同样的方式来进行hash运算。如果两个用户使用同样得密钥,那么他们的密钥hash值也一定相同。
哈希加盐法的思想:每次给密钥一个随机的前缀或后缀,然后进行hash运算。这个随机的前缀或者后缀称为"盐"(salt)。通过加盐,相同的密钥每次hash的结果都是完全不一样的字符串。
三、hashcat
hashcat支持的散列算法有Microsoft LM哈希、MD4、MD5、SHA系列、Unix加密格式、Mysql和Cisco PIX等。
常用参数选项:
注意:
- 若对已经破解的密码进行再次破解,则会显示"ALL hashes found in profile", 可直接在原命令末尾加上
--show
参数直接显示已经破解的原文。hashcat.potfile
文件中记录了近期hashcat破解的所有hash值和密码明文的对应关系,其所在路径为~/.hashcat/hashcat.potfile
。
四、Hydra的基本使用
Hydra
(九头蛇)是一个相当强大的暴力密码破解工具。该工具支持几乎所有协议的在线密码破解,如FTP、HTTP、HTTPS、MySQL、MS SQL、Oracle、Cisco、IMAP和VNC等。Hydra能够在Linux、Windows、Cygwin、Solaris11、FreeBSD8.1、OpenBSD、OSX、QNX/Blackberry上测试和编译。
4.1 常用参数选项:
4.2 利用Hydra进行密码攻击的一般步骤
- 选择目标:输入目标地址,可选:单独IP、CIDR、文档中的列表;
- 选择协议:输入要爆破的协议,如ftp://等,需要开始之前探测服务;
- 检查参数。
4.3 Hydra实例1——爆破FTP服务器登陆密码(已知用户名)
Hydra命令:hydra -l li -P /usr/password.txt ftp://[靶机IP]
-l
:使用登录名进行登录;
-P
:使用密码字典进行破解。
破解结果:用户名li的密码为45。
4.4 Hydra实例2——爆破FTP服务器的用户名和密码
命令:hydra -L /usr/username.txt -P /usr/password.txt ftp://192.168.40.144
或者hydra -C /usr/u_and_p.txt ftp://192.168.40.144
-C
:当用户名和密码存储在一个文件时使用此参数。
五、Crunch
Crunch
是一种创建密码字典的工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕、保存到文件或另一个程序。
5.1 Crunch命令格式
crunch <min-len> <max-len> [<charset string>] [options]
min-len(必选)
:表示最小长度字符串。max-len(必选)
:表示最大长度字符串。charset string (可选)
:字符集设置,默认是小写字符集。options(可选)
:选项参数
常用选项参数:
5.2 Crunch实例
命令如下:crunch 2 2 -f /usr/share/crunch/charset.lst numeric -o /usr/password.txt
-f /usr/share/crunch/charset.lst
从/usr/share/crunch/charset.lst指定字符集。
说明:关于字符集的名称与格式,可参考/usr/share/crunch/charset.lst文件内容:
六、漏洞扫描工具
AWVS、Nikto、OWASP ZAP
七、webshell管理工具
菜刀、蚁剑、Weevely