首页 > 学技术 > 技术网文 > 网络安全 > 正文

[精华] CC的思路及防范方法(ZT)


来源 chinaunix.net 酷勤网整理

适合读者:DDOS研究员、各大站长、网络管理员

前置知识:ASP基本阅读能力

蝴蝶:前段时间上海一家游戏娱乐公司的网站遭到了基于页面请求的DDOS分布式拒绝服务攻击,网站陷入完全瘫痪状态,并被黑客的匿名信勒索,金额高达10万元,而在勒索过程中,这群黑客还表示会对腾讯QQ等网站下手,随后QQ“服务器维护”几天。12月5号的时候,全球BitTorrent服务器也受到了很强烈的DDOS攻击,一度陷入瘫痪。而DDOS攻击中最流行的也是威力最大的就是基于页面的DDOS以及将这个攻击理论发挥得淋漓尽致的攻击工具CC,本文特邀CC作者和我们共同了解CC的相关攻击原理和防范方法,希望能让更多的朋友了解这样的攻击方式并能防范它。


我写CC的思路及防范方法

文/ kiki

    很多朋友都知道木桶理论,一桶水的最大容量不是由它最高的地方决定的,而是由它最低的地方决定,服务器也是一样,服务器的安全性也是由它最脆弱的地方决定的,最脆弱的地方有多危险服务器就有多危险。DDOS也是一样,只要你的服务器存在一个很耗资源的地方,限制又不够,就马上成为别人DDOS的对象。比如SYN-FLOOD,它就是利用服务器的半连接状态比完全连接状态更耗资源,而SYN发动方只需要不停的发包,根本不需要多少资源。

    一个好的DDOS攻击必须是通过自己极少资源的消耗带来对方较大的资源消耗,否则比如ICMP-FLOOD和UDP-FLOOD都必须和别人一样大的带宽,对方服务器消耗多少资源自己也得赔上多少资源,效率极其低下,又很容易被人发现,现在基本没有什么人用了。

    攻击原理

    CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧。

    一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。

    CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面)。很多朋友问到,为什么要使用代理呢?因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。

    使用代理攻击还能很好的保持连接,我们这里发送了数据,代理帮我们转发给对方服务器,我们就可以马上断开,代理还会继续保持着和对方连接(我知道的记录是有人利用2000个代理产生了35万并发连接)。

    可能很多朋友还不能很好的理解,我来描述一下吧。我们假设服务器A对Search.asp的处理时间需要0.01S(多线程只是时间分割,对结论没有影响),也就是说他一秒可以保证100个用户的Search请求,服务器允许的最大连接时间为60s,那么我们使用CC模拟120个用户并发连接,那么经过1分钟,服务器的被请求了7200次,处理了6000次,于是剩下了1200个并发连接没有被处理。有的朋友会说:丢连接!丢连接!问题是服务器是按先来后到的顺序丢的,这1200个是在最后10秒的时候发起的,想丢?!还早,经过计算,服务器满负开始丢连接的时候,应该是有7200个并发连接存在队列,然后服务器开始120个/秒的丢连接,我们发动的连接也是120个/秒,服务器永远有处理不完的连接,服务器的CPU 100%并长时间保持,然后丢连接的60秒服务器也判断处理不过来了,新的连接也处理不了,这样服务器达到了超级繁忙状态。

    蝴蝶:我们假设服务器处理Search只用了0.01S,也就是10毫秒(这个速度你可以去各个有开放时间显示的论坛看看),我们使用的线程也只有120,很多服务器的丢连接时间远比60S长,我们的使用线程远比120多,可以想象可怕了吧,而且客户机只要发送了断开,连接的保持是代理做的,而且当服务器收到SQL请求,肯定会进入队列,不论连接是否已经断开,而且服务器是并发的,不是顺序执行,这样使得更多的请求进入内存请求,对服务器负担更大。

    当然,CC也可以利用这里方法对FTP进行攻击,也可以实现TCP-FLOOD,这些都是经过测试有效的。

    防范方法

    说了攻击原理,大家肯定会问,那么怎么防御?使用硬件防火墙我不知道如何防范,除非你完全屏蔽页面访问,我的方法是通过页面的编写实现防御。

    1. 使用Cookie认证。这时候朋友说CC里面也允许Cookie,但是这里的Cookie是所有连接都使用的,所以启用IP+Cookie认证就可以了。

    2. 利用Session。这个判断比Cookie更加方便,不光可以IP认证,还可以防刷新模式,在页面里判断刷新,是刷新就不让它访问,没有刷新符号给它刷新符号。给些示范代码吧,Session:

