网络安全网络传输

深入的传输和链路层

计算机系统经常需要与其他系统通信; 这是通过将它们放在同一个网络上来完成的。 有几种不同的技术使计算机能够通过不同类型的网络进行通信。 在本节中,我们将深入探讨大多数网络中使用的协议。

我们使用的网络由多种协议组成,其中一些是本课程的特色。 网络中还使用了许多其他协议,所有这些协议都可能存在与之相关的安全风险。


TCP("传输控制协议")

就像 IP 使用 IP 地址进行寻址一样,TCP 和 UDP 使用端口。 端口(用 0 到 65535 之间的数字表示)指示应由哪个网络服务处理请求。 

在下图中,我们可以看到一个 TCP 数据包,以及它对于任何检查网络流量的人的外观。

TCP Header

我们可以看到源端口和目标端口都显示为 16 位的图形,这与 UDP 相同。 序列号和确认号用于三次握手并可靠地传输数据。 我们还可以看到用于指示数据包类型的控制位。 其他标头也起着重要作用,但在安全课程之外。


TCP 3 次握手

TCP 使用三次握手来允许两个系统进行通信。 握手使用 32 位 PRNG("伪随机数生成器")数字来建立握手。 握手强制双方打算进行通信。

这里有一张图来说明:

TCP Handshake

TCP 如何参与通信的解释:

  1. 客户端通过发送一个数据包来启动通信,该数据包的标头中设置了控制位 SYN,序列号字段中的 PRNG 编号和目标目标端口。网络层(第 3 层)允许将数据包发送到远程系统。此数据包称为 SYN 数据包。
  2. 服务器接收到数据包,从客户端读取序列号并做出响应。响应使用添加了数字 1 的客户端的 Sequencer 编号设置确认字段。此外,响应包含控制位 SYN 和 ACK 设置,并且序列号设置为服务器 PRNG 号。此数据包称为 SYN/ACK 数据包。
  3. 客户端收到 SYN-ACK 数据包并完成握手返回一个设置了 ACK 控制位的数据包。最后的数据包还通过在标头的确认字段中返回来确认来自服务器的 PRNG 编号。

此过程通常称为 SYN、SYN/ACK、ACK 3 次握手。

在下图中,我们可以看到两个主机执行 3 次握手:

Handshake in Wireshark

屏幕截图显示了用于捕获和检查数据包的工具 Wireshark。 Wireshark 是一个非常好的实用程序,因为它允许我们可视化数据包并更深入地检查它们。 屏幕截图显示了代表 3 次握手的 3 个数据包。 注意代表通信双方的源和目标列。 Info 字段显示源和目标端口,包括(在方括号内)SYN、SYN/ACK 和 ACK。

下一个屏幕截图显示了 3 次握手后各方之间正在传递的数据。 TCP 数据包内的数据已在图片底部附近突出显示。

TCP Data

上面的屏幕截图显示了给学生的消息。 你能看到吗?



欺骗流量

当今网络几乎没有限制,任何人都可以根据需要创建数据包。 任何人都可以创建数据包,并将标头的任何字段设置为他们想要的任何值。 这称为欺骗,允许攻击者代表他人发送流量。

Spoofing

TCP 在协议中内置了安全性,但它依赖于 PRNG("伪随机数生成器")数字生成器的强度。 如果可以猜出通信方的序列号,就可以危及 TCP 的安全性,因为攻击者可以通过 TCP 进行欺骗性通信。

许多协议很容易被欺骗,但 TCP 提供了一些弹性来应对这种情况。 UDP 和 ICMP 等协议不提供类似的保护。

欺骗数据包通常由具有根/系统功能的攻击者完成,即操作系统的最高权限。 原因是操作系统强制使用 API,这迫使用户遵守 RFC("征求意见")中指定的通信规则。 如果攻击者没有最高权限,他们将无法在网络上制作自己的数据包。


UDP("用户数据报协议")

UDP 用于不需要 TCP 的弹性和安全性的流量,通常是 VOIP 等应用程序,但在现代世界中,更多的应用程序正在使用 UDP 来支持快速数据包传输,并将弹性和安全性内置到更高级别的 OSI模型; QUIC 就是一个例子。

查看 UDP 标头,我们可以看到使用相同的源端口和目标端口,但没有序列号或控制位。 该协议的开销要少得多,从而可以更快地传输数据。

UDP Header

由于 UDP 没有 3-Way-Handshake 等功能,UDP 很容易被欺骗。


交换网络

系统通过交换机连接到 LAN("局域网")。 交换机使用 MAC("媒体访问控制")地址进行寻址,而不是更知名的 IP 地址。 跨局域网(即您的家庭网络或组织的分支机构)转发流量。 MAC 地址被设计为唯一的,但任何人只要拥有管理员权限就可以更改其 MAC 地址。

6个八位组定义的MAC地址,例如:FC:F8:AE:12:34:56

前三个八位字节代表制造通信设备的组织,称为 OUI("组织唯一标识符")。 上述 MAC 地址分配给英特尔公司。 您可以在很多地方搜索 MAC 地址,例如:https://www.adminsub.net/mac-address-finder/intel。

最后三个八位字节由制造商确定。


ARP

ARP("地址解析协议")是允许计算机系统知道哪个 MAC 地址属于哪个 IP 地址的协议。 如果必须路由流量,计算机系统会将流量转发到系统上配置的默认网关。

ARP 与 DNS 一样,是一种将一个地址解析为另一个地址的协议。 每次系统尝试与 LAN 上的 IP 地址通信时,它都会检查其 ARP 缓存以查看最近是否已解决。

您可以检查自己的 ARP。 只需在 Linux 或 Windows 上运行命令 arp -a。 这揭示了您的系统最近与哪些系统进行了通信。

Alice:有谁知道 192.168.10.10 的 MAC 地址吗?
Bob:当然是 Alice,这是我的 MAC 地址。

VLAN("虚拟局域网")

VLAN,通常称为专用 VLAN,是交换机在帧中嵌入标签(或 VLAN ID)的一种方式。 然后,多个交换机可以确保 LAN 上的计算机系统只能与某些其他系统通信,即具有相同 VLAN ID 的其他系统。