TCP/IP协议卷1第2版常见攻击整理

1. 与 Internet 体系结构相关的攻击

很少有攻击将 Internet 体系结构整体作为目标。但是, 值得注意的是, Internet 体系结构交付I P数据报是基于目的I P 地址。因此, 恶意用户能在自已发送的每个I P 数据报的源地址字段中插人任何I P 地址, 这种行为称为欺骗。生成的数据报被交付到目的地, 但难以确定它的真实来源。也就是说, 很难或不能确定从 Internet 中接收的数据报来源。
欺骗可以与 Internet 中出现的各种攻击相结合。拒绝服务( D o S )攻击通常涉及消耗大量的重要资源, 以导致合法用户被拒绝服务。例如, 向一台服务器发送大量I P 数据报, 使它花费所有时间处理接收的分组和执行其他无用的工作, 这是一种类型的D o s 攻击。有些D o S攻击可能涉及以很多流量堵塞网络, 导致其无法发送其他分组。这通常需要使用很多计算机来发送, 并形成一个分布式D o S ( D D o S ) 攻击。
未授权访问攻击涉及以未授权方式访问信息或资源。它可以采用多种技术来实现, 例如利用协议实现上的错误来控制一个系统( 称为占有这个系统, 并将它变成一个僵尸) 。它也可以涉及备种形式的伪装, 例如攻击者的代理冒充一个合法用户( 例如运行用户证书) 。有些更恶毒的攻击涉及 使恶软(rnal w a r e ) 控制很多远程系统, 并以一种协同、分布式的方式( 称为僵尸网络( b o t n e t s ) ) 使用它们。那些出于( 非法) 获利或其他恶意目的而有意开发恶意软件和利用系统的程序员通常称为黑帽。所谓的白帽也在利用同样的技术做这方面的事情, 但他们只是通知系统存在漏洞而不是利用它们。
关于 Internet 体系结构, 值得注意的是, 最初的 Internet 协议没有进行任何加密, 加密可用于支持认证、完整性或保密。因此, 恶意用户仅通过分析网络中的分组, 通常就可以获得私人信息。如果具有修改传输中的分组的能力, 他就可以冒充用户或更改消息内容。虽然这些问题由于加密协议( 见第1 8 章) 而显著减少, 但旧的或设计不当的协议有时在简单的窃听攻击面前仍很脆弱。由于无线网络的流行, “嗅探”其他人发送的分组比较容易, 因此应避免使用旧的或不安全的协议。注意, 虽然可在某层( 例如W i  ̄F i 网络的链路层) 启用加密,但只有主机到主机的加密( I P 层或以上) 能保护穿过多个网段, 以及可能采用遍历方式到达最终目的地的I P 数据报

2. 与I P 地址相关的攻击

I P 地址基本上都是数字, 只有少数网络攻击涉及它们。一般情况下, 执行攻击可发送“欺骗”数据包( 见第5 章) 或其他相关活动。也就是说, I P 地址现在有助于查明涉嫌不良活动的个体( 例如, 对等网络中的版权侵权或非法材料分发) 。这样做可能被以下几个原因所误导。例如, 在很多情况下, I P 地址只是暂时的, 并在不同时间重新分配给不同用户。因此,在精确计时中出现任何错误, 容易造成数据库中的I P 地址到用户的映射出错。另外, 访间控制没有被广泛和安全地部署; 用户可能通过一些公共的接人点, 或一些无意中开放的家庭或办公室的无线路由器连接I n t e m e t o 在这种情况下, 不知情的家庭或企业所有者可能因I P地址而成为嫌疑人, 即使这个人并不是网络流量的发送者。这种情况也可能因受攻击的主机被用于组成僵尸网络而发生。目前, 这类计算机( 和路由器) 可通过基于I n t e m e t 的黑市来租赁,并被用于执行攻击、非法内容服务和其他违法活动。

3. 与链路层相关的攻击

对T C P / I P 以下的层进行攻击以影响T C P / I P 网络运行一直是常见的做法, 这是由于大部分链路层信息不被高层共享, 因而难以检测。不过, 现在大家已知道很多这种攻击, 我们在这里提到其中一些, 以更好地理解链路层问题如何影响高层运行。
在传统的有线以太网中, 接口可被设置为混杂模式, 这允许它接收目的地不是自已的流量。在早期的以太网中, 当介质是名副其实的共享电缆时, 该功能允许任何一台连接以太网电缆的计算机“嗅探”别人的帧并检查其内容。当时很多高层协议包含密码等敏感信息, 仅通过查看一个分组并解码就能轻易获得密码。两个因素对这种方法的影响很大:交换机部署和高层协议加密部署。在使用交换机后, 只有连接到交换机端口的站提供流量, 流量的目的地也是其他站( 或其他桥接的站) ,以及广播/ 组播流量。这种流量很少包含敏感信息( 例如密码) , 可在很大程度上阻止攻击。但是, 在更高层使用加密更有效, 这在当前是常见的。在这种情况下, 嗅探分组难以获得多少好处,因为基本无法直接获取内容。
另一种攻击的目标是交换机。交换机中有一个基于每个端口的站列表。如果这种表能被快速填充( 例如被大量伪装的站快速填充) , 交换机可能被迫放弃合法条目, 从而导致中断对合法站的服务。一个相关但可能更严重的攻击是使用S T P。在这种情况下, 一个站可伪装成一个到根网桥拥有低成本路径的站, 从而吸引流量直接导向它。
随着W i - F i 网络的使用, 有线以太网中存在的一些窃听和伪装问题变得更严重, 这是由于任何站都可进人监控模式并嗅探分组( 8 0 2 . 1 1 接口置于监控模式通常比以太网接口置于混杂模式更有挑战性,这样做依赖于一个适当的设备) 。一些早期“攻击” ( 可能不是真的被攻击, 依据相关的法律框架) 涉及扫描中的简单漫游, 寻找提供I n t e m e t 连接的接人点( 即驾驶攻击)。虽然很多接人点使用加密来限制授权用户的访问, 但有些人却能打开或使用捕获门户技术访问注册网页, 然后进行基于M A C 地址的过滤访问。通过观察站注册以及冒充合法注册用户来“劫持”连接,捕获门户系统已被破坏。
一种更先进的Wi-Fi 攻击涉及对加密保护的攻击, 尤其是很多早期接人点使用的W E P加密。针对W E P的攻击有显著的破坏性, 它促使I E E E 修订了自已的标准。新的W P A 2 ( 和W P A ) 加密体系明显更强, 因此不再推荐使用W E P。
如果攻击者可访问两个端点之间的信道, 它可采用很多方式来攻击P P P 链路。对于很简单的认证机制( 例如P A P ) , 嗅探可用于捕获密码, 以便后续的非法访问。通过P P P 链路( 例
如路由流量) 上的更高层流量, 可导致系统的不可用。
从攻击的角度看, 隧道经常是目标, 有时也成为攻击工具。作为目标, 隧道穿过一个网络( 通常是I n t e m e t ) , 它是被截获和分析的目标。隧道端点配置也可被攻击, 尝试由端点建
立更多隧道( 一个D o S 攻击) 或攻击配置自身。如果该配置被攻破, 可能打开一个未授权的隧道端点。在这点上, 隧道变成工具而不再是目标, 有些协议( 例如L 2 T P ) 提供一种与协议
无关的简便方法, 以在链路层访问私有的内部网络。在一种G R E 相关的攻击中, 例如将流量简单地插人一个非加密隧道, 它到达隧道端点并被注人“私有”网络, 虽然它本来只应被送往端点本地。

