跳到主要内容

3. The Internet Threat Model (互联网威胁模型)

3. The Internet Threat Model (互联网威胁模型)

Threat Model (威胁模型) 描述的是假定攻击者能够对资源动用的能力. 它应包含攻击者在信息, 计算能力以及对系统的控制等方面可用资源等信息. 威胁模型的目的有两方面. 首先, 我们希望识别所关心的威胁. 其次, 我们希望明确将某些威胁排除在范围之外. 几乎每一个安全系统在面对足够坚定且资源充足的攻击者时都存在脆弱性.

互联网环境具有相当明确的威胁模型. 一般而言, 我们假定参与协议交换的端系统本身未被攻陷. 当某一端系统已被攻陷时, 要防护攻击极其困难. 然而, 可以设计协议以在这些情况下将损害程度降到最低.

相比之下, 我们假定攻击者对端系统借以通信的通信信道拥有近乎完全的控制. 这意味着攻击者可以读取网络上的任何 PDU (Protocol Data Unit, 协议数据单元), 并能在不被察觉的情况下从线路上删除, 更改或注入伪造分组. 这包括能够生成看似来自受信任机器的分组. 因此, 即便你希望通信的端系统本身是安全的, 互联网环境也不能保证声称来自该系统的分组确实来自该系统.

务必理解, PDU 的含义在不同层次上并不相同. 在 IP 层, PDU 指 IP 分组. 在 TCP 层, 指 TCP 段. 在应用层, 指某种应用 PDU. 例如, 在电子邮件层面, 可能指 RFC-822 消息或单条 SMTP 命令. 在 HTTP 层面, 可能指请求或响应.

3.1. Limited Threat Models (受限威胁模型)

如前所述, 资源丰富且坚定的攻击者可以控制整个通信信道. 然而, 大量攻击可以由资源较少的攻击者发起. 若干已知攻击只需攻击者对网络拥有有限控制即可实施. 例如, 口令嗅探攻击可以由仅能读取任意分组的攻击者发起. 这通常称为 Passive Attack (被动攻击) [INTAUTH].

相比之下, Morris 的序列号猜测攻击 [SEQNUM] 可以由能够写入但不能读取任意分组的攻击者发起. 任何要求攻击者向网络写入数据的攻击都称为 Active Attack (主动攻击).

因此, 组织攻击的一种有用方式是按实施攻击所需能力划分. 本节的其余部分描述这些类别并给出每类的若干示例.

3.2. Passive Attacks (被动攻击)

在被动攻击中, 攻击者从网络读取分组但不写入. 实施此类攻击最简单的方式是与受害者位于同一 LAN. 在包括 Ethernet, 802.3 与 FDDI 在内的多数常见 LAN 配置中, 线路上的任何机器都可以读取发往同一 LAN 上任何其他机器的所有流量. 注意, 交换式集线器使此类嗅探困难得多, 因为发往某机器的流量只送到该机器所在的网段.

同样, 控制两台受害者机器之间通信路径上某台主机的攻击者可以对它们的通信实施被动攻击. 也可以通过攻陷路由基础设施来刻意安排流量经过被攻陷的机器. 这可能包括对路由基础设施的主动攻击, 以便对受害者机器实施被动攻击.

无线通信信道值得特别考虑, 尤其是随着基于无线的 LAN (例如使用 802.11 者) 近来日益普及. 由于数据只是在众所周知的无线电频率上广播, 攻击者只需能够接收这些传输. 此类信道特别容易遭受被动攻击. 尽管许多此类信道包含密码保护, 其质量往往很差, 近乎无用 [WEP].

一般而言, 被动攻击的目标是获取发送方与接收方希望保密的私有信息. 该私有信息可能包括电子世界中有用的凭证, 以及/或者外部世界中有用的口令或凭证, 例如机密商业信息.

3.2.1. Confidentiality Violations (违反机密性)

被动攻击的经典示例是从线路上嗅探某些本质上私有的数据. 例如, 尽管 SSL 已广泛可用, 许多信用卡交易仍以明文穿越互联网. 攻击者可以嗅探此类消息并恢复卡号, 进而用于欺诈交易. 此外, 机密商业信息常常以明文电子邮件在网络上传输.

3.2.2. Password Sniffing (口令嗅探)

被动攻击的另一示例是 Password Sniffing (口令嗅探). 口令嗅探旨在获取对资源的未授权使用. 许多协议, 包括 [TELNET], [POP] 与 [NNTP], 使用共享口令向服务器认证客户端. 常常, 该口令以明文经通信信道从客户端传到服务器. 能够读取该流量的攻击者因此可以捕获口令并重放 (Replay) 它. 换言之, 攻击者可以向服务器发起连接, 冒充客户端并使用捕获的口令登录.

