http://bbs.chinaunix.net/thread-732960-1-1.html

看了《问绿盟黑洞》的文章好几天了,有点想法不吐不快。前两天正忙,现在闲下来了,说说我的想法。文章中会提到一些厂商的技术,有正有反,大家不要对号入座,主要是希望对你们的技术提高有帮助。我以原始的ddos的先行者syn flood来举例说明,cc我不打算评价,因为我认为syn flood的效果远远好于cc,而隐蔽性是cc远远达不到的。先点评一下关于DDoS话题方面的一些网友的错误认识和厂商的技术弱点。以下如果没有特殊指明,ddos我指的就是syn flood这种最原始、最有效、最简单、最可爱的东西。

1.只要一谈论ddos想到的就是大流量,就是无边无际、无际无边的带宽消耗战。
错了,syn flood可不是带宽消耗战,drdos才是!那是因为syn flood的使用者使用不当,才会有今天大家的错误认识。

2.天,我CPU都满跑了,为什么目标机一点事都没有?我用的可以Linux下开源的、大家都害怕的、网评第1的攻击软件呀。
检查一下你的网关是不是有NAT,如果有。不是你的包没出去,就是你的网关快阵亡了,您赶快住手吧。
去掉你前面的防火墙,因为防火墙在你发起攻击时,最先受到损害,更重要的是它是你财产的一部分。
你极有可能拿一款ether下的攻击程序在pppoe网络中使用了,为了提高效率攻击数据包都是自己填充的,所以程序本身可能把数据包进行了ether_type的二层封装,如果你在pppoe环境中攻击,请自己修改源代码改为PPPOE封装。否则的话,你攻击的不是目标机,而是在自己的房间里大小便。要学会分析协议,下面才是二层PPPOE封装的正确格式:
88 64 11 00 0B D0 00 56 00 21

3.这个ddos设备没什么了不起,用的就是syn cookie和syn proxy。
我认为这两种方法是当前最有效的解决方法,就像攻击者必须联网才能发起攻击一样,这两种措施是必做的。如果您没用这两种方法就实现了ddos防御,以下的内容您就不用看了。因为您是我见过的第一牛人,我在您面前绝对是个晚辈的。在此就不浪费您的宝贵时间了。如果您感觉我还可救,给我留点面子传张纸条教侮我一番吧。

4.drdos比ddos时髦多了,可以四两拨千斤
真不好意思,syn ack这个数据包应该从内网口收到才对,从外网口收到时直接丢掉就可以了。它浪费的是你的宽带而不是内存或者大量的cpu。
你可能会说我后面的服务器是ftp并工作在主动模式,所以有时syn ack也是不能丢的。嗯…解决方案你自己已经说出来了,自己想个办法吧。