4. 与ARP相关的攻击

目前已有一系列涉及A R P 的攻击。最直接的是使用代理A R P 功能假扮主机, 对A R P请求做出应答。如果受害主机不存在, 这很直观, 而且可能难以发现。如果该主机仍在运行, 这被认为更困难, 因为每个A R P 请求可能多有个应答, 这样比较容易发现。
一种更巧妙的攻击可被A R P 触发, 它涉及一台主机被连接到多个网络, 并且一个接口的A R P 条目被其他A R P 表“遗漏”的情况, 这是由A R P 软件的一个错误造成的。利用这种漏洞可将流量引导到错误网段上o L i n u x 提供了一个直接影响该行为的方式, 可通过修改文件/ p r o c / s y s / n e t / i p v 4 / c o n f y s / a r p 一肌e r 实现。如果将数值1 写人这个文件, 当输人的A R P 请求到达一个接口时, 就进行一次I P 转发检查。这时需要查找请求者的I P 地址, 以确定哪个接口将用于发送返回的I P 数据报。如果到达的A R P 请求与返回发送方的I P 数据报使用不同的接口, 这个A R P 应答被抑制( 触发它的A R P 请求被丢弃) 。
更具破坏性的A R P 攻击涉及静态条目处理。如前所述, 当查找对应一个特定I P 地址的以太网( M A C ) 地址时, 静态条目可用于避免A R P 请求/ 应答。这种条目已被用于尝试增强安全性。它的思路是在A R P 缓存中对重要主机使用静态条目, 以快速检测任何针对该I P地址的主机欺骗。不幸的是, 大多数A R P 实现通常用A R P 应答提供的条目代替静态缓存条目。这样的后果是, 接收到A R P 应答( 即使它没发送A R P 请求) 的主机被欺骗, 并使用攻击者提供的条目代替自已的静态条目。

5. 与IP相关的攻击

前些年已有一些针对I P 协议的攻击, 主要是墓于选项操作, 或利用专用代码中的错误( 例如分片重组) 。由于一个或多个I P 头部宇段无效( 例如错误的头部长度或版本号) , 简单的攻击就能让一台路由器崩溃或性能下降。通常情况下, 当前Internet 中的路由器会忽略或剥离I P 选项, 并在基本分组的处理中修复错误。因此, 这些类型的简单攻击不是大问题。涉及分片的攻击可使用其他方法解决。
如果没有身份认证或加密( 或在I P v 6 中被禁用) , I P 欺骗攻击是有可能发生的。一些早期的攻击涉及对源I P 地址的伪造。早期的访问控制机制基于源I P 地址,很多这样的系统已不再使用。欺骗有时与源路由选项组合使用。在某些情况下, 远程攻击者的计算机可能看起来像本地网络中的一台主机( 甚至是同一计算机) 在请求某种服务。虽然I P 地址的欺骗当前仍然受关注, 但有几种方法可限制其危害, 包括人口过滤[ R F C 2 8 2 7 ] [ R F C 3 7 0 4 ] 一I S P 通过人口过滤检查客户流量的源地址, 以确保数据报包含一个指定的I P 前缀。
I P v 6 和移动I P 相对较新, 至少相对于I P v 4 来说, 它的所有漏洞无疑尚未被发现。由于有更新、更灵活的选项头部类型, 攻击者可对I P v 6 分组的处理有相当大的影响。例如, 路由头部( 类型0 ) 被发现有严重的安全间题, 目前已完全废弃使用它。其他可能的问题包括源地址和/ 或路由头部的欺骗, 使分组看起来好像来自其他地方。这些攻击可通过配置分组过滤防火墙, 并查看路由头部内容来避免。值得一提的是, 如果仅简单地过滤所有包含I P v 6扩展头部和选项的分组, 这将会严重限制其使用。特别是, 禁用扩展头部将影响移动I P v 6的正常运行。

6. 与系统配置相关的攻击

