如何拦截文件传输通信并发送不同的文件?

时间:2014-01-08 19:26:33

标签: security networking digital-signature file-transfer

这是一个我无法解决的面试问题:

您有客户端和服务器。客户端可以将文件发送到服务器,服务器执行该文件。这是通信协议:

  1. 客户端向服务器发送HELLO命令
  2. 服务器向客户端发送质询
  3. 客户端发送文件,文件的哈希,挑战和挑战的哈希值。
  4. 服务器验证质询和文件是否与客户端发送的哈希值匹配,并发送OK / Error验证验证是否成功。
  5. enter image description here

    第三方可以拦截通信并更改消息。作为第三方,您的工作拦截通信并发送不同的文件,但您不知道哈希算法。

    这里有哪些可能的解决方案?

    我想到的是尝试学习哈希算法,但他们说这太复杂了,并且有一种更简单的方法。

1 个答案:

答案 0 :(得分:3)

如果你可以捕获两个连接(同时或连续),那么你的行为如下:

  • 在第一次连接期间,MITM将其假文件作为挑战发送给客户端。客户端返回伪文件的哈希值。现在必须中断连接以避免服务器或客户端日志中的不必要条目(如果让过程继续,则会发生这种情况)。

  • 由于我们中断了第一次连接,客户端将重新连接。在这个阶段,MITM让客户端获得真正的挑战,并将新的挑战,其哈希和客户端文件及其哈希发送给MITM。 MITM将文件及其哈希值替换为第一次尝试时获取的伪文件和假哈希,并将所有内容发送到服务器。

此方案要求(a)客户端可以处理大文件作为质询(即,它没有固定大小的缓冲区或长度检查),(b)如果客户端将重新连接,则客户端将重新连接第一个连接被删除,(c)我们可以让有关已断开连接的条目进入服务器或客户端日志。

要求" a"似乎非常严重,在现实环境中,输入参数(例如挑战)的有效性检查是强制性的。