5.DDoS是最没有水准的攻击类型,菜鸟才用。
这只能说明你只是使用ddos工具的人,而不是一个编写ddos攻击类程序的人。大家知道一款好的ddos攻击软件,所发的包在各协议首部字段的合法范围内越随机越好。只要有一个字段该变但你没变的,特证过滤一下子就把你干掉了。如果攻击包是以多播、回环为源ip发送,我只能说攻击者在和你开玩笑,看看日历确认今天不是愚人节。
但满足随机就是好的攻击软件吗?喵~喵~俺家的小花猫都知道,远远不是滴,单纯发syn攻击包就不是好的攻击方式。浪费ddos设备资源的是握手的第三个ack包。但第三个包构造上又很有讲究,举个例子:国内某某ddos厂商的主页,我小流量正常访问时抓包,可以发现他没有做syn proxy,但当我1000pps时,通过抓包就可以看出,他启用syn proxy了,并且syn cookie也随之打开了,你问我怎么知道的?看看它回复的syn ack包的tcp选项部分的变化你就明白了。这时是他启用防护的时机,也是它最脆弱的时候,细心的构造一个syn包,一个ack包,算准了它的cookie,喂给它。喵~小花猫都知道5000pps足够了。我不是有意这么做的,是它在CU里叫大家帮忙做测试,我简单的分析了一下,是这个原理。没叫劲,睡觉了,第二天具说有3000台肉机参与了,不知是真是假,如果没有了解原理,你就算动用8000台也没用啊!
这里真正的技术是推算cookie,但我在市面上找不到一款ddos攻击软件有这个方面的功能,你可能会说这不就是cookie攻击吗,我不这么认为,我不会发大量的ack来消耗它的cpu资源,我只是想钻它算法的空子。因为一种cookie的算法就好比是一类ddos设备的指纹,推出这个cookie的参数与运算法则,以后遇到它的时候,它就死定了。当然厂商也不傻,算cookie的参数是个很大的数并且还是在不断变化,但不会经常变,每次启动的时候变一次就算很智能了。因为每天小花猫吃饭的时候,我都会便顺发送一个相同的syn包给它,它返给我的syn ack中的cookie一直都是一样的。哈哈…如果我有耐心,终有一天我会推出来的,注意:这个syn包源IP是真实的,所以我能观察到它的返回数据包,并且他根本就发现不了偶。一天才一个syn包嘛。
顺便问问版主,绿盟在测试黑洞的时候,肯定有一种攻击软件是他们自己写的,针对自己的产品的弱点、软肋、命门、死穴、扪门发送5000pps应该就可以挂了。喵~喵~喵~小花猫咽到了。

6.这个百兆ddos设备真牛呀,百兆的线路我都D满了,还可以正常访问保护的服务器
你的感叹用错对像了,你应该感叹于这条网线的质量很好,一条质量优秀的网线,百兆千兆的确都可以跑起来呀。另外一个设备适用于百兆还是千兆环境的瓶颈,你没有弄清楚。我用82559网卡,我的算法再好也不可能你把百兆线路D满了,后面的服务器你还可以访问。你的这种情况,我可以很负责任的告诉你,这个外表百兆ddos设备实际采用了千兆平台和千兆网卡,而流量的瓶颈在你测试中的其它结点上。仅此而己。

7.我们的算法不对syn包做回追处理,所以你的下行带宽没有被浪费。
这话也说的出口,真汗!小花猫甩甩尾巴跑去喝水了。你把10kpps的发包器真接插在百兆ddos设备上面试一下,看看是回复syn ack时CPU使用率高,还是只接受syn包不回复时CPU占用率高。告诉你,后者的cpu占用率更高一些。为什么呢?因为我回复syn ack时也是一种另类的保护策略,在局域网中,攻击者发的数据包也必须依照冲突检测载波监听的方式来发送攻击包,如果你回复等量的syn ack也就是在堵攻击者的嘴,他发包的速度会成倍的减下来。这意味这什么?意味着你用你的下行带宽换来了上行带宽,这么好的机会你为什么要放弃?这就好像一群人在用砖头拍你,拍的你上串下蹦,左躲右闪,累的你呼吃带喘,你心里还在想我TM怎么这么聪明呀,没有回拍他们,节约了不少力气,所以现在身行才能如此敏捷。

8.你看我们的设备连IP地址都没有,可以实现网络隐身,所以很安全
幸好小花猫不在身边,否则还不得被呛个半死呀。这个因果关系也说的出来?那我是不是可以说工作在桥模式下的设备都很安全?这是我见过的最大的拿缺点当优点忽忧人的说词。你把IP地址给我设上,我为什么要网络隐身啊,我光明正大!你不是防ddos攻击吗?你自己的ip为什么不敢暴露在公网上提供http管理控制?厂商会找出各种的手段来忽忧你,以下是最常见的托词:设置管理IP地址当然可以了,但要从另外的一个网口专门引出来,并且我们不对管理网口做防护,因为这样会增加我们系统的负载呀。呀~~呀~~呀~~,回想起测试性能的时候他们好像说自己的算法很牛,什么国际领先啦,什么可以抵御所有未知的ddos攻击啦,什么算法CPU零负载啦,什么指纹啦,什么单向数据包一次检测啦,什么身份证啦、什么syn包实名制啦、什么暂住证啦….什么这个,什么那个了,你都这么强了,暴露一下嘛。
不想做过多技术分析,主机型syn proxy syn cookie和网关型syn proxy syn cookie的难度不是一个数量级,原因是厂家为了效率把syn proxy syn cookie都在驱动层实现了,你叫他们把数据包上送到系统的TCP/IP协议栈给系统自身,真的是很难为他们。但你实现不了可以直说,忽忧我家小花猫就不厚道了。