针对系统和网络配置的攻击多种多样。从未授权客户机或未授权服务器对D H C P 的干扰, 到耗尽资源的各种形式的D o S 攻击, 例如申请一台服务器可能提供的所有可能的I P 地址。这些问题很常见, 这是由于地址配置基于旧的I P v 4 协议, 其设计出发点是假设网络可信, 而到目前为止新的协议还很少部署( 安全部署就更少见) 。因此, 无法通过典型D H C P部署来防御这些攻击, 虽然链路层认证( 例如, W i - F i 网络使用的W P A 2 ) 有助于限制连接到一个特定网络的未授权客户机数量。
I E T F 致力于为I P v 6 邻居发现提供安全性, 哪个邻居、什么时间或是否已部署S L A A C ,这些因素将直接影响网络运行的安全性。 [ R F C 3 7 5 6 ] 概括了2 0 0 4 年以来的信任及威胁假设,[ R F C 3 9 7 1 ] 定义了安全邻居发现( S E N D ) 协议o s E N D 将I P s e c ( 见第1 8 章) 用于邻居发现数据包, 并结合使用加密生成的地址( C G A ) [ R F C 3 9 7 2 ] 。这种地址由密钥散列函数而获得,所以它们只能由系统保存的适当关键信息生成。

7. 与防火墙和N A T 相关的攻击

鉴于部署防火墙的主要目的是减少攻击的风险, 因此防火墙的缺点比终端主机或路由器少一些也不奇怪。这就是说,它们不是没有缺点的。最常见的防火墙间题是由不完整或不正确配置导致的。配置防火墙不是一个简单的任务, 尤其是大型企业, 其中许多服务需要每天使用。其他形式的攻击利用了某些防火墙的弱点,包括其中许多防火墙( 尤其是比较老的)没有能力来处理I P 分片
一种类型的间题出现在N A T / 防火墙受到外部劫持, 进而为攻击者提供伪装能力。如果防火墙的配置启用了N A T , 那么在其外部接口到达的流量会被重写, 因此这些流量看起来好像是来自于N A T 设备的, 从而隐藏了攻击者的实际地址。更糟糕的是, 从N A T 的角度来看这是“正常”的行为, 但它恰恰是从外面得到的输人数据包而不是在内部得到的。这是一个在L i n u x 上基于i p c h a i n s 的N A T / 防火墙规则的特定间题。最简单的设置伪装的配置Linux# ipchains - P FORWARD MASQUERADE 将会允许这种攻击发生, 因此并不推荐。正如所看到的, 它将默认策略设置为M A S Q U E R A D E ,潜在地对任何I P 实行转发
另一种与防火墙和N A T 规则相关的间题是, 它们可能过时了。尤其是, 它们可能包含端日转发条目或其他所谓的小孔, 允许已不存在的服务的流量通过。一个相关的间题是,一些路由器将多个防火墙规则副本保存在内存中, 路由器必须明确指示使用哪个规则。最后, 另一个常见的配置间题是当添加新的规则时, 许多路由器将新、旧防火墙规则一起合并( m e r g e ) 了。如果操作者不知道这种行为的话, 这将导致意想不到的结果
与分片有关的间题是如何构造I P 分片。当一个I P 数据报被分片时( 见第1 0 章) , 包含了端日号的传输层头部只出现在第一个分片中, 在别的分片中没有。这是分层和封装的T C P/ I P 协议体系结构直接导致的结果。不幸的是对于防火墙而言, 如果收到的分片不是一个的话, 它所提供的关于与该数据包相关联的传输层或者服务信息将会非常少。唯一明显的解决方法是找到第一个分片( 如果有的话) , 这显然需要一个有状态的防火墙, 为此可能会遭到资源耗尽攻击。即使是状态防火墙也可能功亏一簧: 如果第一个分片在后续分片之后达到, 防火墙可能无法在过滤操作之前执行分片重组。在某些情况下, 防火墙丢弃不能完全识别的分片, 这可能会给突然使用了大数据报的流量造成麻烦。

8. 与I c M P 相关的攻击

