基于Perl的DoS工具设计与实现

时间:2023-03-10 18:34:05 计算机软件毕业论文 我要投稿
  • 相关推荐

基于Perl的DoS工具设计与实现

  摘 要:本文设计并实现了一个基于Perl脚本语言的Dos攻击工具,利用半连接原理攻击WEB服务。本攻击工具分扫描模块和攻击模块,具有HTTP DoS,HTTPS DoS,Cache avoidance和HTTPReady Bypass攻击功能。充分利用系统的超线程性能和Perl脚本特性,代码量少,对Linux下的WEB服务攻击效果较好。

  【关键词】Dos Perl 攻击 工具

  在Linux下使用Perl脚本语言设计开发的DoS攻击工具,可以利用单一机器占用网络带宽很少的情况下对目标服务器的WEB服务发动攻击。它通过向目标服务器发送半HTTP连接来消耗服务器资源,且所需数据包相对于一般的洪泛式DoS攻击工具要少很多,所以具有一定的隐蔽性。目标服务器采用超线程技术则发动的攻击会更有效,因为随着攻击的进行服务器会限制它所允许的线程数,若攻击者的机器上也采用超线程则攻击效果会大大增强。

  1 攻击原理

  通过发送半连接(HTTP请求)来保持连接的畅通,并周期性发送HTTP Headers来避免套接口关闭来达到消耗目标主机资源,关闭WEB服务的目的。由于有效地将攻击连接伪装为合法连接从而躲过了侦测系统的防御。同时当攻击正在进行时,日志文件并不会被写入,直到连接请求完毕。所以攻击者能够使目标在一段时间内服务无法被访问,同时攻击行为不会被管理员发现。

  2 主要模块划分

  Perl脚本语言开发的DoS工具主要由两大部分组成,分别是扫描模块和攻击模块。扫描模块包括目标主机扫描模块,攻击主机扫描模块,目标主机连接超时时间测试扫描模块。攻击模块包括常规HTTP Dos攻击模块,HTTPS Dos攻击模块,HTTPReady Bypass模块, Cache avoidance模块。

  2.1 扫描模块

  2.1.1 目标主机扫描模块

  探测目标主机的服务是否可用及是否采用超线程技术,通过向目标服务器发送合法请求来实现。

  2.1.2 本地主机扫描模块

  探测攻击者的主机是否采用超线程技术。由于超线程技术的特点,使得拥有超线程技术的攻击者的攻击效果会比未拥有的要好很多。

  2.1.3 目标主机连接超时时间测试扫描模块

  找出目标机器服务的连接超时时间,这个时间对于攻击来说至关重要,将攻击者发送的半连接超时时间设置得与被攻击者的越接近,攻击效果越好,但必须小于被攻击者的连接超时时间,否则攻击失效。

  2.2 攻击模块

  2.2.1 HTTP DoS攻击模块

  通过向目标周期性地发送请求,导致目标服务器无法响应合法用户请求。攻击目标的超时时间越短它的资源被消耗得也越快。连接数与攻击目标的连接数越接近越好,因为这能减少的尝试次数以及相关的带宽。

  2.2.2 HTTPS DoS攻击模块

  实现方式与HTTP DoS攻击模块相似,不同之处在于本模块需要对数据通过协议加密后再发送。

  2.2.3 HTTPReady Bypass模块

  通过将发送的请求消息从GET改为POST来实现。这是在HTTP DoS失效的情况下使用,实现方法为把GET请求方法改为POST请求方法,这样就可以绕过HTTPReady的保护。

  2.2.4 Cache avoidance模块

  本通过改变请求消息头使得目标服务器的溢出,从而拒绝服务。

  3 难点实现

  3.1 扫描模块

  本工具的扫描模块分为目标主机扫描模块,攻击者主机扫描模块,目标主机连接时间扫描模块。

  3.1.1 攻击主机扫描模块

  此模块的主要任务是通过调用Config模块来检测主机是否使用超线程技术,代码为:

  $Config{usethreads}

  如果使用则执行代码:

  $usemultithreading = 1;

  use threads;

  use threads::shared;

  攻击者的主机是否采用采用超线程技术对于攻击效果而言影响比较大,因为攻击原理是向目标主机发送半HTTP Request请求从而导致目标主机拒绝服务,所以攻击连接数对攻击效果的影响至关重要,连接数越多攻击效果越好,所以拥有超线程技术的主机才产生的攻击效果会更好。

  3.1.2 目标主机扫描模块

  此模块的主要任务是检测目标主机的HTTP服务是否可用,具体方法为向服务器发送一个合法的GET请求消息:

  if ($cache) {

  $rand = "?" . int( rand(99999999999999) );

  }else {

  $rand = "";

  }

  my $primarypayload =

  "GET /$rand HTTP/1.1\r\n"

  . "Host: $sendhost\r\n"

  . "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n"

  . "Content-Length: 42\r\n";

  如果套接字建立成功而且请求得到合法响应,则说明目标服务器的服务工作正常,则可以进行下一步操作。   3.1.3 目标主机连接时间扫描模块

  此模块的主要功能为探测目标服务器上的超时时间,这个选项是手动。了解目标机器的超时时间是非常必要的,因为攻击目标的超时时间越短则资源被消耗得也越快,但如果设置得小于被攻击电脑的连接超时时间,则又容易导致攻击效果锐减。以下为具体实现代码:

  for ( my $i = 0 ; $i <= $#times ; $i++ ) {

  print "Trying a $times[$i] second delay: \n";

  sleep( $times[$i] );

  if ( print $sock "X-a: b\r\n" ) {

  print "\tWorked.\n";

  $delay = $times[$i]

  }

  其中变量sock只指的HTTP Request的底层通信连接,这里为TCP连接,当然,如果需要改变为UDP连接可以直接修改相关代码。最后,测试的大致超时时间为变量delay的值,单位为秒。

  3.2 攻击模块

  攻击模块包括HTTP DoS攻击模块,HTTPS DoS攻击模块,HTTPReady Bypass模块,cache avoidence模块。它的攻击流程如图1所示。

  3.2.1 HTTP DoS

  这个攻击模块是本工具的基本攻击模块,它通过设置三个参数:-timeout,-num,-tcpto然后借由这些参数向服务器发动袭击,timeout参数是指目标服务器HTTP Request的超时时间,这里也把它作为发送攻击的间隔时间。这样设置使得攻击者所发起的HTTP Request符合规范,攻击的隐蔽性大大增强,而且还不会导致主机负载过高而向管理员告警。这里使用GET请求方法向目标发起连接。实现攻击的前提是要在攻击者与目标服务器间建立完整的TCP连接。

  3.2.2 HTTPS DoS

  此模块针对采用了HTTPS协议的WEB服务器。它通过用IO::SOCKET::SSL构造一个符合SSL3.0协议的sock对象来伪装自己,从而欺骗主机,成功发送HTTP Request半连接,实现为:

  if ($ssl) {

  if (

  $sock = new IO::Socket::SSL(

  PeerAddr => "$host",

  PeerPort => "$port",

  Timeout => "$tcpto",

  Proto => "tcp",

  }

  )

  {…}

  }

  3.2.3 Cache avoidance

  根据RFC2616的描述,HTTP1.1通常应用于能通过采用缓存技术提高性能的分布式信息系统。HTTP/1.1中缓存可以在许多情况下排除发送请求和发送完整响应。前者减少了网络回路的数量;利用一个“过期(expiration)”机制来达到此目的。后者减少了网络应用的带宽;用“验证(validation)”机制来达到此目的。利用这个特点,我们新增了一个功能,即Cache avoidance。核心思路就是发送大量服务器地址相同但是URL中请求文件的文件名不同的GET请求消息来消耗网络资源。因为这样可以“绕过”缓存机制,使得攻击者发送的每一个请求都会到达目标机器,而且由于页面不存在,每一次请求都会消耗目标WEB服务器的资源,最终导致DoS。具体的实现方法利用了Perl强大的正则表达式和srand()函数以及rand()函数。具体代码如下:

  if ($cache) {

  $rand = "?" . int( rand(99999999999999) );

  }

  my $primarypayload =

  "GET /$rand HTTP/1.1\r\n"

  . "Host: $sendhost\r\n"

  . "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n"

  . "Content-Length: 42\r\n";

  4 功能、性能测试

  4.1 功能测试

  4.1.1 系统平台

  Fedora 14。

  4.1.2 目标服务器系统

  版本为httpd-2.2.10-2的Apache服务器。

  4.1.3 测试环境

  在一台物理主机上建立一个虚拟机,它的操作系统为Fedora 14,物理主机的操作系统为Windows XP sp3。

  各个模块的功能测试如表1所示。

  测试结果表明攻击效果较好,但HTTPS DoS有时会攻击失效,这还需要改进。总体而言,攻击效率较高,设计思路清晰,特别是在攻击时不会造成目标服务器负载明显上升,也不会造成内存使用明显增加,而且还不会对其它无关联服务造成损害,这是设计之初没有想到的意外惊喜。

  4.2 性能测试

  4.2.1 测试环境

  FEDORA 14,INTEL(R) CORE(TM) DUO CPU T2350 @ 1.86GHZ 1.86GHZ,1.96GB内存。

  4.2.2 具体过程

  建立500个SOCKET连接,DOS 服务器192.168.1.123的80端口,设置CONNECTION的超时时间为200秒。如果不知道连接超时时间,那么就用下面的命令,让COBRA自动完成。

  SLOWLORIS.PL -DNS 192.168.1.123 -PORT 80 -TEST。

  这是一个慢启动的过程,得出测试数据需要一定的时间。所以建议首先用NMAP之类的工具得出目标机器的WEB服务器操作系统版本,然后根据自己的经验估计一个时间。TIMEOUT值太大,可能被服务器主动断开连接,太短发送的数据包就越多,攻击者的主机压力太大。DOS效果如表2所示。

  由于作者时间、精力、水平有限,所以只能列出少部分能够被攻陷和不能够被攻陷的服务器操作系统名称。能够攻陷的有:Apache 1.x, Apache 2.x, dhttpd, lighttpd。目前还无法攻陷的有:IIS6.0, IIS7.0,nginx, Cherokee, Squid。值得注意的是本工具运行在Windows系列操作系统上的攻击效果不太好,主要是限制了最大连接数,所以应尽量运行在类似UNIX的操作系统上。

  5 结论

  本文详细阐述了Perl语言开发的针对WEB服务的DoS工具的设计与实现。从测试结果中可以得知,此工具基本达到了设计要求,能够实现利用单一机器对目标服务器的WEB服务进行打击,打击隐蔽性非常高,对目标服务器CPU、内存的负载影响非常小,而且在攻击时日志文件不会产生记录。但由于一些技术上的问题,本工具对于一些应用较广的WEB服务器的攻击还是不能很好实现,还需要在以后的版本中加以改进,其亮点就在于用Perl编写,利用它的一些强大功能使得工具小巧精悍,其中的Cache avoidance模块极具特色,它利用了HTTP协议的一些特点而造成目标网络资源的大量消耗。

  参考文献

  [1]Wang Y,Lin C,Li Q L, et al.A queueing analysis for the denial of service (DoS)attacks in computer networks[J].Computer Networks,2007, 51(12):3564-3573.

  [2]陈诚,孙一品,钟求喜等.基于通用多核平台的入侵检测系统研究[J].计算机科学,2012,39(3):71-74. DOI:10.3969/j.issn.1002-137X.2012(03):015.

  [3]Jonsson E.An integrated framework for security and dependability[C]//Proceedings of the 1998 workshop on New security paradigms.ACM,1998:22-29.

【基于Perl的DoS工具设计与实现】相关文章:

基于minigui的网真机界面的实现08-05

企业知识管理的实现技术和工具的电商论文05-02

都市频道制作网的设计与实现05-29

基于胜任力的企业个体绩效管理流程设计06-03

基于CS管理的房地产企业开发设计06-04

基于PLC的断路器型式试验系统设计03-10

基于web的异地并行设计与制造系统研究06-02

城市旅游网站的设计与实现论文(精选6篇)05-07

基于电话网络的热网远程控制系统设计05-11

浅谈基于工作流程的高职《国际贸易实务》课程教学模式设计06-13