上行链路洪水攻击
另一个常见的副作用是在到目标的路径上对链路的洪水攻击。攻击者发送的请求和信息包很少能生成足够的数据流量来填满链路。然而,来自目标的响应通常会使数据流量大大增加。基本的例子就是SYN洪水。64字节的 SYN 信息包令目标生成 3 个 SYN-ACK(原因在于重新传输尝试)。这种效果在基于应用程序的攻击中更加有效。简单的 HTTP 请求通常约有 200 字节,同时发回到客户端的数据通常大约10,000 字节。
在“一对一”的攻击中,关键是来自服务器的响应不发往攻击者,因为这种回应最终也会对攻击者的链路进行洪水攻击。这种情况下,伪造需可以且容易容易执行。基于应用程序的UDP完全适合生成这种结果。在DNS 洪水的情况下对此点进行论证特别简单(请参阅逻辑缺陷/运行方式)。无需考虑任何到 TLD 和 SOA 的请求(通过目标因特网链接而再度提高数据流量),对重要域上 MX 记录的请求为原始请求量添加了一个重要的倍增因子。
#digradware.commx
− 请求:71 个字节
− 应答:551 个字节
− 倍增因子 = 7¾
这些副作用应视为主要问题,尤其在共享的基础架构中,,针对单个服务器的攻击可能影响到依赖与原始目标相同的基础架构的数十个系统。
杠杆作用
Psh标记
PSH标记是基于协议的平衡因子,其针对任何基于TCP的攻击。当信息包被堆栈接收到时,其是与接收到的其他信息包一起存储在特定的缓冲中。一旦缓冲存满后,便发送信息包以供进一步处理。信息包的传输产生了可观的额外负担,而此处的缓冲优化了上下文更改的“成本”。PSH 标记强制堆栈释放缓冲。在像 SYN、SYN-ACK 或异常洪水或甚至应用程序层攻击等基于 TCP 的攻击情况下,攻击者在 TCP 标头中添加 PSH 标记的成本为零。另一方面,因上下文的永久性更改而显著增加服务器的额外负担。
恶意数据流量中继
在某些情况下,攻击系统的强度可能到达极限。这主要是针对在LAN上执行攻击的情况,因为在此情况下使用标准的PC 很难达到千兆的吞吐量。可以利用若干工具提供的信息包中继能力来克服这一困难。原理相对比较简单。为了消除创建信息包所需的 CPU 使用率,就需要获取随机源地址/端口、计算长度、校验和等。在发动攻击时嗅探数据流量。然后以一高倍增因子来循环中继捕获文件,以确保达到攻击资源的极限。要确保目标难以识别循环方案而只筛选出来源,原始数据包的样本必定是相对重要的。
反射
反射是将其他系统用作中继和/或放大攻击的机制。对于大多数攻击类型,可以在网络或应用程序级执行反射。前一种情况的目的是为了获取发送到目标的信息包数量的倍增因子。在第二种情况下,使用反射来获取(攻击者发送的数据)/(目标接收的数据)的最高可能比率。
smurfing攻击是网络反射攻击的最佳范例。基本上,它是以向一个广播地址发送ICMPECHO REQUEST 信息包来构成攻击,且有一个针对攻击目标的伪造来源。防护不周的网络可能允许存在这种广播 ping,使得网络上的每个系统都向目标发送回 ICMP ECHO REPLY 信息包。对中继网络的选择很重要。选择的中继网络必须明显允许存在广播 ping。而且,为了能够以很高的速率传输巨量 ICMP ECHO REPLY 信息包,选择的中继网络应能够提供较高的带宽。攻击的效率非常易于评估。在 256kbps 的 ADSL 上行链路中,可以每秒发送大约 1100 个 ICMP 信息包。假如中继网络“只有”50 个系统,则将在每秒内针对大约 10 Mbps 的总带宽发送 50,000 多个 ICMP 信息包来对目标进行洪水攻击。这种攻击很容易实现,任何人只要有一台标准 PC 机和宽带因特网接入,输入以下一条命令即可。
#hping3--icmp--spoof --flood
在应用程序层,攻击的目标是对目标应用程序进行洪水攻击,或者用中继主机所发送的数据来填满因特网链路。以上所述的基本DNS范例(请参阅副作用/上行链路洪水攻击)是基于应用程序的反射的极佳范例,其可用于攻击另一台DNS 服务器。因为应用程序依赖于无态协议,所以只要一条命令行便可轻易地将巨量响应(而请求很少)发送回给获得 UDP/53 数据流量授权的伪造的 DNS 服务器。
#dnsreflect
此外,最近越来越多的应用程序反射攻击依赖于供RTP(实时传输协议)用于信令用途的SIP(会话初始化协议)。为了互连SIP UA(用户代理)而在 SIP 服务器之间需要代理服务器,这意味着必须在 SIP INVITE 请求的标头中指定通信信道的末端。特别是在:“通过”字段标识必须与之建立通信的系统。因为没有执行任何认证且 SIP 依赖于 UDP,所以伪造很容易实现。因此,相当容易理解可能产生的杠杆作用。一个典型的 SIP INVITE 请求大约 1 KB。采用这种请求,可让服务器连续向伪造的来源发送数十个 kbps 的数据流媒体。在 256 kbps ADSL 上行链路上,便可以在每秒内创建大约 64 个这种连接,从而迅速填满目标的上行链路。
第三方
信息包生成和带宽不是攻击者在发送拒绝服务攻击时可能要面对的瓶颈问题。在处理依赖于TCP会话的应用程序时,尤其是在待决会话的情况下,由攻击堆栈来进行的处理可能成为一项限制因素。如果采用标准堆栈函数来执行这种操作,则web 服务器中心接受的会话总数极有可能高于系统能够建立的会话的最大数目。在这种情况下,待决会话攻击将没有效果,且唯一会受到攻击影响的系统将是攻击系统本身。
一种可能是,为了能够建立比预期极限数目还要多的会话,可以让第三方服务器把加工过的RST信息包发送到攻击站点。第三方是设在攻击系统的网络上,其嗅探攻击者与目标之间的数据流量。建立会话时,第三方主机不断跟踪会话信息、IP地址、端口和序列号。当 3 向握手完成时,第三方根据其保存在内存中的信息而将一个完全合法的 RST 信息包发送到攻击系统。通过这一方式,攻击系统释放连接,而目标服务器仍然将此连接视为打开。
Botnet
最后但也是最著名的杠杆作用是使用bot。其目的只是要巨量的第三方系统执行攻击。这显然可以提高由单个系统执行的单一攻击的强度,而且可以严重破坏高性能的网络和系统。使用bot时必须考虑若干参数。首先是 bot 在第三方系统上的安装方式。其次是传输命令的命令通道,最后是所执行的操作。
Bot的第一个特点是它们以系统的合法所有者的名义进行操作。这意味着它们是秘密安装并假定为是悄悄运行的。Bot在聚合数百或数千台受到攻击的主机时非常有效,这意味着其安装有赖于蠕虫或大规模黑客攻击机制。大规模黑客攻击是自动安装的基础。通过试图攻击若干漏洞的脚本来执行大规模黑客攻击。在成功的情况下,数据净荷安装代理程序。此时传播速度相对缓慢,且易于追溯botnet 的来源。出现蠕虫以后,这种技术得到了改善。在这第二个阶段,内嵌在攻击中的数据净荷安装代理程序,然后从这个新的起点自动尝试攻击其他系统。这个阶段的传播速度更快,且更难识别 botnet 的来源,这是因为必须逐步跟踪感染才能查出蠕虫的始作俑者。
支持命令通道的这种架构现在通常包含3层架构:一台或多台主控端、一个或多个代理处理程序以及若干个代理程序。主控端是启动攻击命令的发出点。代理处理程序是这种架构中最重要的部分。它们的目的是寻找可用的代理程序,并从主控端传送命令。代理程序也称为巫毒,是在受到攻击的主机上运行的进程。这些代理程序负责亲自执行攻击。
代理处理程序是网络中最灵活的部分,通常定义在架构中各个部分之间进行通信所使用的协议。关键点是代理程序和代理处理程序之间通信的方向和本质。通过代理程序建立的与代理处理程序的通信通常更加有效,这是因为防火墙更可能让从内部网络传出的数据流量通过。作为传输层的合法协议也更加有效。通过HTTP获取命令的代理程序几乎不受阻止,因为与外部web 服务器的通信通常得到公司安全策略的授权。如果使用的协议不是 HTTP,但代理处理程序依赖于 TCP 端口 80 来通信,则需要进行协议异常情况检测来阻止这种数据流。因此,通常可以阻止在非标准(HTTP、SMTP 等)端口上进行的通信,但是如果配置的防火墙不好,则阻止很困难。
最常见的代理处理程序是运行在IRC通道上的bot。主机受到攻击便会连接到特定的 IRC 通道。然后代理处理程序只需检查活动的成员来建立可用的代理程序列表。代理程序根据主控端在 IRC 上发送的命令来执行操作。这种代理处理程序可靠、灵活且易于安装设置。不过,IRC 通信常常受到防火墙的隔离,而且整个架构不够隐蔽。因此更容易被顺着来源追溯到主控端。不远的将来,使用秘密通道应视为 botnet 管理的一种趋势。
Bot执行的操作无疑是洪水。这是从逻辑上理解,因为bot的主要作用是利用巨量的第三方巫毒。从基本的 SYN 洪水到自定义和面向应用程序的洪水,几乎所有的洪水技术都已经在 botnet 上得到实施。因此,判断一个 botnet 是否良好的标准是代理程序可根据主控端发送的命令调整其行为的能力。由于各个计算机的防护机制各有不同,所以对于可以执行 SYN 洪水、异常洪水以及建立数千个合法 HTTP 会话的代理程序来说,便能够让攻击者根据对目标产生的影响来更改攻击的类型。另一个优点是可以管理能发送多个操作的单个 botnet
Flashmob
Botnet的主要缺点是它依赖的是静态源。时间一长便可能将一些危险的IP地址列入黑名单,还会通知网络管理员某些系统已经遭受攻击。要考虑到的一点就是 botnet 的寿命很有限。Flashmob 则不存在这些缺点。
这种机制的目的是令无辜的用户在无意中执行攻击操作。这种机制十分简单。攻击者建立一个web站点。在该web 站点上,某些恶意内容强迫无辜用户的浏览器发动对特定目标的攻击。这一特定目标通常是链接到目标 web 站点的数百个隐藏框架或动态代码,例如 Java 小程序或 ActiveX,这样便使其可以执行某些更高级的操作。随着家庭计算机的功能提高和一般的宽带接入,完全有可能在用户没有察觉的情况下产生重要的数据流量。对于攻击的目标服务器而言,不再能列出黑名单,因为每当一名新的用户连接到该 web 站点,这名用户的计算机便会成为新的攻击源。缺点是很难令 Web 站点有足够大的数据流量,从而不能确保对目标持续发送重要的数据流量。
结论
要消除拒绝服务的真正难点是这些攻击涉及的技术太庞杂。对SYN洪水有效的防护措施,对于防护待解决的会话攻击来说毫无助益,而对于公司网路来说,如果接入路由器因短时间内的巨量信息包而崩溃,这也不再会有任何作用。
攻击者意识到了这一点,而这也成为他们所掌握的利器。当一种攻击的功效不足时,他们立即采用其他技术。这已经成为司空见惯的现象,因此,越来越需要开发功能丰富、应变灵活的高性能安全技术。