涉及I C M P 的攻击主要分为3 类: 泛洪( 丑0 0 d ) 、炸弹( b o m b ) 和信息泄露( i n f o r m a t i o nd i s c l o s u r e ) 。本质上, 泛洪将会生成大量流量, 导致针对一台或者多台计算机的有效的D o S攻击。炸弹类型( 有时也称为核弹( n u k e ) 类型) 指的是发送经过特殊构造的报文, 能够导致I P 或者I C M P 的处理崩溃或者终止。信息泄露攻击本身并不会造成危害, 但是能够帮助其他攻击方洼避免浪费时间或者被发现。针对T C P 的I C M P 攻击已经被专门记录在文档中了
有一种早期的I C M P 攻击称为S m u r f 攻击。这相当于使用目的地址为广播地址的I C M P v 4 , 导致大量计算机做出响应。如果这样做得很快, 它可以导致D o S 攻击, 因为受害主机忙于处理I C M P 流量而不能做其他任何事情。通常来说, 这种攻击方式将源I P 地址设置为受害者的地址。因此, 当多台主机收到广播I C M P 报文时, 所有主机同时以I C M P 报文的形式响应源地址( 即受害主机的地址) 。这种攻击很容易处理, 只需在防火墙边界禁止传人的广播流量。
采用I C M P v 4 回显请求/ 应答报文( p i n g ) , 有可能以这样一种方式来构建数据包分片,当它们被重组时将形成一个过大的I P v 4 数据报( 大于最大值6 4 K B ) 。这已用于导致某些系统崩溃, 并因此表示另一种形式的D o S 攻击。它有时也称为P i n g o f D e a t h 攻击。一个有点相关的攻击涉及改变I P v 4 头中的分片偏移字段值, 从而导致I P v 4 分片重组路由器的错误。这也被称为泪滴( t e a r d r o p ) 攻击。
另外一个已经被利用的意想不到的情况是一个I C M P 报文假设有不同的源地址和目的地址。在L a n d 攻击中, 将源和目的地I P 地址均等于受害者地址的I C M P 报文发送到受害者。当收到这种报文时, 一些实现的反应是非常不幸的。
I C M P 重定向功能可以导致终端系统使用一个不准确的系统作为下一跳路由器。虽然对传人的I C M P 重定向报文可以做一些检查, 以确保它们真是当前默认路由器产生的, 但也无法保证报文的真实性。在这种攻击中, 可以沿着流量流插人一个中间人( 见第1 8 章) 进行记录和分析。此外, 它可以被修改来导致不想要的动作。它可以实现类似A R P 中毒攻击的结果( 见第4 章) 。此外, 它已被用于使受害者认为自身就是到达目的地的最优网关。这将导致一个无限循环, 间接锁定受害者的主机。
I C M P 路由器通告和路由器请求报文能被用于创建一个类似于重定向攻击的攻击。特别是, 这些报文可导致受害者系统修改它们的默认路由, 指向被人侵的机器。此外, 被动地接收这些报文可以使攻击者了解本地网络环境的拓扑结构。请注意, 这样的“流氓R A ”问题不管是恶意的还是偶然的, 在[ R F C 6 1 0 4 ] 中都有单独详细的描述。
可以使用I C M P 作为需要协作的人侵程序之间的通信通道。在T F N ( T r i b e F I o o dN e t w o r k , 族泛洪网络) 攻击中, 在人侵主机之后I C M P 被用来协调一组合作病毒的行动。
I C M P 目的不可达报文可造成现有连接( 例如, T C P 连接) 的拒绝服务。在一些实现中,接收来自于一个I P 地址的主机不可达、端日不可达或协议不可达报文将导致关闭和这个地址关联的传输层连接: 这些攻击有时也被称为S m a c k 或B I o o p 攻击。
I C M P 时间戳请求/ 应答报文( 在正常操作中已不再使用) 能根据一些主机学习到当前时间( 如果启用的话) 。由于许多关于安全的方法是基于使用随机密钥加密的, 如果源和状态的随机性是可知的, 一个外部参与者就可以预测用来创建加密密钥的伪随机数序列( 这就是为什么它们是伪随机( p s e u d o - r a n d o m ) 的原因) , 可能会允许第三方猜测秘密值并劫持连接( 见第1 3 章的T C P 和第1 8 章的随机数讨论) 。因为许多随机数是基于一天中的当前时间, 暴露一个主机的精确时间是一个间题。
然而, 另一种攻击涉及修改P T B 报文。回想一下, 这个报文包含一个表示推荐M T U 值的字段。这将被传输协议( 如T C P ) 用来选择它们数据包的大小。如果攻击者修改这个值,它将强制终端T C P 运行时使用非常小的数据包( 从而导致性能低下) 。
通过在当前流行的操作系统中修改I C M P 实现已经使这些攻击失效。但是如果没有加密, 一般来说欺骗或伪装攻击仍然是可能的。使用加密方洼( 如s E N D ) 的协议提供更高水平的安全性, 但可能需要更复杂的部署, 当出现问题时需要的分析也更复杂。

9. 与I G M P 和M L D 相关的攻击

由于I G M P 和M L D 是信令协议, 可以控制组播流量的流动, 使用这些协议的攻击主要是D o s 攻击或资源使用攻击。也有攻击利用协议的实现错误来禁用主机或导致它们执行攻击者提供的代码
一个简单的D o S 攻击可以通过发送I G M P 或M L D 来订阅大量的高带宽的组播组来发起。这样做会引起带宽耗尽, 导致拒绝服务。一个更复杂的攻击可能通过使用相对较小的I P地址生成请求来发起。在这种情况下, 攻击者当选为链路的查询器, 可以通知它自已的鲁棒性变量、查询时间间隔和将要被其他组播路由器采用的最大响应时间。如果最大响应时间是非常小的, 主机被诱导来迅速发送报告, 消耗了C P U 资源。
一些攻击已经通过利用实现错误来实施。分片的I G M P 分组已经被用来在特定的操作系统中诱导崩溃。最近, 使用S S M 信息的特制的I G M P 或M L D 报文已经用于诱导远程代码执行错误。总体而言, I G M P 或M L D 漏洞的影响往往比其他协议要小, 因为组播往往只是支持当地。其结果是, 缺乏接人到目标L A N 的链路的远程攻击者可能是有限的。

10. 与U D P 和I P 分片相关的攻击

大多数关于U D P 的攻击与耗尽某些共享资源( 缓存, 链路容量等) 或利用协议实现中的漏洞以致系统崩溃或产生其他不希望的反应有关。两者都属于D o s 攻击这个大分类: 成功的攻击者可使服务对合法用户不可用。最直接的使用U D P 的D o S 攻击是尽可能快地直接产生大量的流量。因为U D P 不能管理它的流量发送率, 这对与之共享相同网络路径的其他应用程序产生负面的影响。甚至在没有恶意的情况下, 这也可能发生。
经常与U D P 相关的另一种更复杂的D o s 攻击类型是放大( m a g n i f i c a t i o n ) 攻击。这种攻击类型通常涉及一个攻击者发送小部分流量, 而致使其他系统产生更多的流量的情况。在
所谓的F r a g g l e 攻击中, 一个恶意的U D P 发送方伪造I P 源地址成一个受害者的地址, 并且设置目的地址为广播类型的一种( 如, 直接广播地址) o u D P 分组被发送到一个能对进人数
据报做回应的服务。实现了这些服务的服务器在回应时, 它们把消息导向到包含在到达的U D P 分组的源I P 地址字段里的I P 地址。这样, 源地址就是那个受害者, 所以受害者主机就
会因有多个U D P 流量对其回应而处于超负载中。这种放大攻击的变种有很多, 包括诱导一个字符生成服务与回显服务交互, 从而使得流量一直处于“乒乓”中。这种攻击与I C M P 的S m u r f 攻击( 见第8 章) 很接近
出现过几种与I P 分片有关的攻击。处理I P 分片要比处理U D P 更加复杂一些, 因此在它的实现中发现并利用漏洞不足为奇。有一种攻击方式涉及发送不带任何数据的分片。这种攻击利用I P v 4重组程序代码的一个漏洞, 可导致系统崩溃。另一种在I P v 4 重组层的攻击是泪滴( t e a r d r o p ) 攻击, 涉及使用可使某些系统崩溃或严重受影响的重叠分片偏移( F r a g m e n to f t s e t ) 字段来精心构造一系列分片。这种攻击的一个变种涉及可覆盖前一分片U D P 头部的重叠分片偏移。现在, 重叠分片在I P v 6 中被禁止使用[ R F C 5 7 2 2 ] 。最后, 还有与之相关的P i n g o f D e a t h 攻击( 一般由I C M P v 4 回显请求构建, 也适合于U D P ) , 它通过产生一个在重组时会超过最大限制的I P v 4 数据报来进行。这是相当直接的, 因为分片偏移字段可设置的值最大只能到8 1 9 1 , 代表了6 5 5 2 8 字节的偏移。任何长度超过7 字节的这样的分片都会( 如果没有保护措施) 导致产生一个超过最大值6 5 5 3 5 字节的重组数据报。关于某些形式的分片攻击的应对投术在[ R F C 3 1 2 8 ] 给出。