注意, 尽管登录阶段是主动的, 实际的口令捕获阶段是被动的. 此外, 除非服务器检查连接的来源地址, 登录阶段并不需要对网络的特别控制.

3.2.3. Offline Cryptographic Attacks (离线密码学攻击)

许多密码协议易受 Offline Attack (离线攻击). 在此类协议中, 攻击者恢复已用受害者密钥处理过的数据, 然后对该密钥发起密码分析攻击. 口令是特别脆弱的目标, 因为它们通常熵较低. 若干流行的基于口令的质询-响应协议易受 Dictionary Attack (字典攻击). 攻击者捕获一对质询-响应, 然后尝试来自常见词列表 (如字典文件) 的条目, 直到找到能产生正确响应的口令.

当使用 NIS 时, 可以在本地网络上发起类似攻击. Unix 口令经单向函数加密, 但存在工具可破解此类加密口令 [KLEIN]. 使用 NIS 时, 加密口令在本地网络上传输, 攻击者因此可以嗅探口令并对其发起攻击.

历史上, 也曾可能利用操作系统中的小安全漏洞, 通过主动攻击恢复口令文件. 这些漏洞随后可借助前述离线口令恢复技术引导成实际账户. 于是我们将低层主动攻击与离线被动攻击结合.

3.3. Active Attacks (主动攻击)

当攻击涉及向网络写入数据时, 我们称之为 Active Attack (主动攻击). 当在未使用 IPsec 的情况下使用 IP 时, 对发送方地址没有认证. 因此, 攻击者可以直截了当地创建源地址任选的 IP 分组. 我们称之为 Spoofing Attack (欺骗攻击).

在某些情况下, 此类分组可能被网络过滤掉. 例如, 许多包过滤防火墙会丢弃所有源地址为 INTERNAL (内部) 网络却从 EXTERNAL (外部) 接口到达的分组. 然而, 这不能防护位于防火墙内部的攻击者. 一般而言, 设计者应假定攻击者可以伪造分组.

然而, 伪造分组的能力并不必然伴随接收任意分组的能力. 事实上, 存在仅需发送伪造分组而无需处理响应的主动攻击. 我们称之为 Blind Attack (盲攻击).

注意, 并非所有主动攻击都需要伪造地址. 例如, TCP SYN 拒绝服务攻击 [TCPSYN] 可以在不伪装发送方地址的情况下成功发起. 然而, 若攻击被发现, 为隐藏身份而伪装地址是常见做法.

每种协议都易受特定主动攻击, 但经验表明, 若干常见攻击模式可改编用于任意给定协议. 以下小节描述其中若干模式并给出应用于已知协议的具体示例.

3.3.1. Replay Attacks (重放攻击)

在 Replay Attack (重放攻击) 中, 攻击者从线路上记录一串消息, 并向最初接收它们的一方回放. 注意, 攻击者不必理解消息内容. 他只需捕获并重传.

例如, 考虑使用 S/MIME 消息请求某项服务 (如信用卡购物或股票交易) 的情形. 攻击者可能希望服务被执行两次, 哪怕只是为了困扰受害者. 他可以捕获消息并重放, 即便无法阅读消息, 也会导致交易被执行两次.

3.3.2. Message Insertion (消息插入)

在 Message Insertion (消息插入) 攻击中, 攻击者伪造具有某些选定属性的消息并将其注入网络. 该消息常常带有伪造的源地址以掩盖攻击者身份.

例如, 可通过向目标主机插入一系列伪造的 TCP SYN 分组来发起拒绝服务攻击. 目标主机以自己的 SYN 回应并为新连接分配内核数据结构. 攻击者从不完成三次握手, 因此已分配的连接端点只是占用内核内存. 典型 TCP 栈实现仅允许有限数量的连接处于此 "半开" 状态, 当达到该限制时, 即便来自合法主机也无法再发起连接. 注意, 此攻击是盲攻击, 因为攻击者无需处理受害者的 SYN.

3.3.3. Message Deletion (消息删除)

在 Message Deletion (消息删除) 攻击中, 攻击者从线路上移除消息. Morris 的序列号猜测攻击 [SEQNUM] 常常需要成功执行消息删除攻击. 在此盲攻击中, 其地址被伪造的主机将收到来自被攻击主机的伪造 TCP SYN 分组. 收到该 SYN 会生成 RST, 从而拆除非法连接. 为使该主机不发送 RST 以便攻击成功, Morris 描述对该主机进行洪泛以造成队列溢出, 使 SYN 分组丢失从而永远得不到响应.

