网络安全 网络传输
深入的传输层和链接层
计算机系统通常需要与其他系统进行通信;这是通过将它们置于同一网络上来实现的。有许多不同的技术可以使计算机在不同类型的网络上进行通信。在本节中,我们将深入探讨大多数网络中使用的协议。
我们使用的网络由多个协议组成,其中一些在本课程中有所介绍。网络中还有许多其他协议在使用,所有这些协议都有可能带来安全风险。
TCP (“传输控制协议”)
就像 IP 使用 IP 地址进行寻址一样,TCP 和 UDP 也使用端口。端口,表示为 0 到 65535 之间的数字,决定了哪个网络服务应该处理请求。
在下面的图片中,我们可以看到一个 TCP 数据包,以及任何人在网络上检查流量时会看到它的样子。
我们可以看到图形显示了源端口和目标端口各 16 位,UDP 也一样。序列号和确认号用于三次握手和可靠地传输数据。我们还可以看到用于指示数据包类型的控制位。其他头部也起着重要作用,但超出了安全课程的范围。
TCP 三次握手
TCP 使用三次握手来允许两个系统进行通信。握手使用 32 位 PRNG(“伪随机数生成器”)数字来建立握手。握手强制双方都打算进行通信。
这是一张说明图
TCP 如何进行通信的说明
- 客户端通过发送一个头部中的控制位 SYN 设置的数据包来启动通信,在序列号字段中包含一个 PRNG 数字,并指定目标端口。网络层(第 3 层)允许数据包发送到远程系统。此数据包称为 SYN 数据包。
- 服务器接收数据包,读取来自客户端的序列号并构造响应。响应在确认字段中包含客户端的序列号加上 1。此外,响应包含 SYN 和 ACK 控制位,序列号设置为服务器的 PRNG 数字。此数据包称为 SYN/ACK 数据包。
- 客户端接收 SYN-ACK 数据包,并为了完成握手,返回一个设置了 ACK 控制位的数据包。最后一个数据包还通过在头部的确认字段中返回服务器的 PRNG 数字来确认它。
这个过程通常被称为 SYN、SYN/ACK、ACK 三次握手。
在下面的图片中,我们可以看到两个主机正在执行三次握手:
屏幕截图显示了使用 Wireshark 工具捕获和检查数据包。Wireshark 是一个非常有用的实用工具,因为它允许我们可视化数据包并进行更深入的检查。屏幕截图显示了代表三次握手的 3 个数据包。注意源列和目标列,它们代表正在通信的两个方。Info 字段显示源端口和目标端口,包括(方括号内)SYN、SYN/ACK 和 ACK。
下一个屏幕截图显示了三次握手后各方之间通信的数据。TCP 数据包中的数据在图片底部附近被高亮显示。
截图显示了一条发给 W3School 学生的问候。您能看到它吗?
欺骗流量
如今,网络对任何人以他们想要的方式创建数据包几乎没有任何限制。任何人都可以创建具有任意头部字段值的任意数据包。这被称为欺骗,允许攻击者代表他人发送流量。
TCP 在协议中内置了安全性,但这依赖于 PRNG(“伪随机数生成器”)数字生成器的强度。如果通信双方的序列号可以被猜测,TCP 的安全性可能会受到损害,因为攻击者可以通过 TCP 进行欺骗通信。
许多协议很容易被欺骗,但 TCP 提供了一些抵抗能力。UDP 和 ICMP 等协议不提供类似的保护。
欺骗数据包通常由具有 root / 系统权限的攻击者执行,即操作系统上的最高权限。原因是操作系统强制使用 API,迫使用户遵守 RFC(“请求意见书”)中指定的通信规则。如果攻击者没有最高权限,他们将无法在网络上创建自己的数据包。
UDP (“用户数据报协议”)
UDP 用于不需要 TCP 的弹性和安全性的流量,通常是 VOIP 等应用程序,但在现代世界中,越来越多的应用程序使用 UDP 来支持具有内置弹性和安全性的快速数据包传输,这些功能已集成到 OSI 模型的更高层;QUIC 就是一个例子。
查看 UDP 头部,我们可以看到相同的源端口和目标端口,但没有序列号或控制位。该协议的开销少得多,从而实现了更快的数据传输。
由于 UDP 没有三次握手等功能,UDP 很容易被欺骗。
交换式网络
系统通过交换机连接到 LAN(“局域网”)。交换机使用 MAC(“媒体访问控制”)地址进行寻址,而不是更广为人知的 IP 地址。交换机在局域网上传输流量,例如您的家庭网络或组织内的分支机构。MAC 地址被设计为唯一的,但只要管理员有权限,任何人都可以更改他们的 MAC 地址。
MAC 地址由 6 个八位字节定义,例如:FC:F8:AE:12:34:56
前三个八位字节代表制造通信设备的组织,称为 OUI(“组织唯一标识符”)。上面的 MAC 地址分配给了 Intel 公司。您可以在许多地方搜索 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 的其他系统通信。