11.与DNS相关的攻击

D N S 是互联网的一个重要组成部分. 多年以来它已经成为一些攻击和对策的对象
[ R F C 3 8 3 3 ]。最近. 在添加强认证到D N S 操作中方面. D N S 安全( D N S S E C ) 这项全球性工作已取得实质性进展一 我们将D N S S E C 如何工作的详细讨论推迟到第1 8 章. 其中我们也涉及必要的密码学背景一 现在. 我们探索对D N S 已经发动的一些攻击。
对D N S 的攻击有两种主要的形式。 第一种形式涉及D o S 攻击. 在这类攻击中,由于重要D N S 服务器( 如根或T L D 服务器) 过载,D N S 不起作用。第二种形式改变资源记录的内容,或伪装成一个官方D N S 服务器,但是回复假的资源记录,从而导致主机在尝试与另一台机器连接时, 连接至错误的I P 地址( 例如, 银行的web站点)。
2 0 0 1 年年初发生了第一次针对D N S 的重大D o S 攻击。攻击包含生成很多对A O L .C O M 的M X 记录的请求。攻击者使用伪造的源I P 地址产生对于M X 记录的D N S 请求。请求是一个相对较小的数据分组, 然而响应较大( 约2 0 倍) , 因此这种类型的攻击被称为放大( a m plific a t i o n ) 攻击-----因为攻击造成的结果是, 消耗的带宽量比生成攻击所占的带宽量要大很多。响应会定向到请求分组中包含的I P 地址, 所以攻击者基本上可以导致响应流量定向到任何他想要的地方。攻击在C E R T 事件记录中详细陈述[ C I N ]
一种形式的攻击涉及D N S 中数据的修改, 这在2 0 0 8 年年底有报道[ C K B ] , 现在被称为K a m i n s k y 攻击。它包含缓存中毒( c a c h e p o i s o n i n g ) , 在这种攻击中, 一台D N S 服务器的缓存内容被错误的或伪造的数据替代, 并且最终送达终端主机上的解析器。它的一个变种是,攻击者使用特定主机域名的域的N S 记录来响应一台缓存服务器的A 记录的查询。主机的I P地址( 由攻击者所选择的) 也在D N S 响应的额外信息区段中提供。主机域名可能共享也可能不共享相同的子域作为原始的D N S 请求。与这种形式的攻击相关的主要风险是, 依赖于合适的D N S 名称到地址解析的客户端可能被定向到伪服务器。如果这样的服务器被故意配置为模仿原来的主机( 例如, 伪装成银行的w e b 服务器) , 用户可能会无意地信任伪装的服务器, 并泄露敏感信息。对此以及其他相关攻击的缓解技术在[ R F C 5 4 5 2 ] 中给出。一种方法没有在[ R F C 5 4 5 2 ] 中描述, 称为D N S - O x 2 0 [ D O 8 ] , 它涉及编码间题区段查询名称部分每个字符的O x 2 0 位置的临时值, 该问题区段会在每个响应的对应位置中回显。这成为可能, 因为,虽然域名以大小写不敏感的形式比较, 当形成响应时, 服务器往往会返回一个查询名称的完全相同的副本。如果在查询中拥有者的名称大小写故意混排, 主动响应将难以重新产生临时值, 并且更容易被识别( 和忽略) 。

12.无

13.与T c P 连接管理相关的攻击