<%if  session(“refresh”)<> 1 then 
     Session(“refresh”)=session(“refresh”)+1
     Response.redirect “index.asp”
     End if
%>

    这样用户第一次访问会使得Refresh=1,第二次访问,正常,第三次,不让他访问了,认为是刷新,可以加上一个时间参数,让多少时间允许访问,这样就限制了耗时间的页面的访问,对正常客户几乎没有什么影响。

    3. 通过代理发送的HTTP_X_FORWARDED_FOR变量来判断使用代理攻击机器的真实IP,这招完全可以找到发动攻击的人,当然,不是所有的代理服务器都发送,但是有很多代理都发送这个参数。详细代码:

<%
Dim fsoObject
Dim tsObject
dim file
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then 
   response.write "无代理访问"
   response.end
   end if
Set fsoObject = Server.CreateObject("Scripting.FileSystemObject")
file = server.mappath("CCLog.txt")
if not fsoObject.fileexists(file) then
fsoObject.createtextfile file,true,false
end if
set tsObject = fsoObject.OpenTextFile(file,8)
tsObject.Writeline Request.ServerVariables("HTTP_X_FORWARDED_FOR")&"["&Request.ServerVariables("REMOTE_ADDR")&"]"&now()
Set fsoObject = Nothing
Set tsObject = Nothing
response.write "有代理访问"
%>

    这样会生成CCLog.txt,它的记录格式是:真实IP [代理的IP] 时间,看看哪个真实IP出现的次数多,就知道是谁在攻击了。将这个代码做成Conn.asp文件,替代那些连接数据库的文件,这样所有的数据库请求就连接到这个文件上,然后马上就能发现攻击的人。

    4. 还有一个方法就是把需要对数据查询的语句做在Redirect后面,让对方必须先访问一个判断页面,然后Redirect过去。

    5. 在存在多站的服务器上,严格限制每一个站允许的IP连接数和CPU使用时间,这是一个很有效的方法。

    CC的防御要从代码做起,其实一个好的页面代码都应该注意这些东西,还有SQL注入,不光是一个入侵工具,更是一个DDOS缺口,大家都应该在代码中注意。举个例子吧,某服务器,开动了5000线的CC攻击,没有一点反应,因为它所有的访问数据库请求都必须一个随机参数在Session里面,全是静态页面,没有效果。突然发现它有一个请求会和外面的服务器联系获得,需要较长的时间,而且没有什么认证,开800线攻击,服务器马上满负荷了。

 
代码层的防御需要从点点滴滴做起,一个脚本代码的错误,可能带来的是整个站的影响,甚至是整个服务器的影响,慎之!

[ 本帖最后由 ayazero 于 2005-11-18 12:42 编辑 ]



 mafa 回复于:2005-11-17 18:28:59

怎么不注明从《黑客防线》转的呢?lz不厚道。


 zjzf_1 回复于:2005-11-18 01:02:52

如果这也是精华 我写的那个就是精华中的精华   斑竹.... 我也没办法


 hardiwang 回复于:2005-11-18 11:21:13

to :mafa  《黑客防线》?
我不知道是哪里的文章,不过我上大学的时候经常在《黑防》发表文章的。
哈哈,现在很少看了。真不好意思!

to :zjzf_1,我看你的文章也回了帖子,不过我觉得的你对CC的理解不够。所以看到这个帖子才转了上来,希望大家共同进步!


 zjzf_1 回复于:2005-11-20 11:11:54

晕倒................  "不过我觉得的你对CC的理解不够"  那谁够呀?


 mafa 回复于:2005-11-20 14:44:07

引用:原帖由 zjzf_1 于 2005-11-20 11:11 发表
晕倒................  "不过我觉得的你对CC的理解不够"  那谁够呀? 



呵呵,你不会就是开发cc的kiki吧?

这篇文章正式发表在黑防上的。


 www_ftp 回复于:2005-12-15 18:09:13

呵呵~~


 benjiam 回复于:2005-12-16 16:37:54

页面级ddos 就这个水平啊? BS


 双眼皮的猪 回复于:2005-12-18 15:15:01

我还以为是clearcase...


 撒哈拉里的鱼 回复于:2005-12-18 17:04:09

猪也在这里啊~~我是云~
这个帖子,哎。。


 ayazero 回复于:2005-12-18 17:20:33

猪?云? ……我昏倒


 www_ftp 回复于:2005-12-19 10:46:17

zjzf_1 这方面研究还是比较深的


 zjzf_1 回复于:2005-12-26 19:19:47

    