9.我们的设备是透明接入,不会修改你的拓扑
嗯…这要看你对透明接入的了解程度了,我翻了翻所有ddos厂商的手册,吃惊的发现,都是一个模子,不知是谁抄谁的。上画三张用户常用拓扑,一个保护服务器、一个保护防火墙,一个保护网络,就认为自己可以全透明接入了?下面这张图你能透明接入吗?内网为三个VLAN网段,服务器放在VLAN2中,每个网段互相访问都必须通过防火墙内网口的三个对应VLAN网卡(各网段默认网关),防火墙通过DNAT后对外映射VLAN2网段服务器。我的要求是即要求你防外网的ddos还要你防止内网对VLAN2的ddos,敢问您,您打算怎么个透明进入法?
1) 透明接入在防火墙外网口?
2) 透明接入在防火墙内网口?
你八成会修改我的拓扑,把VLAN2转到DMZ,然后透明接入在防火墙DMZ网口上

         外网
      |
                   防火墙
                      |
   | 交换机trunk口
   |
         switch
     |    |          |
               VLAN 1    VLAN2    VLAN3

10.利用超时重传来判断syn包是否合法
这种方法是相当的有效啊,远处传来小花猫的声音:“给它在三秒钟之内发第二个syn包”

11.可能您感觉本文写的不错,但要转载的时候,请注明原作者是skipjack,仅些而己,谢谢了
很不幸,年初时给国家某某一级刊物投稿,先开始写了8000字,后来叫我一删再删,删了再删,图是左减一个,右减一个,上减一个,下减一个,前减一个,后减一个。本来是一个从浅入深的分析过程,后来成了个半调子,没几个人可以读懂了。稿费汇给我时,我都快哭了,4000多字才给俺103元,从邮局走出来的时候,手里握着这103元钱,心里想:“今儿中午我是请老婆吃饭呢,还是请小花猫吃饭呢?”。

2006-4-6
23:33 skipjack
                              
备注:
2006-4-9 22:02
1)修改原文,去掉笔误(一处)与错别字(两处) xiyang网友说我文章中有"愤青"言语和人身攻击词汇,我把我认为是的去掉了.在此表示谦意.
2)我不是做ddos产品的,所以我写文章这么大胆,否则我不是自己砸自己饭碗嘛?
3)我的身份大家不要猜了,我不是绿盟 天融信 金盾 神州盾 dosnipe的人(排名不分先后)

2006-4-29 21:29
zeroflag网友对第七点进行了debug。
>>没做过测试,不知道你说不回追CPU占有率高是不是正确,但是你的解释有问题。
>>全双工模式下,收发不相干,回复数据包怎么可能降低对方发包速度呢?望明鉴!
答复: 观点七: 想说明那些被动的等待重传来判断syn包合法性的作法是多么的不可取.与其被堵死,不如搏一下.
对,这点在同铀电缆环境下是正确的.在双绞线下这么说的确不太严谨.
双绞线的上/下行带宽是完全分开的.收对发,发对收.
我上面提的发包器,因为源MAC没有伪造,只是伪造了源IP,所以当我回复syn ack时,攻击者也必须处理收包工作.这样它的CPU负载就加大了,发包就会慢下来.
你可能会说,没有伪造源MAC的攻击包就是~傻~包呀,
但你不要丢记,在单一网关出口时,网关就是这种情况下的发包器,