S Y N 泛洪是一种T C P 拒绝服务攻击, 在这种攻击中一个或多个恶意的客户端产生一系列T C P 连接尝试( S Y N 报文段) , 并将它们发送给一台服务器, 它们通常采用“伪造”的( 例如, 随机选择) 源I P 地址。服务器会为每一条连接分配一定数量的连接资源。由于连接尚未完全建立, 服务器为了维护大量的半打开连接会在耗尽自身内存后拒绝为后续的合法连接请求服务.
因为区分合法的连接尝试与S Y N 泛洪并不是一件容易的事情, 所以抵御上述攻击存在一定的难度。 一种针对此问题的机制被称作S Y N c o o k i e s [ R F C 4 9 8 7 ] o S Y N c o o k i e s 的主要思想是, 当一个S Y N 到达时, 这条连接存储的大部分信息都会被编码并保存在S Y N + A C K报文段的序列号字段。采用S Y N c o o k i e s 的目标主机不需要为进人的连接请求分配任何存储资源一只有当S Y N + A C K 报文段本身被确认后( 并且已返回初始序列号) 才会分配真正的内存。在这种情况下, 所有重要的连接参数都能够重新获得, 同时连接也能够被设置为E S T A B L I S H E D 状态。
在执行S Y N c o o k i e s 过程中需要服务器仔细地选择T C P 初始序列号。本质上, 服务器必须将任何必要的状态编码并存于S Y N + A C K 报文段的序列号字段。这样一个合法的客户端会将其值作为报文段的A C k 号字段返回给服务器。很多方法都能够完成这项工作, 下面将具体介绍L i n u x 系统所采用的技术。
服务器在接收到一个S Y N 后会采用下面的方法设置初始序列号( 保存于S Y N + A C K 报文段, 供于客户端) 的数值: 首5 位是‘模3 2 的结果, 其中‘是一个3 2 位的计数器, 每隔6 4 秒增1 ; 接着3 位是对服务器最大段大小( 8 种可能之一) 的编码值; 剩余的2 4 位保存了4 元组与! 值的散列值。该数值是根据服务器选定的散列加密算法计算得到的。
在采用S Y N c o o k i e s 方法时, 服务器总是以一个S Y N + A C K . 报文段作为响应( 符合任何典型的T C P 连接建立过程) 。在接收到A C K . 后, 如果根据其中的‘值可以计算出与加密的散列值相同的结果, 那么服务器才会为该S Y N 重新构建队列。这种方法至少有两个缺陷。首先, 由于需要对最大段大小进行编码, 这种方法禁止使用任意大小的报文段。其次, 由于计数器会回绕, 连接建立过程会因周期非常长( 长于6 4 秒) 而无法正常工作。基于上述原因, 这一功能并未作为默认设置。
另一种攻击方法与路径最大传输单元发现过程相关。在这种攻击中, 攻击者伪造一个I C M P P T B 消息。该消息包含了一个非常小的M T U 值( 例如, 6 8 字节) 。这样就迫使受害的T C P 尝试采用非常小的数据包来填充数据, 从而大大降低了它的性能。最强力的攻击方法是简单地禁用主机的路径最大传输单元发现功能。当接收到的I C M P P T B 消息的下一跳最大传输单元小于5 7 6 字节时, 其他选项会禁用路径最大传输单元发现功能。前文曾介绍过一个L i n u x 系统的选项。该选项会保持最小的数据包大小( 为了T C P 的大数据包) 。如果该选项被固定为某一数值, 那么较大的数据包则不能将I P v 4 的D F 位置位。这种方洼虽然比完全禁用路径最大传输单元发现功能更具攻击性, 但也与其十分类似。
另一种类型的攻击涉及破坏现有的T C P 连接, 甚至可能将其劫持( h i j a c k i n g ) 。这一类攻击通常包含的第一步是使两个之前正在通信的T C P 节点“失去同步” 。这样它们将使用不正确的序列号。它们是序列号攻击的典型例子[ R F C 1 9 4 8 ] 。至少有两种方法能实现上述攻击‥在连接建立过程中引发不正确的状态传输( 类似于1 3 . 6 . 4 小节介绍的时间等待错误) , 在E S T A B L I S H E D 状态下产生额外的数据。一旦两端不能再进行通信( 但却认为它们间拥有一个打开的连接) , 攻击者就能够在连接中注人新的流量, 而且这些注人的流量会被T C P 认为是正确的。
有一类攻击被称作欺骗攻击。这类攻击所涉及的T C P 报文段是由攻击者精心定制的,目的在于破坏或改变现有T C P 连接的行为。在[ R F C 4 9 5 3 ] 中大量讨论了此类攻击及它们的防治技术。攻击者可以生成一个伪造的重置报文段并将其发送给一个T C P 通信节点。假定与连接相关的4 元组以及校验和都是正确的, 序列号也处在正确的范围。这样就会造成连接的任意一端失败。随着互联网变得更快, 为了维持性能被认为“处于窗口”的序列号范围也在不断地扩大( 参见第1 5 章) , 上述攻击也受到越来越多的关注。欺骗攻击还存在于其他类型的报文段( S Y N , 甚至A C K ) 中( 有时会与泛洪攻击结合使用) , 引发大量的问题。相关的防御技术包括: 认证每一个报文段( 例如, 使用T C P - A O 选项) ; 要求重置报文段拥有一个特殊的序列号以代替处于某一范围的序列号; 要求时间戳选项具有特定的数值; 使用其他形式的c o o k i e 文件, 让非关键的数据依赖于更加准确的连接信息或一个秘密数值。
欺骗攻击虽然不是T C P 协议的一部分, 但是能够影响T C P 的运行。例如, I C M P 协议能够被用于修改路径最大传输单元的发现行为。它也能够被用于指出一个端日号或一台主机已失效, 从而终止一个T C P 连接。 [ R F C 5 9 2 7 ] 介绍了大量的此类攻击, 并且还提出了一些防御I C M P 欺骗消息、提高鲁棒性的方法。这些建议不仅局限于验证I C M P 消息, 而且还涉及其可能包含的T C P 报文段。例如, 包含的报文段应该拥有正确的4 元组与序列号。

14.与T c P 重传相关的攻击

有一类D o S 攻击称为低速率D o S 攻击。在这类攻击中, 攻击者向网关或主机发送大量数据, 使得受害系统持续处于重传超时的状态。由于攻击者可预知受害T C P 何时启动重传, 并在每次重传时生成并发送大量数据。因此, 受害T C P 总能感知到拥塞的存在,根据k a m 算法不断减小发送速率并退避发送, 导致无法正常使用网络带宽。针对此类攻击的预防方法是随机选择R T O , 使得攻击者无法预知确切的重传时间。
与D o S 相美但不同的一种攻击为减慢受害T C P 的发送, 使得R T T 估计值过大。这样受害者在丢包后不会立即重传。相反的攻击也是有可能的: 攻击者在数据发送完成但还未到达接收端时伪造A C K o 这样攻击者就能使受害T C P 认为连接的R T T 远小于实际值, 导致过分发送, 造成大量的无效传输。

15.与窗口管理相关的攻击

