实验概述
1. 实验目的
当客户端和服务器通过互联网通信时,它们会受到MITM攻击(即中间人攻击,Man-In-The-Middle Attack)。攻击者可以拦截来自客户端的请求,修改数据并发送修改后的请求给服务器。在这种情况下,服务器需要验证收到的请求的完整性。这个验证请求完整性的标准方法是向请求附加一个名为 MAC (即消息认证码,Message Authentication Code)的标签。
计算 MAC 的方法有很多,但是有些方法不安全。计算 MAC 的一种简单方法是将密钥和消息连接到一起,并计算合并后字符串的单向哈希值。这种方式会使得攻击者在不知道密钥的情况下,依然能够通过修改消息验证成功,也就是它会受到长度扩展攻击。
本次实验通过4个小任务达到以下两个目的。
-
掌握 Hash 函数的计算原理和算法特点
-
了解 Hash 长度扩展攻击的工作原理
推荐阅读:关于单向哈希函数的一些详细介绍可以参考以下链接
2. 实验内容
本次实验来自于https://seedsecuritylabs.org/Labs_20.04/Crypto/Crypto_Hash_Length_Ext/,共需要完成如下4个小任务。通过这4个任务完成对一个服务器网站的 Hash 扩展攻击,并对 Hash 扩展攻击进行防御验证。
-
任务1:发送请求来列出所有文件
-
任务2:创建Padding
-
任务3:长度扩展攻击
-
任务4:使用 HMAC 来抵御长度扩展攻击
3. 实验环境
本次实验基于预先创建的Ubuntu 20.04虚拟机,实验室的环境已经安装部署好。如果自行安装也可以从SEED的网站上下载(默认密码是dees)。
需要为此实验创建一个web服务器。客户端可以向此服务器发送命令列表,对于每个请求,必须附加基于密钥和命令列表计算得到的 MAC 。如果 MAC 验证成功,那么服务器将执行命令列表中的命令。使用虚拟机主机作为客户端,并且将web服务器置于容器中。