密码攻击

一、密码存储与密码攻击概述

1.密码储存的基本方法

1.1 明文储存

​ 将用户密钥以普通文本的方式保存在数据库字段中,对用户来说很方便,但这种方法的安全性最低因为所有的密钥保存为普通文本(明文),如果数据库受到黑客攻击(被“脱库”),黑客将很容易获得用户的密钥。

1.2 加密储存

​ 一般常用的是对称加密方法,该方法使用系统密钥对所有用户密钥进行加密。这种方法的关键在于系统密钥的安全性,如果系统密钥泄露,所有用户的密钥将变得不安全!

1.3 Hash储存

​ 利用单项散列(杂凑)函数对用户密钥进行运算得到Hash值(指纹)并存储在数据库中。与第二种方法相比,这种方法的好处是不需要存储和保护系统密钥,且攻击者无法通过Hash值逆向计算出用户密钥的明文。

​ 因此,目前最常用的密码存储方法为Hash存储。

Hash函数H(x)的特性

  • 固定长度的输出:函数H(x)的输入可以是任意长度,而输出是固定长度
  • 单向性:已知x,求h=H(x)较为容易:但若已知h,求使得H(x)=h的x在计算上是不可行的。
  • 弱碰撞自由性:已知x,找出y(y≠x)使得H(y)=H(x)在计算上是不可行的。
  • 强碰撞自由性:找出任意两个不同的输入x、y,使得H(y)=H(x)在计算上是不可行的。

常用的Hash函数(算法)

  • MD5
  • SHA系列(主要包括SHA-1、SHA-224、SHA-256、SHA-384和SHA-512)

2.密码攻击

2.1 概念

​ 在已经获取目标密钥Hash值或加密后的密文的情形下,利用某种方式还原出目标密钥的明文的过程。

2.2 攻击方法

  • 暴力攻击(Brute Force Attack)

    • 尝试对所有可能的密钥组合进行相同的Hash运算,并将计算结果与目标密钥的Hash值进行比对,比对结果一致则破解成功。
    • 特点:时间成本高。
  • 字典攻击(Dictionary Attack)

    • 提前构建一个“明文->密文”对应关系的一个大型数据库(字典),破解时通过密文直接反查明文。
    • 特点:存储一个这样的数据库(字典),空间成本高。
  • 彩虹表攻击(Rainbow Table Attack)

2.3 抵抗攻击的方法

  • 哈希加盐法(HASH+SALT)——用于抵抗字典及彩虹表攻击的方法

    字典和彩虹表的方式之所以有效,是因为每一个密钥的都是通过同样的方式来进行Hash运算的。如果两个用户使用同样的密钥,那么他们的密钥Hash值也一定相同。
    哈希加盐法的思想是:每次给密钥加一个随机的前缀或后缀,然后再进行Hash运算。这个随机的后缀或者前缀称为“盐”(salt)。通过加盐,相同的密钥每次Hash的结果都是完全不一样的字符串。

二、密码攻击工具

1.Hashcat

​ Hashcat是自称世界上最快的密码恢复工具,它在2015年之前拥有专有代码库但现在作为免费软件发布。

​ Hashcat支持的散列算法有Microsoft LM哈希、MD4、MD5、SHA系列Unix加密格式、MySQL和Cisco PIX等

1.1 常用选项参数

  • -a //指定破解模式

  • -m //指定Hash类型(默认MD5)

  • -o //将输出结果储存到指定的文件

  • --force //忽略警告信息

  • --show //仅显示已经破解的Hash及其对应的明文

  • --increment //启用增量破解模式,可以利用此模式让Hashcat在指定的密码长度范围内执行破解过程

  • --increment-min //密码最小长度,配合increment模式一起使用

  • --increment-max //密码最大长度,同上

  • --outfile-format //指定破解结果的输出格式id,默认是3

  • --username //忽略hash文件中的指定的用户名,在破解linux系统用户密--码hash可能会用到

  • --remove //删除已被破解成功的hash

  • -r //使用自定义破解规则