T C P 窗日管理可能受到多种攻击, 主要形式为资源耗尽。通告窗日较小会使得T C P 传输减慢, 因此会更长时间地占用资源, 如存储空间。这一点已被用于针对传输性能较差的网络攻击( 即蠕虫) 。例如, L a B r e a t a a p i t 程序[ L O l ] 在完成T C P 三次握手后, 要么不做任何行为, 要么只产生一些最小的应答, 使得发送速率不断减慢。通过此法来保持发送端忙碌, 本质上是减慢蠕虫的传播速度。因此tarpit 程序是针对流量攻击的一类防护。
比较新的攻击发布于2 0 0 9 年[ 1 0 9 ] , 它基于已知的持续计时器的缺陷, 采用客户端多 "s Y N c o o k i e s " 技术( 参见第1 3 章) 。所有必要的连接状态都可以下载到受害主机进行, 从而使待攻击方主机消耗最少的资源。这种攻击本身类似于L a B r e a 思想, 只是其针对持续计时器。同一台服务器可能受到多个此类攻击, 最终导致资源耗尽( 如系统内存耗尽) 。 [ C 7 2 3 3 0 8 ] 提出了一种解决方法, 即当推断出现资源耗尽时, 允许其他进程关闭T C P连接。

16.与T c P 拥塞控制相关的攻击

我们已经看到生成数据包是如何攻击T C P , 使其改变自身的连接状态机, 从而断开连接的。当T C P 处于E S T A B L I S H E D 状态时, 它也会受到攻击( 至少为非正常工作状态) 。大多数针对T C P 拥塞控制的攻击都是试图强迫T C P 发送速度比一般情况更快或者更慢。
更早期的攻击方式是利用I C M P v 4 S o u r c e Q u e n c h ( 源抑制) 报文的结构。当这些报文被发送到运行T C P 协议的主机上时, 任何与该I P 地址相连的连接都会减慢发送速率。该I P 地址包含在I C M P 报文中的违规数据报中。然而随着1 9 9 5 年路由器不再使用S o u r c e Q u e n c h 报文进行拥塞控制( [ R F C 1 8 1 2 ] 5 . 3 . 6 节) , 这种攻击方式也变得不可行了。另一方面, 对于终端主机, [ R F C l 1 2 2 ] 规定T C P 针对S o u r c e Q u e n c h 报文必须降低速率。综合以上两点, 解决这种攻击最简单的方法就是在路由器和主机上阻止I C M P S o u r c e Q u e n c h 报文的传输。这种方式已得到普遍使用。
一种更复杂、更常用的攻击方式是基于接收端的不当行为[ S C W A 9 9 ] 。这里将描述三种攻击形式, 它们都可以使T C P 发送端以一个比正常状态更快的速率进行数据发送。这些攻击可用于使某个W e b 客户端得到比其他客户端更高的优先权, 分别为A C K 分割攻击、重复A C K 欺骗攻击、乐观响应攻击, 还有一种在T C P 中实现的变体, 这里把它称为"T C P D a y t o n a "。
A C K . 分割攻击的原理是, 将原有的确认字节范围拆分成多个A C K 信号并返回给发送端。由于T C P 拥塞控制是基于A C K 数据包的到达进行操作的( 而不是依据A C K 信号中的A C K 字段) 。这样发送端的c w n d 会比正常情况更快速地增长。要解决这一问题, 与A B C ( 适当字节数) 类似, 可通过计算每个A c K . 能确认的数据量( 而不是一个数据包的到达) 来判断是否为真的A C K。
重复A C K 欺骗攻击可以使发送端在快速恢复阶段增长它的拥塞窗口。回想之前讨论过的, 在标准快速恢复模式中, 每次接收到重复A C K c w n d 都会增长。这种攻击会比正常情况更快地生成多余的重复A C K o 因为还没有一种明确的方法可以将接收到的重复A C K 和它们所确认的报文段相对应( 一个基于时间的伪随机数可以解决这一问题, 我们将在第1 8 章详细讨论) , 因此这种攻击更加难以防治。利用时间戳选项可以解决这一问题, 可以设置该选项在每个连接中开启或关闭。然而解决这一问题的最好方法是, 限制发送端在恢复阶段的在外数据值。
乐观响应攻击原理是对那些还没有到达的报文段产生A C K o 因为T C P 的拥塞控制计算是基于端到端的R T T 的。对那些还没有到达的数据提前进行确认就会导致发送端计算出的R T T 比实际值要小, 所以发送端将会比正常情况下更快地做出反应。但如果发送端接收到了一个未发送数据的A C K , 通常会选择忽略该响应。与其他攻击方式不同, 这种方法不能在T C P 层保证数据的可靠传输( 也就是说, 已经被确认的数据可能会丢失) 。丢失的数据会被应用层或者会话层协议重建, 这是很常见的( 例如在H T T P / 1 . 1 中) 。为防范这类攻击, 可定义一个可累加的随机数, 使得发送数据段大小可随时间动态改变, 以此来更好地匹配数据段和它对应的A C K o 当发现得到的A C K 和数据段不匹配时, 发送端就可以采取相应的行动。
接收端异常行为的间题也受到了一些研究E C N 的专家的关注, 回想一下使用E C N 的A Q M 机制, T C P 接收端会在A C K 消息中向发送端返回一个E C N 标识。然后发送端据此将会降低它的发送速率。如果接收端不能向发送端返回E C N 标识( 或者网络中的路由器将这一标识清除) , 那么发送端将不会知道是否产生拥塞, 也就不会降低发送速率。 [ R F C 3 5 4 0 ] 进行了相关实验, 即将一个I P 数据包中的E C N 字段( 2 比特) 中的E C T 位字段设置为随机数。发送方将该字段值设置为一个随机的二进制数, 接收方将该字段的值加1 ( 一个异或操作) 。当生成A C K 响应时, 接收端会把该值放置到T C P 头部的第7 位( 一般保留为0 ) 。行为异常的接收端有一半的概率可以猜到这一数值。因为每一个数据包都是相对独立的, 所以一个行为异常的接收端必须猜对每一个E C T 值, 这样对于唐个数据包来说全部猜对的概率只有1 / 2 倍( 对于任何一个长时间使用的连接这都是很微小的) 。

