基于JavaScript的DDoS的攻防介绍

预备知识

  随着Web技术的发展,JavaScript作为一种注重交互性的客户端运行脚本,在网站开发过程中使用的越来越普遍。JavaScript是一种基于对象和事件驱动,并具有安全性的脚本语言。它与HTML,CSS结合起来,用于增强功能,并提高与最终用于之间的交互性能。JavaScript代码是解释型的,不需要编译,而是作为HTML文件的一部分由解释器解释执行。目前,基本上所有的浏览器都内置JavaScript的解释器。

      分布式拒绝服务攻击(DDoS)始终是网络安全领域一项经久不衰的话题。发动DDoS攻击的设备、协议、原理多种多样。。发动DDoS攻击有两个必要条件,一是能够发出攻击流量,具备向目标发送网络数据包的能力。二是攻击流量要足够大。JavaScript脚本灵活,功能丰富,它能够满足条件一。同时,我们在本实验中会介绍一种通过劫持第三方资源服务器来发动DDoS的攻击模式,从而使足够大的攻击流量的产生成为可能。

      今天我们就介绍基于JavaScript的DDoS攻击方式。这种借助攻击方式很灵活,因为JavaScript脚本具备完整的构造和发送HTTP请求包的能力,它属于应用层的DDoS。

实验目的

1)了解JavaScript能被DDoS攻击利用的原理

2)掌握利用JavaScript实现DDoS攻击的一种典型模式

3)掌握防御该类型DDoS攻击的方法原理

实验步骤一

使用JavaScript发送HTTP包

      进入客户端主机(Client  10.1.1.23)桌面上的实验目录,右键“打开方式”选择使用记事本打开文件jsddos_1.html,观察文件中的JavaScript脚本内容:

  这是一段非常简单的利用JavaScript来进行拒绝服务攻击的演示代码。使用JavaScript的setInterval函数来设定定时任务,每隔10毫秒执行一次ddos_img函数。而ddos_img函数的作用是构造一个发向目标站点的URL请求,迫使目标网站做出响应。仅仅通过这个演示代码是无法体现DDoS效果的,实际案例中,攻击者要根据目标网站的资源特点,选择能消耗目标最大带宽或最大性能的URL,加上配合大量分布结点的共同发起流量,这样才更具有针对性,才可能真正达到DDoS的效果。

      我们运行Fidder抓包软件,然后打开上面的页面,观察运行效果:

  可以看到,访问该页面后,浏览器向目标网站发送大量HTTP请求。在实际攻防案例中,被攻击者盯上的网站一般都会有一定的防护措施。如果我们无法给恶意构造的页面带来巨大的访问量,那么打过去的流量对于目标网站来说真是形同玩具。所以,页面构造好后,能使大量主机同时请求访问才是关键。下一步实验我们演示一种典型的攻击利用思路,并演示其DDoS效果。

 实验步骤二

劫持第三方资源服务器以增强DDoS攻击

      在实际的网站开发过程中,并不是所有网站都将JavaScript存储于本地。一些通用的JavaScript脚本往往会通过第三方服务器获得,这种方式将会为网站节约部分带宽,提高服务性能。所以就存在着这样一种第三方服务器,上面存储有JavaScrpt脚本供各类网站调用。

      如果攻击者入侵了这种第三方服务器,并篡改具有巨大调用量的JavaScript脚本文件,向其中插入恶意攻击代码,这样凡是调用该脚本的主机,都会执行恶意代码,向被害节点发送大量数据包,从而增强DDoS攻击效果。

      我们首先查看实验示例代码jsddos_2.html,在这个代码中可以发现,网页引用了一个来自外部第三方服务器的JavaScript脚本文件:(在本实验中,我们用ip地址为10.1.1.189的主机来模拟第三方服务器)

网页所引用的test.js文件原执行正常脚本功能,我们现在去所在服务器将其做修改。

      登录测试主机(Test   10.1.1.189),点击桌面上的hfs程序图标。打开后程序界面如下图所示:

 

这是一个简单的基于HTTP协议的文件服务器,对外提供了test.js文件供调用(文件URL为http://10.1.1.189:8080/test.js)。test.js文件在桌面上,使用记事本打开后发现它是一个只有注释的空指令文件:

 

  这时我们想到,既然test.js存放在这个第三方公共服务器上供别人下载使用,如果我们此时向其中加入恶意攻击代码,则凡是下载到该脚本文件的用户,都将不知情的向目标主机发动恶意攻击。一个DDoS攻击就自然而然形成了。

      编辑test.js文件,加入步骤一中所演示用的攻击代码,修改test.js文件内容如下:

返回客户端主机(10.1.1.23),使用浏览器访问jsddos_2.html文件,在Fiddler中可以看到浏览器开始向攻击目标主机发送大量HTTP请求包。

  这就说明,我们通过修改第三方服务器上的脚本文件,间接使得客户端主机加入到了DDoS的攻击队伍中。

      所以,只要我们劫持了一台存储JavaScript脚本的服务器,随着客户端访问脚本的数目增加,被攻击服务器将承受越来越多的流量攻击伤害。事实上,我们上边所演示的过程,并非严格意义上的分布式拒绝服务攻击。所谓分布式,需要来自不同IP的多主机同时向目标服务器发动攻击,本实验只是通过一台主机模拟其效果。

      上边所演示的攻击过程其实非常简单,其最重要的是它包含了一个完整的通过劫持第三方JavaScript服务器来构建大规模DDoS攻击的典型模式,其示意图如下:

  

猜你喜欢

转载自www.cnblogs.com/klmyoil/p/10182445.html