身份认证
– 禁止明文传输密码
– 每次认证使用HASH算法加密密码传输(HASH算法加密容易、解密困难)
– 服务器端用户数据库应加盐加密保存
破解思路
– 嗅探获取密码HASH
– 利用漏洞登陆服务器并从用户数据库获取密码HASH
– 识别HASH类型
长度、字符集
– 利用离线破解工具碰撞密码HASH
优势
– 离线不会触发密码锁定机制
– 不会产生大量登陆失败日志引起管理员注意
HASH识别工具
– hash
‐identifier
– Hashid
– 可能识别错误或无法识别
Hashcat
开源多线程密码破解工具 支持80多种加密算法破解 基于CPU的计算能力破解
– 0 Straight:字典破解
– 1 Combination:将字典中密码进行组合(1 2 > 11 22 12 21)
– 2 Toggle case:尝试字典中所有密码的大小写字母组合
– 3 Brute force:指定字符集(或全部字符集)所有组合
– 4 Permutation:字典中密码的全部字符置换组合(12 21)
– 5 Table-lookup:程序为字典中所有密码自动生成掩码
常用参数
-a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。
-m 指定要破解的hash类型,如果不指定类型,则默认是MD5
-o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中
--force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项
--show 显示已经破解的hash及该hash所对应的明文
--increment 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程
--increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用
--increment-max 密码最大长度,同上
--outfile-format 指定破解结果的输出格式id,默认是3
--username 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到
--remove 删除已被破解成功的hash
-r 使用自定义破解规则
– ?l = abcdefghijklmnopqrstuvwxyz
– ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
– ?d = 0123456789
– ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
– ?a = ?l?u?d?s
– ?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