1. 哈希长度延展攻击的机制
哈希长度延展攻击利用的是哈希函数如MD5和SHA-1的特性。当计算哈希时,如果攻击者知道原始数据的哈希值但不知道原始数据内容,他们仍然可以在原始数据后添加一些数据,并且能计算出新数据串的哈希值,而不需要知道原始数据是什么。
对于MD5哈希函数,攻击者利用的关键是这种函数使用内部状态,这个状态在处理完所有数据后就是最终的哈希输出。如果攻击者知道一个哈希值(即内部状态),他们可以“接上”新的数据,仿佛这些新数据是紧跟在原始数据之后的。
2. 使用工具或脚本进行攻击
要进行长度延展攻击,我们可以使用像hashpump
这样的工具。hashpump
接受一个已知的哈希值、已知数据、附加数据和已知数据的长度,然后输出新的哈希值和附加后的完整数据。
例如,假设我们有以下信息:
- 命令
cmd=viewfile
的哈希值h
- 原始数据长度(注意这通常指密钥加原始数据的总长度)
- 想要添加的命令
rm
使用hashpump
的命令行可能是这样的:
hashpump -s [原始哈希h] --data "viewfile" --signature [h] --append "rm" --keylen [密钥长度]
这将输出一个新的哈希值和构造的完整命令,即cmd=viewfile||padding||rm
。
3. 攻击方法、工具和结果说明
- 攻击方法:使用了MD5哈希长度延展攻击,通过
hashpump
工具来生成附加了删除文件命令的新哈希值。 - 工具说明:
hashpump
是一个广泛使用的工具,专门用于生成哈希长度延展攻击所需的数据。它输出修改后的数据和对应的新哈希值。 - 构造的命令和新的签名:这将依赖于
hashpump
提供的具体输出,包括新的命令串和相应的哈希值。
通过这种方式,即使不知道密钥k
,也可以创建一个有效的命令来删除文件。