1.2 Hashcat的破解模式(-a选项指定)

  • -a 0 Straight (字典破解)
  • -a 1 Combination (组合破解)
  • -a 3 Brute-force (掩码暴力破解)
  • -a 6 Hybrid Wordlist + Mask (字典+掩码破解)
  • -a 7 Hybrid Mask + Wordlist(掩码+字典破解)

1.3 Hashcat的Hash类型(-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 LM
  • -m 1000 NTLM

1.4 Hashcat的掩码字符集

  • ?l 小写字母(abcdefghijklmnopqrstuvwxyz)
  • ?u 大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ)
  • ?d 十进制数字(0123456789)
  • ?h 十六进制数字,字母小写(0123456789abcdef)
  • ?H 十六进制数字,字母大写(0123456789ABCDEF)
  • ?s 特殊字符(!”#$%& '()*+,-./:;<=>?@[\]^`~)`
  • ?a 相当于?1?u?d?s,即键盘上所有可见的字符
  • ?b 0x00 -0xff

1.5 运用实例

  • 八位数字密码:?d?d?d?d?d?d?d?d
  • 八位未知密码:?a?a?a?a?a?a?a?a
  • 前四位为大写字母,后四位为数字:?u?u?u?u?d?d?d?d
  • 前三个字符未知,中间为admin,后三位未知:?a?a?aadmin?a?a?a
  • 6-8位数字密码:--increment--increment-min 6--increment-max8 ?d?d?d?d?d?d?d?d
  • 6-8位数字+小写字母密码:--increment--increment-min 6--increment-max 8 ?h?h?h?h?h?h?h?h

2.Hydra

​ Hydra(九头蛇)是一个相当强大的暴力密码破解工具。该工具支持几乎所有协议的在线密码破解,如FTP、HTTP、HTTPS、MySQL、MS SQL、Oracle、Cisco、IMAP和VNC等。

2.1 常用选项参数

  • -h 显示帮助信息

  • -l 指定单个用户名,适合在知道用户名的情况下爆破密码时使用

  • -L 指定多个用户名,参数值为存储用户名的文件(字典)的路径(建议为绝对路径)

  • -p 指定单个密码,适合在知道密码的情况下爆破用户名时使用

  • -P 指定多个密码,参数值为存储密码的文件(字典)的路径(建议为绝对路经

  • -C 当用户名和密码存储到一个文件时使用此参数。注意:文件(字典)存储的格式必须为“用户名:密码”的格式

  • -M 指定多个攻击目标,此参数为存储攻击目标的文件路径(建议为绝对路径)。注意:列表文件存储格式必须为"地址:端口"

  • -s 指定端口,适用于攻击目标端口非默认的情况,例如http服务使用非80端

  • -t 指定爆破时的任务数量(可以理解为线程数),默认为16

  • -v/-V 显示爆破的详细信息

  • -o 将破解成功的结果输出到文件中

2.2 进行攻击的一般步骤

  1. 选择目标:输入目标地址,可选:单独IP、CIDR、文档中的列表
  2. 选择协议:输入需要爆破的协议,如ftp://等,需要开始之前探测服务
  3. 检查参数:假如爆破需要加入额外的参数则添加即可

3.Crunch

3.1 命令格式

crunch <min-len> <max-len> [<charset string>] [options]

命令参数说明

  • min-len(必选):字符串的最小长度
  • max-len(必选):字符串的最大长度
  • charset string(可选):字符集设置,默认是小写字符集
  • options(可选):选项参数

3.2 常用选项参数

  • -b 指定文件输出的大小,避免字典文件过大

  • -c 指定文件输出的行数,即包含密码的个数

  • -d 限制相同元素出现的次数

  • -e 定义停止字符,即到该字符串就停止生成

  • -i 改变输出格式,即aaa,aab ->aaa,baa

  • -o 将密码保存到指定文件

  • -p 指定元素以组合的方式进行

  • -q 读取密码文件,即读取pass.txt

  • -s 指定起始字符串

  • -t 指定密码输出的格式

    • % 代表数字

    • ^ 代表特殊符号

    • @ 代表小写字母

    • , 代表大写字母

  • -f 调用库文件/usr/share/crunch/charset.lst

posted @ 2024-07-29 09:47  pppppx  阅读(86)  评论(0)    收藏  举报