CC已经发布了一个多月了,按照承若,我早该发布源代码了,但是我自己一直没有想到有效的CC防御方法,所以也就没有发布,现在我想出了一个不错的方法,于是本着共享的精神,发布出来。
说实话,CC的代码是我写的第一个VC程序,所以写得很不好,不断地混用CString和Char,反正还有很多缺陷啦,大家就不要骂我了。
顺便在这里回答几个问题吧(FAQ)
1. 为什么我使用CC没有什么效果?
CC是通过模拟多用户访问来达到拒绝服务的效果的,也就是说如果你模拟的用户数目不能达到服务器的最大用户,就达不到拒绝服务的效果,比如xfocus只要600用户就能拒绝,某台超级SMTP服务器需要4000+的线程才能拒绝服务。
2. 为什么我的CC一运行就出错?
说实话,这是我的错误,我最早的版本是有一个BUG的,其实就是代码里面的hostnow溢出,所以你换个现在的版本就没有问题了。
3. CC的攻击效果取决于什么?
你使用的有效的代理数目,线程数,你选择的攻击的页面,还有服务器的性能。
4. CC为什么要使用代理,直接连接效果不是更好吗?
使用代理的理由很多
第一是为了安全
第二是很多系统的防火墙都会检测出有人PORT-FLOOD,使用代理就不存在被检测成PORT-FLOOD的问题。
第三是利用了代理的特性,代理有个特性就是接到用户请求以后一定会读取页面,不管用户是否已经断开,这样大大提高了我们的攻击效率,如果我们直接连接必须保持住连接对方服务器才运行,我们通过代理只要把请求发给代理就可以断开,剩下的是代理的事情了。所以我们电脑完成的只是连接代理-〉发送请求-〉断开,而不是有些朋友认为的需要等待数据返回,所以程序才能达到如此的高线程。
5. 为什么我用1000线不能D下来的服务器,别人500线就可以呢?
这个就是页面选择的问题了,如果选择静态页面,效果可以说很不好,因为服务器读取一个静态页面不需要多少时间就能完成,比如一个页面服务器的读取时间为0.0002S那么这说明该服务器的该页面理论处理能力为5000个页面,如果读取时间为0.2S那么说明该服务器该页面的理论处理能力只有5个,显然攻击效果明显不一样。如果我一秒发起500个连接,对于第一个页面,服务器在0.1S里面就处理完了,我怎么攻击也是没有效果的,对于第二个页面,服务器在一秒内只处理了5个连接,还有495个连接在队列中,这样服务器就有495个连接被占用了,2秒就是990个,1分钟就有29700个连接在队列,如果服务器允许的并发连接数目小于这个数字,那么任何人都无法连接到服务器了,服务器这时的CPU资源和内存资源也都满负荷了。
6. 如何选择一个好的页面?
从第五条我们可以知道,一个能让服务器运行时间越久的页面越是服务器的薄弱点,大家知道木桶理论,木桶能装多少水不决定于木桶最高的地方有多高,而是木桶最低的地方的高度,那么我们选择一个服务器运行时间最久的页面作为对象,这一般是选择数据查询次数多、查询量大、查询时间长的页面。
7. 很多论坛同时在线都有2000多人,为什么CC模拟500人攻击就不行了?
因为2000多人在线不是同时请求访问服务器的,2000多人很可能在某一秒只有200人在请求服务器页面,有1000多人在看帖子,还有100多人在点连接,还有一些人只是在线,其实在看其他的网站。
8. 我听说CC还可以攻击SMTP、FTP等服务器?
是的,通过精心选择参数,CC可以非常有效的攻击FTP服务器,我曾经用Microsoft的FTP服务器ftp.microsoft.com做过试验,效果非常的好,但是CC的目的不是教大家如何攻击,如果这里详细说明这样成为一个傻瓜式的攻击软件了,我相信能看懂源代码的朋友一定明白怎么回事。对于SMTP服务器其实就是PORT-Flood攻击了,也是通过参数的选择来实现的,我希望弄明白的朋友不要说出来,谢谢。
9. CC有什么好的防御方法吗?
有,对于HTTP请求可以使用COOKIE和SESSION认证来判断是否是CC的请求页面,防止多代理的访问请求,而且CC通过代理攻击,代理在转发数据的时候会向HTTP服务器提交一个x-forward-ip(好像是,这就是为什么我们有时使用了代理,对方服务器一样知道我们的真实IP)这样也是一个非常好的判断方法,因为网络上的代理虽然多,但是大部分都是非匿名的,就是说会发送x-forward-ip的代理。 |