身份认证

– 禁止明文传输密码
– 每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
– 服务器端用户数据库应加盐加密保存

破解思路

– 嗅探获取密码HASH
– 利用漏洞登陆服务器并从用户数据库获取密码HASH
– 识别HASH类型
长度、字符集
– 利用离线破解工具碰撞密码HASH

优势

– 离线不会触发密码锁定机制
– 不会产生大量登陆失败日志引起管理员注意 

HASH识别工具

– hash
‐identifier
– Hashid
– 可能识别错误或无法识别

Hashcat

开源多线程密码破解工具 支持80多种加密算法破解 基于CPU的计算能力破解

  1. 0 Straight:字典破解
  2. 1 Combination:将字典中密码进行组合(1 2 > 11 22 12 21
  3. 2 Toggle case:尝试字典中所有密码的大小写字母组合
  4. 3 Brute force:指定字符集(或全部字符集)所有组合
  5. 4 Permutation:字典中密码的全部字符置换组合(12 21
  6. 5 Table-lookup:程序为字典中所有密码自动生成掩码

常用参数

  1. -a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1 组合攻击;“-a 3”掩码攻击。
  2. -m 指定要破解的hash类型,如果不指定类型,则默认是MD5
  3. -o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中
  4. --force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项
  5. --show 显示已经破解的hash及该hash所对应的明文
  6. --increment 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程
  7. --increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用
  8. --increment-max 密码最大长度,同上
  9. --outfile-format 指定破解结果的输出格式id,默认是3
  10. --username 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到
  11. --remove 删除已被破解成功的hash
  12. -r 使用自定义破解规则
  13. ?l = abcdefghijklmnopqrstuvwxyz
  14. ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  15. ?d = 0123456789
  16. ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  17. – ?a = ?l?u?d?s
  18. – ?b = 0x00 - 0xff

详细使用:https://xz.aliyun.com/t/4008
– hashcat -b
– hashcat -m 100 hash.dump pass.lst
– hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d
– 结果:hashcat.pot
– hashcat -m 100 -a 3 hash -i —increment-min 6 —increment-max 8 ?l?l?l?l?l?l?l?l