smurf、trinoo、tfn、tfn2k以及stacheldraht是比较常见的DoS攻击程序,本文将对它们的原理以及抵御措施进行论述,以帮助管理员有效地抵御DoS风暴攻击,维护站点安全。
一、何为"smurf 攻击",如何抵御?
Smurf是一种简单但有效的 DDoS 攻击技术,它利用了ICMP (Internet控制信息协议)。ICMP在Internet上用于错误处理和传递控制信息。它的功能之一是与主机联系,通过发送一个“回音请求”(echo request)信息包看看主机是否“活着”。最普通的ping程序就使用了这个功能。Smurf是用一个偷来的帐号安装到一个计算机上的,然后用一个伪造的源地址连续ping一个或多个计算机网络,这就导致所有计算机所响应的那个计算机并不是实际发送这个信息包的那个计算机。这个伪造的源地址,实际上就是攻击的目标,它将被极大数量的响应信息量所淹没。对这个伪造信息包做出响应的计算机网络就成为攻击的不知情的同谋。
下面是Smurf DDoS 攻击的基本特性以及建议采用的抵御策略:
1、Smurf的攻击平台:smurf为了能工作,必须要找到攻击平台,这个平台就是:其路由器上启动了 IP广播功能。这个功能允许 smurf 发送一个伪造的ping信息包,然后将它传播到整个计算机网络中。
2、为防止系统成为 smurf攻击的平台,要将所有路由器上IP的广播功能都禁止。一般来讲,IP广播功能并不需要。
3、攻击者也有可能从LAN内部发动一个smurf攻击,在这种情况下,禁止路由器上的IP 广播功能就没有用了。为了避免这样一个攻击,许多操作系统都提供了相应设置,防止计算机对IP广播请求做出响应。更多信息请参阅http://www.cert.org/advisories/CA-98.01.smurf.html的附录A。
4、如果攻击者要成功地利用你成为攻击平台,你的路由器必须要允许信息包以不是从你的内网中产生的源地址离开网络。配置路由器,让它将不是由你的内网中生成的信息包过滤出去,这是有可能做到的。这就是所谓的网络出口过滤器功能。
5、ISP则应使用网络入口过滤器,以丢掉那些不是来自一个已知范围内IP地址的信息包。
6、挫败一个smurf 攻击的最简单方法对边界路由器的回音应答(echo reply)信息包进行过滤,然后丢弃它们,这样就能阻止“命中”Web服务器和内网。对于那些使用Cisco路由器的人,另一个选择是CAR (Committed Access Rate,承诺访问速率)。
丢弃所有的回音应答信息包能使网络避免被淹没,但是它不能防止来自上游供应者通道的交通堵塞。如果你成为了攻击的目标,就要请求ISP对回音应答信息包进行过滤并丢弃。 如果不想完全禁止回音应答,那么可以有选择地丢弃那些指向你的公用Web 服务器的回音应答信息包。 CAR 技术由Cisco 开发,它能够规定出各种信息包类型使用的带宽的最大值。例如,使用CAR,我们就可以精确地规定回音应答信息包所使用的带宽的最大值。
二、何为 "trinoo",如何抵御它?
trinoo 是复杂的 DDoS 攻击程序,它使用“master”程序对实际实施攻击的任何数量的“代理”程序实现自动控制。攻击者连接到安装了master程序的计算机,启动master程序,然后根据一个IP地址的列表,由master程序负责启动所有的代理程序。接着,代理程序用UDP 信息包冲击网络,从而攻击目标。在攻击之前,侵入者为了安装软件,已经控制了装有master程序的计算机和所有装有代理程序的计算机。
下面是trinoo DDoS 攻击的基本特性以及建议采用的抵御策略:
1、在master程序与代理程序的所有通讯中,trinoo都使用了UDP协议。入侵检测软件能够寻找使用UDP协议的数据流(类型17)。
2、Trinoo master程序的监听端口是27655,攻击者一般借助telnet通过TCP连接到master程序所在计算机。入侵检测软件能够搜索到使用TCP (类型6)并连接到端口27655的数据流。
3、所有从master程序到代理程序的通讯都包含字符串"l44",并且被引导到代理的UDP 端口27444。入侵检测软件检查到UDP 端口27444的连接,如果有包含字符串l44的信息包被发送过去,那么接受这个信息包的计算机可能就是DDoS代理。
4、Master和代理之间通讯受到口令的保护,但是口令不是以加密格式发送的,因此它可以被“嗅探”到并被检测出来。使用这个口令以及来自Dave Dittrich的trinot脚本http://staff.washington.edu/dittrich/misc/trinoo.analysis,要准确地验证出trinoo代理的存在是很可能的。
一旦一个代理被准确地识别出来,trinoo网络就可以安装如下步骤被拆除:
·在代理daemon上使用"strings"命令,将master的IP地址暴露出来。
·与所有作为trinoo master的机器管理者联系,通知它们这一事件。
·在master计算机上,识别含有代理IP地址列表的文件(默认名"..."),得到这些计算机的IP地址列表。
·向代理发送一个伪造"trinoo"命令来禁止代理。通过crontab 文件(在UNIX系统中)的一个条目,代理可以有规律地重新启动, 因此,代理计算机需要一遍一遍地被关闭,直到代理系统的管理者修复了crontab文件为止。
·检查master程序的活动TCP连接,这能显示攻击者与trinoo master程序之间存在的实时连接。
·如果网络正在遭受trinoo攻击,那么系统就会被UDP 信息包所淹没。Trinoo从同一源地址向目标主机上的任意端口发送信息包。探测trinoo就是要找到多个UDP信息包,它们使用同一来源IP地址、同一目的IP地址、同一源端口,但是不同的目的端口。
·在http://www.fbi.gov/nipc/trinoo.htm上有一个检测和根除trinoo的自动程序。
三、何为"Tribal Flood Network" 和 "TFN2K",如何抵御?
Tribe Flood Network与trinoo一样,使用一个master程序与位于多个网络上的攻击代理进行通讯。TFN可以并行发动数不胜数的DoS攻击,类型多种多样,而且还可建立带有伪装源IP地址的信息包。 可以由TFN发动的攻击包括:UDP冲击、TCP SYN 冲击、ICMP回音请求冲击以及 ICMP 广播。
以下是TFN DDoS 攻击的基本特性以及建议的抵御策略:
1、发动TFN时,攻击者要访问master程序并向它发送一个或多个目标IP地址,然后Master程序继续与所有代理程序通讯,指示它们发动攻击。
TFN Master程序与代理程序之间的通讯使用ICMP回音应答信息包,实际要执行的指示以二进制形式包含在16位ID域中。ICMP (Internet控制信息协议)使信息包协议过滤成为可能。通过配置路由器或入侵检测系统,不允许所有的ICMP回音或回音应答信息包进入网络,就可以达到挫败TFN代理的目的。但是这样会影响所有使用这些功能的Internet程序,比如ping。
TFN Master程序读取一个IP地址列表,其中包含代理程序的位置。这个列表可能使用如"Blowfish"的加密程序进行了加密。如果没有加密的话,就可以从这个列表方便地识别出代理信息。
2、用于发现系统上TFN 代理程序的程序是td,发现系统上master程序的程序是tfn。TFN 代理并不查看ICMP回音应答信息包来自哪里,因此使用伪装ICMP 信息包冲刷掉这些过程是可能的。
TFN2K是TFN的一个更高级的版本,它“修复”了TFN的某些缺点:
1、在TFN2K下,Master与代理之间的通讯可以使用许多协议,例如TCP、UDP或ICMP,这使得协议过滤不可能实现。
2、TFN2K能够发送破坏信息包,从而导致系统瘫痪或不稳定。
3、TFN2K伪造IP源地址,让信息包看起来好像是从LAN上的一个临近机器来的,这样就可以挫败出口过滤和入口过滤。
4、由于TFN2K是最近刚刚被识破的,因此还没有一项研究能够发现它的明显弱点。
在人们能够对TFN2K进行更完全的分析之前,最好的抵御方法是:
·加固系统和网络,以防系统被当做DDoS主机。
·在边界路由器上设置出口过滤,这样做的原因是或许不是所有的TFN2K源地址都用内部网络地址进行伪装。
·请求上游供应商配置入口过滤。
四、何为 "stacheldraht",如何防范?
Stacheldraht也是基于TFN和trinoo一样的客户机/服务器模式,其中Master程序与潜在的成千个代理程序进行通讯。在发动攻击时,侵入者与master程序进行连接。Stacheldraht增加了以下新功能:攻击者与master程序之间的通讯是加密的,以及使用rcp (remote copy,远程复制)技术对代理程序进行更新。
Stacheldraht 同TFN一样,可以并行发动数不胜数的DoS攻击,类型多种多样,而且还可建立带有伪装源IP地址的信息包。Stacheldraht所发动的攻击包括UDP 冲击、TCP SYN 冲击、ICMP 回音应答冲击以及ICMP播放。
以下是Stacheldraht DDoS攻击的基本特征以及建议采取的防御措施:
1、在发动Stacheldraht攻击时,攻击者访问master程序,向它发送一个或多个攻击目标的 IP地址。Master程序再继续与所有代理程序进行通讯,指示它们发动攻击。
Stacheldraht master程序与代理程序之间的通讯主要是由ICMP 回音和回音应答信息包来完成的。配置路由器或入侵检测系统,不允许一切ICMP回音和回音应答信息包进入网络,这样可以挫败Stacheldraht代理。但是这样会影响所有要使用这些功能的Internet程序,例如ping。
2、代理程序要读取一个包含有效master程序的IP地址列表。这个地址列表使用了Blowfish加密程序进行加密。代理会试图与列表上所有的master程序进行联系。如果联系成功,代理程序就会进行一个测试,以确定它被安装到的系统是否会允许它改变"伪造"信息包的源地址。通过配置入侵检测系统或使用嗅探器来搜寻它们的签名信息,可以探测出这两个行为。
代理会向每个master发送一个ICMP 回音应答信息包,其中有一个ID 域包含值666,一个数据域包含字符串"skillz"。如果master收到了这个信息包,它会以一个包含值667的ID 域和一个包含字符串"ficken"的数据域来应答。代理和master通过交换这些信息包来实现周期性的基本接触。通过对这些信息包的监控,可以探测出Stacheldraht。
一旦代理找到了一个有效master程序,它会向master发送一个ICMP信息包,其中有一个伪造的源地址,这是在执行一个伪造测试。这个假地址是"3.3.3.3"。如果master收到了这个伪造地址,在它的应答中,用ICMP信息包数据域中的"spoofworks"字符串来确认伪造的源地址是奏效的。通过监控这些值,也可以将Stacheldraht检测出来。
3、Stacheldraht代理并不检查 ICMP 回音应答信息包来自哪里,因此就有可能伪造 ICMP 信息包将其排除。
4、Stacheldraht代理程序与TFN 和 trinoo一样,都可以用一个C程序来探测,它的地址是:http://staff.washington.edu/dittrich/misc/ddos_scan.tar。
五、如何配置路由器、防火墙和入侵检测系统来抵御常见DDoS攻击?
1、抵御 Smurf
·确定你是否成为了攻击平台:对不是来自于你的内部网络的信息包进行监控;监控大容量的回音请求和回音应答信息包。
·避免被当做一个攻击平台:在所有路由器上禁止IP广播功能;将不是来自于内部网络的信息包过滤掉。
·减轻攻击的危害:在边界路由器对回音应答信息包进行过滤,并丢弃;对于Cisco路由器,使用CAR来规定回音应答信息包可以使用的带宽最大值。
2、抵御trinoo
·确定你是否成为攻击平台:在master程序和代理程序之间的通讯都是使用UDP协议,因此对使用UDP协议(类别 17)进行过滤;攻击者用TCP端口27655与master程序连接,因此对使用TCP (类别6)端口 27655连接的流进行过滤;master与代理之间的通讯必须要包含字符串"l44" ,并被引导到代理的UDP 端口27444,因此对与UDP端口27444连接且包含字符串l44的数据流进行过滤。
·避免被用作攻击平台:将不是来自于你的内部网络的信息包过滤掉。
·减轻攻击的危害: 从理论上说,可以对有相同源IP地址的、相同目的IP地址的、相同源端口的、不通目的端口的UDP信息包序列进行过滤,并丢弃它们。
3、抵御TFN和TFN2K
·确定你是否成为攻击平台:对不是来自于内部网络的信息包进行监控。
·避免被用作攻击平台:不允许一切到你的网络上的ICMP回音和回音应答信息包,当然这会影响所有要使用这些功能的Internet程序;将不是来源于内部网络的信息包过滤掉。
4、抵御Stacheldraht
·确定你是否成为攻击平台:对 ID域中包含值666、数据域中包含字符串"skillz"或ID域中包含值667、数据域中包含字符串"ficken" 的ICMP回音应答信息包进行过滤;对源地址为"3.3.3.3"的ICMP 信息包和ICMP信息包数据域中包含字符串"spoofworks"的数据流进行过滤。
·避免被用作攻击平台:不允许一切到你的网络上的ICMP回音和回音应答信息包, 当然这会影响所有要使用这些功能的Internet程序;将不是来源于内部网络的信息包过滤掉;将不是来源于内部网络的信息包过滤掉。