最近发现了QQ的一个bug,QQ在通讯前会进行一系列的包认证过程。其中,我发现
了重发一些请求包可能会导致QQ拒绝服务(D.O.S)。同样的情况也适用于攻击移
动梦网的手机!
攻击过程如下:
[假设]
我的QQ是:123456
我要攻击用户A的QQ,号码是:999888
我要攻击用户B手机,号码是:13801234567
我的IP是:1.2.3.4
QQ服务器IP是:5.6.7.8
[步骤]
1.我在我的QQ里面 查找-->自定义查找--->通过对方的QQ号码--->输入123456
-->下一步 ---> 添加用户B
2.然后,QQ提示:对方需要验证你的身份,请输入你的请求信息按发送键
3.随便输入一些信息,如“我是A,请你加我。”,但暂时不按“发送”键
3.启动捕获工具,开始捕获源端口号为4001的所有udp包(可以使用各种的sniffer)
4.此时,在qq上面按“发送”,于是,qq就向QQ服务器发出加B为好友的请求包
5.然后,我将捕获到两个udp包如下:
NO Time Frame Protocol 源地址 目的地址 源端口 目的端口
0 19:22:21:112 IP UDP 1.2.3.4 5.6.7.8 4000 8000
1 19:22:21:124 IP UDP 5.6.7.8 1.2.3.4 8000 4000
注意,NO=0的包就是我对B的请求包:里面含有信息“我是A,请加我。”
6.我将NO=0的包截取下来,重发,用户B不能屏蔽这些请求,也就是说,B会收到大 量请求信息,即使B将A加入黑名单也无济于事。
我的测试证明,网络快的地方,通常可以让重发请求包速度加快,比如100包/s, 这样
的话,用户B的qq就会给这些垃圾的请求包淹没。
我还测试了移动qq,我把我的一个同学的手机用作测试,发现连续发15个包,就把他的手机灌满,方法也是与上面的方法相同,只需要捕获一个信息包重发就行了。在对手机的攻击中,我发现,发重发包的速率不能太快,不然重复的包会过滤掉,我觉得每2-5秒重发一个包很合适,足以在短时间内让对方用户的手机灌满垃圾信息。
[扩展攻击]
在普通的局域网中,黑客X可以设计一个黑客工具,专门捕获发QQ用户A发送去B手机的信息,重发会让B误以为A对他进行攻击。跟可怕的是,如果针对sms.163.com的收费服务进行攻击,可能会导致某些用户的巨额损失。然而,无法跟踪黑客X,因为它做的只是监听然后重发一些udp包,这很明显是QQ协议中的一些漏洞,需要修改认证协议。
[解决方法]
我正在构思一种解决该漏洞的方法,主要是在底层截获udp包的时候,把包送去一个固定长度的缓冲区,然后对该缓冲区扫描。这样做无疑会加重用户系统的负担,所以,建议在下一版本的QQ中加入,这可是腾讯的工作了。
华南理工大学计算机系 研一
黄兆勤
turing@thinkerit.com 或 aeec@163.net
2002年7月29日