【DDoS攻防】HTTP案例篇 “搜狐视频”事件解密
事件回顾
2014年5月,当大家还沉浸在搜狐热播的时候,颇负盛名的搜狐视频,却背负了一起著名的DDoS攻击事件。
当时,日本CDN服务商Incapsula声称,自己的一位客户的服务器遭遇了搜狐视频发起的DDoS攻击,期间总共有超过2万的网民通过搜狐视频向这位客户发起超过2000万次的HTTP Get请求。然而如此知名的搜狐视频,怎么会甘冒不韪,公然向别人发起攻击呢?经过深入追究发现,原来搜狐视频是在未知的情况下被黑客利用,成为了攻击的源头。
有句话叫“趁虚而入”,搜狐视频网站上恰好就有这么一个漏洞给了黑客“打劫”的机会。通过这个漏洞,黑客注册一个搜狐视频账户,在头像中注入恶意代码(JavaScript),然后用这个账户在视频的评论区发布大量的评论。每条评论都带有用户头像,头像中带有恶意代码,这样,每条评论都附带着恶意代码。当任何用户访问这个视频页面的时候,都会触发恶意代码,实际上控制了搜狐视频用户的浏览器。
那么这段恶意代码干了什么呢?简单说,这段代码就是在用户不知情的情况下,定时向受害者发起HTTP访问请求。这个定时器,是1秒。
也就是说,当搜狐视频用户观看视频时,他的浏览器会每秒向受害者发起一次请求。如果用户观看30分钟视频,那么就会向受害者发起1800次请求。大家可能会觉得,这也没有多少呀,但是,搜狐视频这样的大型视频网站,同时在线观看热门视频的用户都是成千上万级别的,黑客在多个热门视频下发布海量评论,轻松获得无数僵尸主机。众人拾柴火焰高,如果星火燎原到千家万户同时持续地向受害者发送请求,攻击效果就可想而知了。
嗯,每一个人都是帮凶。
下面我们就分析一下这次攻击事件。在分析之前,我们先简单回忆下HTTP协议的基础。
HTTP协议基本知识
HTTP协议,HyperText Transfer Protocol,超文本传输协议。HTTP协议最基本的交互流程如下。
完成TCP三次握手后,客户端向服务器发起HTTP请求。正常情况下,服务器回应200 OK,在应答中添加应答长度,然后开始传输数据。
HTTP协议还有一种重定向的交互流程,如下。
完成TCP三次握手后,客户端向服务器发起HTTP请求。如果客户端请求的这个URL是过期的,那么服务器就会回应客户端302重定向报文,并携带新的URL地址。然后客户端再重新向新的URL地址发起请求,服务器回应200 OK,并开始传输数据。
华为Anti-DDoS解决方案怎么做?
HTTP协议是一种基于TCP协议的应用层协议,而HTTP类的攻击,最高效的防御方式就是源认证方式进行校验。华为Anti-DDoS解决方案可以感知TCP协议和HTTP协议,可以针对攻击源进行多层级的源认证和校验。
源认证体系主要有三个层面:
第一层,TCP/IP源认证
一般用于TCP三次握手还没建立成功前,验证攻击源的TCP/IP是否真实可信,比如IP源认证是对IP层面的校验,认证这个源是不是真实存在的源;而TCP代理和首包丢弃校验是对于TCP协议栈层面的校验,用于判断是否是这个源发出的真实请求。
很显然上述攻击事件已经完成了TCP三次握手,不属于TCP/IP范畴,关于TCP/IP源认证的防御机制,我们会在后面详细介绍,本节着重介绍应用层源认证。
第二层,应用层源认证
如果*** 使用工具调用真实的TCP/IP协议栈发动攻击,则TCP/IP源认证无法识别是否是攻击,我们必须启用应用层源认证,比如利用HTTP 302重定向请求,可以认证客户“浏览器”是否可信。只有真实浏览器才具备完整的HTTP协议栈校验机制。
第三层,用户源认证
在客户端是真实的基础上,进一步验证是否由真实用户发出的请求,而不是僵尸浏览器被黑客控制强制发出的请求。针对这种情况,终极的手段就是,人机交互,输入验证码和图片运算。其实验证码机制就是对登录用户的一次安全验证,判断一下是不是真实用户发起的请求。如果是DDoS工具发起的请求,是无法自动响应随机应变的验证码的。
我们再回到前面的攻击事件上来。攻击报文是由浏览器发出的请求,没有人为参与,源IP是真实存在的,浏览器也是真实存在的,但是请求行为是虚假的。所以在防御的时候,就要识别出HTTP请求中,哪些是真实的用户发送的请求,哪些是僵尸浏览器发的请求。浏览器具有完整的HTTP协议校验机制,对于302重定向报文,浏览器可以直接完成交互过程,无须用户参与,显然302重定向方式识别不了僵尸浏览器。只有通过验证码这种需要人机交互的方式来识别攻击报文,显然对照的是第三个层面。
对于HTTP攻击防御,第二层提到的302重定向和第三层的验证码方式都是非常有效的针对虚假源攻击的防御手段。只要客户端具备完善的302重定向机制,就可以通过302重定向源探测方式识别虚假源。但是302重定向无法识别僵尸浏览器,对于僵尸浏览器可以使用验证码方式,只是验证码需要用户参与,用户体验稍差一点。
还有一种特殊情况,当网络中有HTTP代理服务器时,只要有一次源认证通过,Anti-DDoS就会将代理服务器IP地址加入白名单,后续黑客如果利用代理服务器IP绕过源认证检查,从而导致防御失败。这种情况下,就要配合代理检查功能一起使用,检测HTTP请求是否为通过代理发出的请求。如果是,Anti-DDoS会从HTTP报文中获取请求者的实际IP地址,将通过认证的真实IP地址和代理服务器IP地址加入白名单,后续只有此实际源IP地址发送的报文才能直接通过,其他源IP发送报文时,Anti-DDoS会对其进行源认证,达到防御效果。
- 点赞
- 收藏
- 关注作者
评论(0)