17.与T c P 保活机制相关的攻击

之前提到过, S s h ( 第2 版) 中含有一种应用层的保活机制, 称为服务器保活报文和客户端保活报文。与T C P 保活报文的区别在于, 它们是在应用层通过一条加密的链路传输的,而且这些报文中包含数据o T C P 保活报文中不包含任何用户数据, 所以它最多只进行有限的加密。因此T C P 保活机制容易受到欺骗攻击。当受到欺骗攻击时, 在相当长的一段时间内,受害主机必须维护不必要的会话资源。
还有一些相对次要的问题o T C P 保活机制的计时器是由之前提到的不同配置参数决定的,而不是用于数据传输的重传计时器。对于被动的观察者来说, 他们能够注意到保活报文的存在, 并观察保活报文发送的间隔时间, 从而了解系统的配置参数( 可能获取发送系统类别信息, 称为系统指纹)或者网络的拓扑结构( 即下一跳路由器是否能够转发数据流量) 。这些问题在某些环境下是非常重要的。

18.与安全协议相关的攻击

有关安全协议的攻击与之前我们在其他章节中看到的协议攻击有些不同。其他章节讨论的攻击往往会利用协议在设计与执行上的一些漏洞, 从而造成危害。这些协议其实并没有真正地进行安全设计。安全协议的攻击不仅会采用上述这些方式, 而且会包含一些破坏安全所依赖的数学基础的加密攻击。攻击能够成功地破坏较差的算法、弱的或太短的密钥, 或由多种组件构成却使得安全系统更弱的差劲组合( 一个经典而有趣的例子是V E N O N A 系统的密码分析[ V E N O N A ] ) 。
为了理解一些针对安全协议的攻击, 我们从最底层开始逐渐向上介绍。大量针对8 0 2 . Ⅱ与E A P 的攻击已经出现0 8 0 2 . 1 1 ( 如W E P 和W P A T K I P ) 中的早期安全性已被证明是容易破解的[ T W P O 7 ] [ O M O 9 ] 。虽然W P A 2 - A E S 算法选择的预共享密钥( P S K ) 会暴露出一个巨大的漏洞给字典攻击, 但是从本质上看它是更具弹力的。
E A P 没有自已的身份认证方法, 但是却继承了自已所依赖的身份认证方法的脆弱性。此外, 那些使用密钥的基于E A P 的系统, 如果密钥是源于用户密码的( 例如, E A P - G S S 、E A P - L E A P 、 E A P - S I M ) , 也容易受到字典攻击0 8 0 2 . 1 X / E A P 容易受到包含隧道身份验证协议的M I T M 攻击( 参见[ A N N O 2 ] ) 。这一问题涉及在连接双方中只有一方通过身份认证之后如何派生出一个会话密钥。例如, 如果服务器验证了一个客户端, 并将这次交换作为基础通过一个派生的会话密钥来形成一个安全的隧道, 而其他验证相反方向的协议将会在隧道内运行, 那么一个扮演合法客户端的M I T M 攻击是有可能的。
已发布大量针对I P s e c 的攻击, 包括利用无完整性保护加密的一类攻击[ P Y O 6 ] 。这是一个I P s e c 文档支持但不鼓励的配置选项。从本质上看, 在不被发现的前提下使用位翻转攻击修改密文的能力, 可以将加密数据报解密为那些通过可预测的方式损坏的数据报。例如, 一个正确设置了位翻转的处于隧道模式的E S P 数据报可能会解码出一个数据报, 该数据报通过人为地增长I n t e m e t 头部长度( H L ) 字段而使负载被当作( 无效的) I P 选项处理, 最终产生一条对攻击者有用的I C M P 消息。
在传输层, S S L 2 . 0 被证明在密码套件回滚攻击中是脆弱的。在该攻击中, 中间人能够使s s L 连接的每一端都只包含一个具有弱加密能力的节点。这样就会使节点采用一个不安全的密码套件, 而攻击者可以利用这些密码套件。一个基于S S L / T L S 的更复杂的攻击会利用在接收端的运行顺序: 解密、删除填充数据、检查M A C o 如果填充长度或消息认证码M A C是不正确的, 将会产生一条S S L 错误消息。通过观察这些错误消息的时序, 就能够发起一个P a d d i n g o r a c l e 攻击( 参见[ C H V V O 3 ] ) 从O p e n S S H 中恢复出明文o p a d d i n g o r a c l e 攻击能够分辨出明文是否用于创建一个具有有效填充量的密文。如前文所述, 一个更新的攻击( T L sl . 2 的) 涉及中间人攻击, 该攻击将一个任意长度的前缀注人一个T L s 关联中, 当一个合法的客户端到达之后[ R D O 9 ] , 该关联会被重新协商( 但不会继续) 。上述攻击的解决方法是将之前的信道参数绑定到使用T L S 关联的子信道中。关于信道绑定与安全的问题在[ R F C 5 0 5 6 ]中有详细的介绍。
保障D N S 的安全已经提出很长时间, 但是它的重要性通过第1 1 章介绍的K a m i n s k y 缓存位置攻击才得以重视。另一个提出较早的问题是可以利用N S E C 记录发起枚举攻击, 并且还可以利用N S E C 3 记录应对该攻击[ B M O 9 ] 0 2 0 0 9 年年底, 丹●伯恩斯坦在一次研讨会上提出了若干关于D N S S E C 的问题[ B O 9 ] : 它能够作为扩大D o S 攻击的基础, 即使在N S E C 3中, 它也会泄露区域数据, 它的实现包含了可利用的错误与不能撤销的签名, 加密可能会受到密码分析, 一些N S 与A 记录会造成漏洞。在撰写本书时, 根区域只在最近才被签名, 而很少有组织会完整地采纳D N S S E C o 因此, 在未来几年一些改进与修订可能会逐步实施。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值