3.3.4. Message Modification (消息篡改)

在 Message Modification (消息篡改) 攻击中, 攻击者从线路上取下消息, 修改后再注入网络. 若攻击者希望保留消息中的部分数据又要更改其中一部分, 此类攻击特别有用.

考虑攻击者想攻击通过互联网下达的货物订单. 他没有受害者的信用卡号, 于是等待受害者下单, 然后将送货地址 (以及可能的货物描述) 换成自己的. 注意, 这一特定攻击称为 Cut-and-Paste (剪切-粘贴) 攻击, 因为攻击者从原消息中 "剪下" 信用卡号并 "粘贴" 到新消息中.

[IPSPPROB] 给出了剪切-粘贴攻击的另一个有趣示例. 若使用 IPsec ESP 且没有任何 MAC (Message Authentication Code, 消息认证码), 攻击者可以读取为同一机器上的受害者加密流量. 攻击者在自己控制的端口对应的 IP 头上附加到加密的 IP 分组上. 当分组被主机接收时, 会自动解密并转发到攻击者的端口. 类似技术可用于会话劫持攻击. 这两种攻击都可以通过在使用加密时始终使用消息认证来避免. 注意, 此攻击仅在 (1) 未使用 MAC 检查时可行, 因为该攻击会产生损坏的分组, (2) 使用 host-to-host SA (Security Association, 安全关联), 因为 user-to-user SA 会导致 SA 关联的端口与目标端口不一致. 若接收机器是单用户, 则此攻击不可行.

3.3.5. Man-In-The-Middle (中间人)

Man-In-The-Middle (中间人) 攻击将上述技术以特殊形式结合: 攻击者破坏通信流, 以便对发送方冒充接收方, 对接收方冒充发送方:

Alice 与 Bob 以为: Alice <----------------------------------------------> Bob

实际发生: Alice <----------------> Attacker <----------------> Bob

这与上述攻击形式有根本不同, 因为它攻击的是通信各方的身份, 而非数据流本身. 因此, 许多保障通信流完整性的技术不足以防护中间人攻击.

每当协议缺乏 Peer Entity Authentication (对等实体认证) 时, 中间人攻击就可能发生. 例如, 若攻击者能在 TCP 握手期间劫持客户端 TCP 连接 (或许通过在服务器之前响应客户端的 SYN), 则攻击者可以打开到服务器的另一条连接并开始中间人攻击. 通过 ARP 欺骗在本地网络上发起中间人攻击也轻而易举, 攻击者伪造 ARP, 使用受害者的 IP 地址与自己的 MAC 地址. 用于实施此类攻击的工具很容易获得.

注意, 只需认证事务的一侧即可防止中间人攻击. 在此情形下, 对等方可以建立仅认证其中一方的关联. 在此类系统中, 攻击者可以冒充未认证一方发起关联, 但无法在合法连接上传输或访问数据. 在诸如 Web 电子商务等上下文中, 这是可接受的, 因为只有服务器需要认证 (或者客户端通过信用卡号等非密码机制独立认证).

3.4. Topological Issues (拓扑问题)

实践中, 攻击者同样容易读取与生成所有分组的假设并不成立, 因为互联网并非全连接. 这有两层主要含义.

3.5. On-path versus off-path (路径上与路径外)

为使数据报从一台主机传到另一台主机, 它通常必须经过若干中间链路与网关. 此类网关自然能够读取, 修改或删除沿该路径传输的任意数据报. 若你在路径上 (on-path), 发起多种攻击会容易得多.

离路径 (off-path) 主机当然可以发送看似来自任意主机的任意数据报, 但未必能收到发往其他主机的数据报. 因此, 若攻击依赖于能够接收数据, 离路径主机必须先破坏拓扑使自己位于路径上. 这绝非不可能, 但未必轻而易举.

应用协议设计者绝对不能假定所有攻击者都是离路径的. 在可能的情况下, 协议应该设计为能够抵抗对网络拥有完全控制权的攻击者. 然而, 设计者预期会更重视离路径与在路径攻击者均可发起的攻击.

在路径上的一种特例是同处一条链路. 某些情形下, 希望区分位于本地网络的主机与不在本地网络的主机. 标准技术是校验 IP TTL 值 [IP]. 由于 TTL 必须由每个转发者递减, 协议可以要求将 TTL 设为 255 并要求所有接收方校验 TTL. 接收方于是有理由相信符合要求的分组来自同一条链路. 注意, 在存在隧道系统时必须谨慎使用此技术, 因为此类系统可能在不递减 TTL 的情况下传递分组.