攻击者藉助代理伺服器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。
CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,资料库压力就越大,被访问的频率也越高,占用的系统资源也就相当可观。
一个静态页面不需要伺服器多少资源,甚至可以说直接从记忆体中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到资料库中判断我是否有读帖子的许可权,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次资料库,如果资料库的数据容量有200MB大小,系统很可能就要在这200MB大小的数据空间搜寻一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那幺时间更加可观,因为前面的搜寻可以限定在一个很小的範围内,比如用户许可权只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜寻肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
CC就是充分利用了这个特点,模拟多个用户(多少执行绪就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面).这一点用一个一般的性能测试软体就可以做到大量模拟用户并发。
基本介绍
- 中文名:CC攻击
- 外文名:ChallengeCollapsar
- 简称:CC
- 模式:模拟多个用户不停的进行访问
伺服器处理
假设伺服器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 = Challenge Collapsar,意为“挑战黑洞”,其前身名为Fatboy攻击,是利用不断对网站传送连线请求致使形成拒绝服务的目的。业界赋予这种攻击名称为CC(Challenge Collapsar,挑战黑洞),是由于在DDOS攻击发展前期,绝大部分都能被业界知名的“黑洞”(Collapsar)抗拒绝服务攻击系统所防护,于是在黑客们研究出一种新型的针对http的DDOS攻击后,即命名Challenge Collapsar,声称黑洞设备无法防御,后来大家就延用CC这个名称至今。有趣的是,黑洞(现改名为ADS)后来也能全面防御CC攻击,但这个段子中的攻防较量仍然被传为一段佳话。
CC攻击是DDOS(分散式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但造成伺服器无法进行正常连线。最让站长们忧虑的是这种攻击技术含量低,利用更换IP代理工具和一些IP代理一个初、中级的电脑水平的用户就能够实施攻击。因此,大家有必要了解CC攻击的原理及如果发现CC攻击和对其的防範措施。
CC攻击的原理
CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方伺服器造成伺服器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少执行绪就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成伺服器资源的浪费,CPU长时间处于100%,永远都有处理不完的连线直至就网路拥塞,正常的访问被中止。
防CC攻击
CC攻击可以归为DDoS攻击的一种。他们之间的原理都是一样的,即传送大量的请求数据来导致伺服器拒绝服务,是一种连线攻击。CC攻击又可分为代理CC攻击,和肉鸡CC攻击。代理CC攻击是黑客藉助代理伺服器生成指向受害主机的合法网页请求,实现DDoS,和伪装就叫:cc(Challenge Collapsar)。而肉鸡CC攻击是黑客使用CC攻击软体,控制大量肉鸡,发动攻击,相比来后者比前者更难防御。因为肉鸡可以模拟正常用户访问网站的请求。伪造成合法数据包。
一个静态页面不需要伺服器多少资源,甚至可以说直接从记忆体中读出来发给你就可以了,但是论坛之类的动态网站就不一样了,我看一个帖子,系统需要到资料库中判断我是否有读帖子的许可权,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次资料库,如果资料库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜寻一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那幺时间更加可观,因为前面的搜寻可以限定在一个很小的範围内,比如用户许可权只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜寻肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
CC攻击就是充分利用了这个特点,模拟多个用户(多少执行绪就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面,比如asp/php/jsp/cgi)。很多朋友问到,为什幺要使用代理呢?因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连线数目,超过一定数目一定频率就会被认为是Connection-Flood。当然也可以使用肉鸡发动CC攻击。肉鸡的CC攻击效果更可观。致使伺服器CPU%100,甚至当机的现象。
使用代理攻击还能很好的保持连线,这里传送了数据,代理转发给对方伺服器,就可以马上断开,代理还会继续保持着和对方连线(我知道的记录是有人利用2000个代理产生了35万并发连线)。
当然,CC也可以利用这里方法对FTP、游戏连线埠、聊天房间等进行攻击,也可以实现TCP-FLOOD,这些都是经过测试有效的。
防御CC攻击可以通过多种方法,禁止网站代理访问,儘量将网站做成静态页面,限制连线数量,修改最大逾时时间等。
攻击症状
CC攻击有一定的隐蔽性,那如何确定伺服器正在遭受或者曾经遭受CC攻击呢?可以通过以下三个方法来确定。
命令行法
一般遭受CC攻击时,Web伺服器会出现80连线埠对外关闭的现象, 因为这个连线埠已经被大量的垃圾数据堵塞了正常的连线被中止了。可以通过在命令行下输入命令netstat -an来查看, “SYN_RECEIVED”是TCP连线状态标誌,意思是“正在处于连线的初始同步状态 ”,表明无法建立握手应答处于等待状态。这就是攻击的特徵,一般情况下这样的记录一般都会有很多条,表示来自不同的代理IP的攻击。
批处理法
上述方法需要手工输入命令且如果Web伺服器IP连线太多看起来比较费劲,可以建立一个批处理档案,通过该脚本代码确定是否存在CC攻击。打开记事本键入如下代码保存为CC.bat:
@echo off
time /t >>log.log
netstat -n -p tcp |find ":80">>Log.log
notepad log.log
exit
上面的脚本的含义是筛选出当前所有的到80连线埠的连线。当感觉伺服器异常时就可以双击运行该批处理档案,然后在打开的log.log档案中查看所有的连线。如果同一个IP有比较多的到伺服器的连线,那就基本可以确定该IP正在对伺服器进行CC攻击。
查看系统日誌
Web日誌一般在C:\WINDOWS\system32\LogFiles\HTTPERR目录下,该目录下用类似httperr1.log的日誌档案,这个档案就是记录Web访问错误的记录。管理员可以依据日誌时间属性选择相应的日誌打开进行分析是否Web被CC攻击了。
默认情况下,Web日誌记录的项并不是很多,可以通过ⅡS进行设定,让Web日誌记录更多的项以便进行安全分析。其操作步骤是:“开始→管理工具”打开“Internet信息伺服器”,展开左侧的项定位到到相应的Web站点,然后右键点击选择“属性”打开站点属性视窗,在“网站”选项卡下点击“属性”按钮,在“日誌记录属性”视窗的“高级”选项卡下可以勾选相应的“扩展属性”,以便让Web日誌进行记录。比如其中的“传送的位元组数”、“接收的位元组数”、“所用时间”这三项默认是没有选中的,但在记录判断CC攻击中是非常有用的,可以勾选。另外,如果你对安全的要求比较高,可以在“常规”选项卡下对“新日誌计画”进行设定,让其“每小时”或者“每一天”进行记录。为了便于日后进行分析时好确定时间可以勾选“档案命名和创建使用当地时间”。
解决方式
取消域名绑定
一般CC攻击都是针对网站的域名进行攻击,比如网站域名是“xxx”,那幺攻击者就在攻击工具中设定攻击对象为该域名然后实施攻击。
对于这样的攻击措施是在ⅡS上取消这个域名的绑定,让CC攻击失去目标。具体操作步骤是:打开“ⅡS管理器”定位到具体站点右键“属性”打开该站点的属性面板,点击IP位址右侧的“高级”按钮,选择该域名项进行编辑,将“主机头值”删除或者改为其它的值(域名)。
实例模拟测试,取消域名绑定后Web伺服器的CPU马上恢复正常状态,通过IP进行访问连线一切正常。但是不足之处也很明显,取消或者更改域名对于别人的访问带来了不便,另外,对于针对IP的CC攻击它是无效的,就算更换域名攻击者发现之后,他也会对新域名实施攻击。
更改Web连线埠
一般情况下Web伺服器通过80连线埠对外提供服务,因此攻击者实施攻击就以默认的80连线埠进行攻击,所以,我们可以修改Web连线埠达到防CC攻击的目的。运行ⅡS管理器,定位到相应站点,打开站点“属性”面板,在“网站标识”下有个TCP连线埠默认为80,我们修改为其他的连线埠就可以了。
ⅡS禁止IP
我们通过命令或在查看日誌发现了CC攻击的源IP,就可以在ⅡS中设定禁止该IP对Web站点的访问,从而达到防範ⅡS攻击的目的。在相应站点的“属性”面板中,点击“目录安全性”选项卡,点击“IP位址和域名现在”下的“编辑”按钮打开设定对话框。在此视窗中我们可以设定“授权访问”也就是“白名单”,也可以设定“拒绝访问”即“黑名单”。比如我们可以将攻击者的IP添加到“拒绝访问”列表中,就禁止了该IP对于Web的访问。
IPSec封锁
IPSec是优秀的系统防火墙,在排除其他还有别的类型的DDOS攻击时,针对CC攻击可以用设定IP策略来对付攻击。以219.128.*.43这个IP为例子,笔者实际操作对该IP的访问封锁。
第一步:“开始→管理工具”,打开“本地安全设定”,右键点击“IP安全策略,在本地机器”选择“创建IP安全策略”,然后点击“下一步”,输入策略“名称”和“描述”。然后默认一路“下一步”创建了一个名为“封CC攻击”的IPSec策略。
第二步:右键点击“IP安全策略,在本地机器”选择“管理IP筛选器表和筛选器操作”,在打开的视窗中点“添加”,在“IP 筛选器列表”视窗添入同第一步的名称和描述信息。取消“使用添加嚮导”的勾选,然后点击“添加”。在“IP 筛选器 属性”视窗的“地址”选项下设定“源地址”为“192.168.1.6”,目标地址为“我的IP位址”,取消对“镜像”的勾选;点击“协定”选项卡,设定“协定类型”为“TCP”,设定“协定连线埠”为“从任意连线埠”到“此连线埠80”最后确定退出。
第三步:在“新规则 属性”视窗中点选刚才创建的“封CC攻击”规则,点击“筛选器操作”选项卡下的“添加”,点选“安全措施”下的“阻止”,在“常规”选项卡下为该筛选器命名为“阻止CC攻击”然后确定退出。
第四步:点选刚才创建的“阻止CC攻击”筛选器,一路“确定”退出IP策略编辑器,可以看到在组策略视窗的中创建成功一个名为“封CC攻击”的策略,然后右键点击该策略选择“指派”。这样就实现了对该IP的封锁。
防火墙
除了利用上述方法外,还可以通过第三方的防火墙进行防範,打开防护墙防火墙可以了,笔者以天鹰ddos防火墙为例进行演示。安装好天鹰ddos防火墙即可开启防护,傻瓜式配置界面,默认参数即可防护网站,误封较少,智慧型识别蜘蛛。
流传误区
网路流传一种说法,就是把被攻击的域名解析到127.0.0.1这个地址上,造成攻击者本地迴环IP,从而实现攻击者攻击自己的目的,其实这是不正确的说法,说起CC攻击,其实更确切的说是对资料库的攻击,排除对IIS连线数、频宽的限制,危害最大的就是不断通过页面造成对资料库堵塞,从而导致伺服器假死,而这一系列都是建立在服务之上,作为攻击者的PC,本身没有开启IIS服务,所以即使将域名解析到127.0.0.1也不能对攻击者造成影响,更何况没有SQL server的影响,而上述解决方法是早期一些WEB程式设计师单层次的想法,并非权威的实际考证;另外将域名解析到政府或网警网站也是不可行,因为凭藉权威部门的技术分析,不难判断攻击源所针对的网站。
总结
总体说来CC攻击属于技术技巧强的攻击,防护手段足以解决诸如此类的攻击,然而带给我们巨大的挑战的是巨型流量的攻击,在频宽资源紧缺的情况下任何的防护措施都会消耗很大的成本,我们期待不久的云概念被炒作的沸沸扬扬,至于能否起到实实在在的作用就不可而知了。希望上述资料能给您帮助。