to :mafa  《黑客防线》?
我不知道是哪里的文章,不过我上大学的时候经常在《黑防》发表文章的。
哈哈,现在很少看了。真不好意思!

to :zjzf_1,我看你的文章也回了帖子,不过我觉得的你对CC的理解不够。所以看到这个帖子才转了上来,希望大家共同进步!  

 
hardiwang 你个垃圾
我放一台我的东西 你自己攻攻看  看我们谁理解不够
http://59.34.196.251/

[ 本帖最后由 zjzf_1 于 2005-12-28 18:09 编辑 ]


 zhuomingliang 回复于:2005-12-29 21:19:59

to楼上的MM:
1、不要骂人,技术高就瞧不起人了啊
2、我是种田的
3、有的工作你代替不了我,有的工作我也代替不了你
4、我很无聊


 bend 回复于:2005-12-31 15:41:46

好久没来了,看人在说CC什么的,不知为何物,原来。。。。。。CC就这个东东啊
呵呵
不好用


 hardiwang 回复于:2006-01-01 16:33:16

to :zjzf_1 
如果是三年前,也许我会去搞搞你的网站
呵呵,现在的年轻人,就是太冲动,动不动说脏话。
真正做技术的是为了更好服务于公司、社会、国家。

在下就此打住,请各位看客随意……


 platinum 回复于:2006-01-01 20:02:50

先做人,后做事


 zjzf_1 回复于:2006-01-01 22:45:58

引用:原帖由 hardiwang 于 2006-1-1 16:33 发表
to :zjzf_1 
如果是三年前,也许我会去搞搞你的网站
呵呵,现在的年轻人,就是太冲动,动不动说脏话。
真正做技术的是为了更好服务于公司、社会、国家。

在下就此打住,请各位看客随意…… 




如果三年前 还有输入法漏洞的时代 我相信你种水平的可能还能搞搞我没有打过补丁的服务器

如今就难了 虽然我不是搞系统安全的  但是也会用Windows Update

真正做技术的  就是为了做技术 为了钱 这就是真正做技术的!

我认识个huawei的硬件工程师   现在在兼职做假的cisco

我们专著的就是 技术  就是钱

大家骂我现实不如说我诚实

[ 本帖最后由 zjzf_1 于 2006-1-1 23:03 编辑 ]


 platinum 回复于:2006-01-02 06:53:19

引用:原帖由 zjzf_1 于 2006-1-1 22:45 发表
真正做技术的  就是为了做技术 为了钱 这就是真正做技术的!


对我来说,兴趣更重要,不在乎能发大财,我不在乎给多少钱
个人有个人的活法,并不能说谁对谁错,但能到“为了钱而做技术,做技术就是为了钱”的地步,我只能说“可悲”二字了

呵~ :wink:


 zjzf_1 回复于:2006-01-02 16:00:41

引用:原帖由 platinum 于 2006-1-2 06:53 发表

对我来说,兴趣更重要,不在乎能发大财,我不在乎给多少钱
个人有个人的活法,并不能说谁对谁错,但能到“为了钱而做技术,做技术就是为了钱”的地步,我只能说“可悲”二字了

呵~ :wink: 




因为你一做不好技术 二赚不到钱   所以只能用兴趣而以安慰自己

或者你还年轻吧


 platinum 回复于:2006-01-02 18:21:35

引用:原帖由 zjzf_1 于 2006-1-2 16:00 发表
因为你一做不好技术 二赚不到钱   所以只能用兴趣而以安慰自己

或者你还年轻吧 


你错了,人活着为了什么?钱吗?
每个人的人生观世界观不同,也许你认为应该是的,但不代表人人都像你一样
也许,在你眼里只有钱了吧,也只有这样才能解释的通,才能让我理解一些

引用:
安装win98 每次20 (不含分区费)
安装winxp一次30
杀毒软件10元
如果安装系统+杀毒软件 免费安装qq
上门服务公交车费往返4元


看见了你的签名,无话可说了


 zjzf_1 回复于:2006-01-02 20:52:14

如果看到这种签名你都要贴上来讲两句的话
对你的识别能力 我也是彻彻底底无话可说


"你错了,人活着为了什么?钱吗?"

做技术就是为了钱(而不是人活着就是为了钱 你好像歪解我的意思哦)

做技术做研究就是为了创造价值  创造价值跟俗人说俗点就是为了钱

否则就是在玩  不是在做技术  明白吗?

你如果不爽加我msn 我跟你细砍 [email]bsder@msn.com[/email]  
以我的年龄 不管做技术也好 还是做人做生意也好 我相信都不比你在我这个年龄做的差

