局域网瘫痪 源自傀儡主机DDoS攻击

接到客户求助,最近进行了一次网络“出诊 。这是一个由傀儡主机的DDos攻击引发的网络故障,案例比较典型,排错过程也颇曲折 。笔者就还原其过程,与大家分享 。
1.网络环境
这个客户是一家化工企业,网络规模不大 。十多台交换机组成的局域网,节点大约150个左右 。没有划分VLAN,—部分主机运行IPX协议,另一部分运行TCP/IP协议 。其中只有少数主机可以访问Internet,接入模式为ADSL路由器直接连接网络中的一台交换机 。ADSL路由器中启用了其自带防火墙功能,所有可以上网的主机安装了防病毒软件 。
2.故障描述
最近的某一天,整个网络突然瘫痪 。可以看到所有交换机端口指示灯急速闪烁,测试得知网络中任意两台主机之间不能相互ping通,所有网络应用均不能正常进行 。在拔掉部分网线(交换机之间的级连线)后,症状有所减缓,最后恢复正常 。将拔掉的网线逐一插回原位,故障现象未重新出现 。此后这种现象不定时、无规律地出现 。
3.故障分析
基于故障发生时交换机端口指示灯急速闪烁、网络中任意两台主机之间相互不能ping通这一现象,初步断定此时网络中充斥了大量的广播包,耗尽了网络资源 。那么这些突然出现的巨量广播包是哪里来的呢?为查找广播源,在故障出现时,使用Sninffer软件捕捉数据包 。结果发现,网络中并没有出现原来估计的广播包,却有大量的不正常单目IP数据包 。
4.排除故障
通过分析发现,这些数据包是主机172.*.*.1l发送给主机219.*.*.88的,发送速度不小于每秒l万5千个 。询问管理员得知,172.*.*.1l是内网的一台可以访问Internet的主机 。这明显是不正常的,将该可疑主机断开后,问题解决 。
5.深入分析
网络故障虽然排错,但笔者感觉一切并没有这么简单 。因为按常理,发送给主机219.*.*.88的数据包不是广播包,不应该被发送到运行Sniffer主机所在的交换机端口 。很明显,这些数据包在网络中以广播的形式被发送了 。如此数量的广播包充斥网络,正是造成网络瘫痪的罪魁祸首 。
(1).局域网主机成了傀儡
为搞清故障原因,在可疑主机上安装Sniffer,分析网络行为 。通过抓包分析发现,一旦连接Internet,该主机主动连接到外网中一FTP服务器,并下载文本文件ddos.txt 。那么,ddos.txt文件内容中有什么呢?原来是一个IP地址和8O端口 。然后,对数据包进一步分析发现所有数据包的目标主机正好是ddos.txt中指定的IP地址 。这些无意义的数据包之所以使用8O端口,是为了突破防火墙的限制 。原来,这台主机“有幸成了一次分布式拒绝服务攻击(DDoS)的傀儡机 。每次连接E互连网,自动到一个FTP服务器下载文件ddos.txt,如果该文件为空,则继续以一定时间间隔下载文件,直到获得的文件中有目标主机的IP地址和端口后,即开始向目标主机展开DoS攻击 。这正是网络故障现象不定时、无规律地出现的原因 。
(2).ADSL路由器被“淹没
另一个问题是,这些攻击包应该是从傀儡机发送到ADSL路由器,然后到Internet中目标主机的,并不是通常所说的广播包,为什么交换机以广播的形式发送这些广播包呢?分析可能原因只有一个:此时交换机的地址转发表(CAM)中没有ADSL路由器内网接口的物理地址,引起交换机将单目包广播到所有交换机端口 。
开始时,交换机地址转发表中包含ADSL路由器的物理地址 。那么,傀儡机开始攻击后,网络中形成一个稳定的攻击数据流:傀儡机→若干交换机→ADSL路由器→被攻击的目标主机 。此时对内网的影响仅仅是某些交换机的端口和ADSL路由器,ADSL路由器因为忙于处理大量的攻击包而被“淹没,会导致内网中主机访问互连网出现问题 。

推荐阅读