实验简介
本实验旨在通过实际操作,掌握常见哈希算法(如 MD5、SHA-1、SHA-256)的生成方法,并使用 hash-identifier 工具对哈希值进行识别。同时,了解不同哈希算法输出长度的区别,以及如何批量识别多个哈希值。实验还进一步探讨了加盐哈希的生成与识别,分析 hash-identifier 在面对加盐哈希时的局限性。
技能增长
通过本次实验的学习,能掌握在 Kali Linux 环境下使用命令行生成 MD5、SHA-1、SHA-256 哈希值的方法并学会使用 hash-identifier 工具识别未知哈希算法类型。
预备知识
常见的哈希算法
-
MD5(Message Digest Algorithm 5): MD5是最常见的哈希算法之一,产生一个128位的哈希值。然而,由于其存在碰撞攻击的风险,现在通常不推荐用于安全敏感的应用场景。
-
SHA家族(Secure Hash Algorithm):
SHA-1:产生160位的哈希值。尽管曾经非常流行,但由于发现了理论上的碰撞攻击方法,其安全性已经受到质疑。
SHA-2:包括了不同长度的变种,如SHA-256、SHA-384和SHA-512等。其中,SHA-256生成256位的哈希值,是目前比较常用的安全哈希算法之一。
SHA-3:作为SHA-2的后续者,虽然SHA-2依然被认为是安全的,但SHA-3提供了一种不同的设计以应对未来可能的威胁。它支持多种输出长度,如224、256、384或512位。
加盐哈希在密码存储中的作用
防止彩虹表攻击:通过为每个密码添加随机生成的盐值,使得使用预先计算的彩虹表进行哈希逆向工程变得无效。
增加破解难度:盐值的存在增加了密码的复杂度,即使两个用户使用相同的密码,它们的哈希值也会不同,从而增加了暴力破解的难度和时间。
确保唯一性:每个用户的密码都加上了独特的盐值,保证了即使是相同的密码,其存储的哈希值也是独一无二的,增强了安全性。
实验环境
主机名:kali 用户名/密码:root/随机
IP地址:192.168.0.3
实验操作
进入kali虚拟机,执行echo -n "password123" | md5sum |awk '{print $1}' >/md5.txt命令使用MD5哈希算法将password123的哈希值写入md5.txt文件中(awk '{print $1}' 可以确保只有哈希值被写入md5.txt文件中,而不会包含后面的 - 或任何其他多余的信息。)
执行echo -n "password123" | sha1sum |awk '{print $1}' >/sha1.txt命令使sha1哈希算法将password123的哈希值写入sha1.txt文件中
执行echo -n "password123" | sha256sum |awk '{print $1}' >/sha256.txt命令使sha256哈希算法将password123的哈希值写入sha256.txt文件中
从哈希值输出的结果可以看出,不同哈希算输出的长度不一致,MD5生成的是128位(16字节)的哈希值;SHA-1生成的是160位(20字节)的哈希值;SHA-256生成的是256位(32字节)的哈希值。下面将使用hash-identifier工具对各种不同哈希算法所输出的哈希值进行判别,执行hash-identifier命令启动工具,成功将哈希值482c811da5d5b4bc6d497ffa98491e38判定为MD5哈希算法
再次将sha1.txt文件中的哈希值复制到hash-identifier工具hash栏中,成功判别为sha1哈希算法
最后将sha256.txt文件中的哈希值复制到hash-identifier工具hash栏中,成功判别为sha256哈希算法
这样一个个执行过于重复,下面将多个hash值进行批量判别。执行echo -e "482c811da5d5b4bc6d497ffa98491e38\ncbfdac6008f9cab4083784cbd1874f76618d2a97\nef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f" >/hashes.txt命令将多个hash值写入hashes.txt文件中
执行vim /batch_hash-identifier.sh命令创建sh文件,并将以下命令写到sh文件中。下面代码实现了逐行读取hashes.txt文件中的每个hash值,然后使用hash-identifier进行识别分析。(注意:hashes.txt文件内的哈希值可以自定义)
while read hash; do
echo "Analyzing: $hash"
echo "$hash" | hash-identifier
done < hashes.txt
执行chmod 755 /batch_hash-identifier.sh命令修改文件权限(注意:当前用户一定要具备该文件的执行权限)
执行sh /batch_hash-identifier.sh命令执行脚本,成功识别多个hash值
接下来进行加盐哈希识别,运行mkpasswd工具执行mkpasswd --method=md5 password命令使用MD5算法生成一个密码的哈希值,并生成一个随机盐值。
执行hash-identifier命令对md5加盐哈希进行识别分析,成功识别是md5算法
mkpasswd 是一个命令行工具,通常用于生成用户密码哈希。它支持多种哈希算法,包括 bcrypt。下面将使用mkpasswd工具对sha256哈希算法生成加盐哈希值,运行mkpasswd工具执行mkpasswd --method=sha-256 password命令使用sha256算法生成一个密码的哈希值,并生成一个随机盐值。
执行hash-identifier命令对sha-256加盐哈希进行识别分析,无法识别,从中可以看出hash-identifier 主要设计用于识别标准的未加盐哈希值(如纯 MD5、SHA-1、SHA-256 等),而不是专门针对加盐哈希的复杂格式。对于加盐哈希,尤其是那些具有特定格式标记(如 $1$、$5$)的哈希,如果 hash-identifier 没有相应的模式匹配规则,则无法正确识别。
特别声明:
此文章仅供参考,如用作非法交易造成一定损失或触犯法律,作者一概不负!!!!! 请勿用于非法途径,仅供参考。传送门 -----------> 《中华人民共和国网络安全法》