[ 本帖最后由 zjzf_1 于 2006-1-2 21:08 编辑 ]


 platinum 回复于:2006-01-03 01:06:11

这不是什么爽不爽的问题,道不同不为谋,您走您的阳关路,我走我的独木桥好了


 河里的鱼 回复于:2006-01-03 09:10:04

网络安全版啊,大哥!


 james_h 回复于:2006-01-03 12:49:32

引用:原帖由 zjzf_1 于 2006-1-2 16:00 发表



因为你一做不好技术 二赚不到钱   所以只能用兴趣而以安慰自己

或者你还年轻吧 



作人要厚道!年轻人!

你在“IT职业生涯”的“……茂名……招聘……”帖子看了,就凭这个,就可以判断,要么你自己本来就是个穷光蛋,要么就是护着自己的利益拿别人开涮。BS!


 zjzf_1 回复于:2006-01-03 16:00:29

我要说的  发到你的站内短讯了  我不想在这里说太多

[ 本帖最后由 zjzf_1 于 2006-1-3 16:14 编辑 ]


 对你从未放弃 回复于:2006-01-04 16:19:08

阿装个系统收这么少钱呀?
偶上次给装了个SERVER 收了200 大洋 嘿嘿~
表说偶黑~.


 robert2000 回复于:2006-01-04 17:19:08

引用:原帖由 platinum 于 2006-1-1 20:02 发表
先做人,后做事 


 真的对,会做人才会做事


 benjiam 回复于:2006-01-05 10:00:02

讨论技术


 wanzff 回复于:2006-01-06 05:09:10

支持一下,人家发表技术,大家要多支持吗????CC攻击现在真是令人头疼呀,为了它我天天工作被客户说呀,千兆硬防也不行


 songyu 回复于:2006-01-06 06:36:44

大多评论跑题了~ 该简单的地方偏偏搞的复杂,无用的垃圾理论也拼命加入CC攻击中,在还不知道
为什么攻击方法叫做“CC”的情况下,就去分析评论。汗~  说几句实在话,等大家丢鸡蛋过来好了~  


 www_ftp 回复于:2006-01-06 09:15:49

引用:原帖由 wanzff 于 2006-1-6 05:09 发表
支持一下,人家发表技术,大家要多支持吗????CC攻击现在真是令人头疼呀,为了它我天天工作被客户说呀,千兆硬防也不行 


我不信,防的很好呀.


 b2linux 回复于:2006-01-12 17:07:22

这里讨论CC攻击,不是人身攻击,

实在是晕啦


 ALENG_LINUX 回复于:2006-01-12 21:19:59

不管怎么样,这个文章不错,顶上


 A.com 回复于:2006-01-13 10:27:33

楼主转的方法,至少能防90%的CC攻击,还不用额外花钱。如果这些也不做,光讨论剩下的10%有意义吗?

永远不要小看一些简单的防范方法,如果大家都这么做了,我敢打赌,我国的白客就都变黑客了


 ecto 回复于:2006-02-07 16:21:13

呵呵,看了这个帖子有意思
老大都忍不住了,跟人干上了!

CC,在游戏中好像是个频率连接,就是每秒多少次,用频率闲置可防,不过,我说的可能和你们讨论的不一样

sorry 跑题了!


 initx 回复于:2006-02-22 20:42:56

实在看不下去了,让小弟说二句吧~!
楼主的文章实在有太多的漏洞,CC是啥东西我不知道,但是主要是用来攻击的我知道
呵呵
但是具体的原理和攻击效果,楼主写的文章里面绝对是有问题的
如果说是syn-flood的话或者DDoS攻击这些都很好防,(你说我讲大话?)
听我慢慢道来
syn-flood 和DDoS 都是利用TCP的三次握手的漏洞的对吧
如果我在遭受DDoS 攻击的时候,我对每一个进入我系统的syn 数据包,
回复rst数据包,正常用户的浏览器会重新发syn数据包,这个时候我再让syn通过
那么DDoS攻击者呢?攻击者是关发syn 包,然后不停的变换src IP ,攻击者并
不管server回复的数据包是什么,为什么,为了隐藏自己真实的IP,攻击者的IP
都是伪造的,所以当server 回复rst数据包的时候,攻击者并不知道,但正常的用户
知道,浏览器会自动重新连接,这样正常的用户可以继续访问,攻击者呢?还是想点
新办法吧~!其实《黑客张大民》的文章有篇专门写DDoS的攻防,写的非常不错
在这里借chinunix感谢一下《黑客张大民》的作者的N多精神(N>= 100个褒点)

