TCP/IP 协议是否提供了一种可靠的方法来确定实际发送者是谁?

信息安全 ip tcp MAC地址
2021-08-27 11:14:26

所以我只是使用一个名为 PacketFu 的 Ruby 库来探索TCP/IP 协议,在我看来,在每个数据包中,都可以设置以下所有内容

  • 源 IP
  • 目标 IP
  • 源 MAC 地址
  • 目标 MAC 地址

和一大堆其他的东西。

这是我的问题:

是什么阻止我嗅探网络,获取其他人的ip/MAC 地址,然后冒充他们发送数据包,并在互联网上奔跑,将我所有的错误行为(假设我是恶意行为)归咎于凭据的所有者我正在使用?

1个回答

普通的低级别攻击者(即他们家中的人)无法有效地欺骗他们的 IP 地址来进行 TCP 连接,因为他们不会收到答案。请记住,IP 根据目标地址路由数据包,因此如果您发送带有虚假源地址的数据包,它可能仍会到达目的地。有些路由器可能会因为看到一个带有“不可能”源地址的数据包而感到生气,就像当你看到一个朋友从假期回来时晒黑了,他声称他在英国,那么你就不会t真的相信他。但是,数据包很有可能会到达目的地。

但是,任何答案都将转到所谓的源地址,而不是真实的。攻击者不会看到响应,因此必须盲目工作。这对 TCP 来说是一个挑战,因为三次握手:为了建立连接,客户端必须能够向服务器发送回一个“ACK”数据包,其中包含服务器在其“SYN”中发送回的序列号+确认”。该序列号是随机选择的,作为 32 位整数;现代操作系统现在使用相当强大的(不可预测的)随机数生成器(参见RFC 1948)。这意味着我们的欺骗攻击者只有大约 40 亿分之一的机会来做对。

底线是,当 TCP 连接实际建立时,服务器有一些相当强的保证,无论它正在与之交谈的人都可以看到服务器发送到所谓的客户端 IP 地址的数据包。因此,只有在您非常接近所谓的 IP 地址所有者(在同一个子网/WiFi 接入点上),或者您在服务器和所谓的IP地址。后一种情况意味着你是一个相当严重的攻击者,而不仅仅是他地下室里的任何脚本小子。

MAC 地址纯粹是本地的:它们无关紧要,并且不会在本地子网之外传输。远程服务器不会看到它。更改 MAC 地址仅对欺骗使用 MAC 过滤的本地交换机和接入点有用。