问题概述

  1. 破译如下8位小写字母加数字的口令(SHA1(passwd)):
    eb1d44e685e37f25e877d11f2c557ddc76ae9269(7h9eez0y)
    bdba993c7b4b1f5f407f9e24483a407ed85cbc3a(qsqq1wz9)

  2. 破译如下3位数字salt,6位小写字母的口令(SHA1(passwd+salt))
    a65493b136d58e1051fe83d3d975c745ff9edda2(cdopyq912)

分析

原理(无salt)

  1. SHA1算法原理:对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输过程中,数据很可能会发生变化,此时就会产生不同的消息摘要。对于任意长度的明文,SHA1首先对其进行分组,使得每一组的长度为512位然后对这些明文分组重复处理。对于每个明文分组的摘要生成过程如下:
    (1)将512位的明文分组划分为16个子明文分组,每个子明文分组为32位。
    (2) 申请5个32位的链接变量,记为A、B、C、D、E。
    (3)16份子明文分组扩展为80份。
    (4)80份子明文分组进行4轮运算。
    (5) 链接变量与初始链接变量进行求和运算。
    (6) 链接变量作为下一个明文分组的输入重复进行以上操作。
    (7) 最后,5个链接变量里面的数据就是SHA1摘要。

  2. 破译方法及原理:
    利用hashcat进行**。Hashcat包含的破译的密码类型多,正确率很高,是一个实用的密码破译工具,且可将GPU利用起来,这也提高了运算的速度。破译的原理主要是通过**进行碰撞比较,匹配出相应的明文。密码破译的成功率主要取决于字典和采取的攻击模式组合。字典很重要,一个好的字典可以轻松破译出几十万甚至上百万密码口令,但同时需要结合规则模式、掩码模式等。

破译过程(无salt)

(1)eb1d44e685e37f25e877d11f2c557ddc76ae9269破译(无salt)
命令行指令如下图,“-a 3”使用掩码攻击,“-m 100”sha1类型,定义字符集为小写字母与数字的8位随机组合。
彩虹表破译 | Hashcat

破译结果如下,口令为7h9eez0y,共计用时28分05秒。
彩虹表破译 | Hashcat

(2)bdba993c7b4b1f5f407f9e24483a407ed85cbc3a破译(无salt)
命令行指令如下图。“-a 3”使用掩码攻击,“-m 100”sha1类型,定义字符集为小写字母与数字的8位随机组合。
彩虹表破译 | Hashcat
破译结果如下图,解密得,qsqq1wz9。共计用时14分20秒。

彩虹表破译 | Hashcat

原理(有salt)

加盐的实现过程通常是在需要散列的字段的特定位置增加特定的字符,打乱原始的字符串,使其生成的散列结果产生变化。对于用户使用的密码经过SHA1散列后得出的结果,由于密码位数不够长,该结果很容易被彩虹表**,因此要在用户的密码中添加特定的字符串,从而改变散列结果。

Salt的作用:只需要salt是随机的,那么就可以使攻击者无法事先知道salt是什么,无法查表和彩虹表。不同系统的salt是不一样的,甚至是动态的,那么使攻击者陷入只能穷举的境地。

破译方法及原理:
仍旧利用hashcat进行**。破译的原理是通过**进行碰撞比较,匹配出相应的明文。

破译过程(有salt)

彩虹表破译 | Hashcat

破译结果为cdopyq912,运行时间为40秒。

彩虹表破译 | Hashcat

报错处理

使用hashcat破译sha1类型口令。过程中出现的问题如下:

  1. 错误信息:Custom-charset 1 is undefined.
    定义字符集之后仍提示未定义,检查后发现命令行指令错误将“1”与“l”混淆。
    彩虹表破译 | Hashcat

  2. 错误信息: Temperature limit on GPU #3 reached, aborting…
    **过程中GPU温度过热,被迫中止,之后采取**一段时间暂停一下,之后再继续**的方式来防止温度过高。
    彩虹表破译 | Hashcat

相关文章: