He 的个人资料Syrinx照片日志列表更多 ![]() | 帮助 |
|
10月19日 ccproxy"拒绝服务"问题已经是好几年前的事情了,从版本6.0我就提醒过作者这问题,不过到现在版本还是有这问题.现时很多做游戏代理的都是使用ccproxy,要拒绝服务它,比想象的要简单得多.
现在先说下ccproxy的编程模型.ccproxy使用的是多线程的阻塞模型,使用一个线程处理一个新用户的.受限于系统的虚拟资源,win 32下在足够虚拟资源的情况下,一个进程最多只能创建2028个线程,也就是说,ccproxy最多只能接受2028个连接,写到这里,大家应该对如何攻击令它拒绝服务有个大概了解.
ccproxy处理新连接流程:
1.接收连接等,等待客户端发送第一次协商数据
2.收到协商数据后,新建一个线程处理这个新连接
3.第二步密码协商,以及代理模型协商等都在线程中处理.
攻击模式:
1.创建大量连接,连接到ccproxy代理端口
2.每个连接发送"\0x05\0x01\0x02"到代理
3.如果允许验证,代理会返回"\0x05\0x02"
4.程序什么都不做,等超时断开,断开后继续上面第一步.
由于大量连接令ccproxy达到创建新线程的极限,当达到这极限后,所有新的连接都会被拒绝(包括所有正常用户的连接),这就造成了"拒绝服务".
由于编程模型本身的限制,这种攻击模式一直都会有效(不只是ccproxy,还有其它使用同类型的编程模型都受这样的攻击).这种攻击最可怕的是一般的家庭ADSL用户也可以实现.
引用通告此日志的引用通告 URL 是: http://supersyrinx.spaces.live.com/blog/cns!46A123F5781A435A!155.trak 引用此项的网络日志
|
|
|