syn-flood呢?不就是DoS么,DDoS你都会防了,DoS你还怕什么?
不过前面的方法对DoS攻击防范起来有点太耗系统资源了,可以用linux里面的syn-cookie来防范,如果已经遭受攻击的话,可以通过修改/proc/内的网络数值
降低keep alive的时间,这点debian做的比较好,默认的debian在内核的设定
上就针对攻击有所优化,RH系统呢,需要自己手工修改几个数值

回到开头
如果是针对应用级的攻击,比如楼主说的页面攻击,那也好办
apache 有很多相关的模块,比如connect-limit模块(可能我记的不对)
或者你通过iptable 限制每秒每个IP进入的数据包数量,等方法都可以
预防这种攻击

至于为什么这个CC能造成这么大的破坏力
1.夸张的宣传
2.系统管理员缺乏有效的防御手段

-_- 不过我看到楼主的这样的帖子也很火大

偶们是愤青,要有个性,骂人是口头语,不过从来不往心里去
哈哈
祝大家工作学习愉快
猪楼主早点写出CCII


 GunKing 回复于:2006-02-23 02:28:27

老实说,很多所谓的资深专家,就爱犯经验错误,听到CC,就以为和以前的SYN—FLOOD什么的~~所以就企图从IP层或是TCP层来解决问题,那么就会出现类似有人说得千兆硬防也扛不住的情况。如果你在听说CC的时候,多GOOGLE一下,就能发现它出现的历史,以及黑圈安全圈内为此发生的一些闹剧,也会搜到相关的技术原理,以及N个版本,以及源码,如果你看懂了源码,那我想你就明白为什么CC这么难防?——因为N多人企图以传统防火墙的模式来阻止攻击。。而有效的手段无非就是使用基于应用层的技术:比如一楼所说的方式。而CC的难防也在于难于做出通用的防止方法,就好比SQL注入一样,不过也只是难于而已.

看到太多人不厌其烦的发关于CC,DDOS的东西,有些人乘机广告,违背版规.ay4的置顶的确是很不错的.建议大家有什么关于CC之类的东西,都灌在这里吧,别另开贴影响市容了..最后,忍不住引用某人的话:其实DDOS没有太多技术含量的

[ 本帖最后由 GunKing 于 2006-2-23 02:30 编辑 ]


 macrodba 回复于:2006-02-23 09:02:26

支持一下了。


 initx 回复于:2006-02-24 13:46:58

引用:原帖由 GunKing 于 2006-2-23 02:28 发表
老实说,很多所谓的资深专家,就爱犯经验错误,听到CC,就以为和以前的SYN—FLOOD什么的~~所以就企图从IP层或是TCP层来解决问题,那么就会出现类似有人说得千兆硬防也扛不住的情况。如果你在听说CC的时候,多GOOG ... 



有话就说出来,有技术就拿出来

你用CC来攻,我来防

大家做裁判如何

事实胜于熊便


 initx 回复于:2006-02-24 14:13:15

引用:原帖由 zjzf_1 于 2005-12-26 19:19 发表
    

to :mafa  《黑客防线》?
我不知道是哪里的文章,不过我上大学的时候经常在《黑防》发表文章的。
哈哈,现在很少看了。真不好意思!

to :zjzf_1,我看你的文章也回了帖子,不过我觉得的你对CC的 ... 



AIX 4.1的?


 zhang142233 回复于:2006-02-28 23:07:07

引用:原帖由 b2linux 于 2006-1-12 17:07 发表
这里讨论CC攻击,不是人身攻击,

实在是晕啦 




哈哈~说的好哇~笑的我快晕啦~


 porlo 回复于:2006-03-02 13:53:57

这样的文章也是精华?晕


 双眼皮的猪 回复于:2006-03-05 16:28:38

千兆硬防跟应用层的攻击有什么关系?


 zjzf_1 回复于:2006-03-09 17:39:29

引用:原帖由 porlo 于 2006-3-2 13:53 发表
这样的文章也是精华?晕 




非常认同你


 deeperpurple 回复于:2006-03-14 10:01:35

引用:原帖由 双眼皮的猪 于 2006-3-5 16:28 发表
千兆硬防跟应用层的攻击有什么关系? 


没关系 :shock:


 blues1205 回复于:2006-03-15 00:10:19

路过。。看真人PK。。。:em02::em02::em02::em02::em02:




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=650396
转载请注明作者名及原文出处



收藏本页到: