1. SYN Flood 1
2. WinNuke 3
3. Smurf 4
4. Land-based 5
5. Ping of Death 5
6. PingSweep 6
7. Pingflood 6
8. Teardrop 7
9. UDP Flood 8
10. IGMP攻擊 8
1. SYN Flood
特征:
SYN Flood是當(dāng)前最流行的DoS(拒絕服務(wù)攻擊)與DDoS(分布式拒絕服務(wù)攻擊)的方式之一,這是一種利用TCP協(xié)議缺陷,發(fā)送大量偽造的TCP連接請求,從而使得被攻擊方資源耗盡(CPU滿負(fù)荷或內(nèi)存不足)的攻擊方式。
正常的TCP建立連接的過程:
第一步,請求端(客戶端)發(fā)送一個包含SYN標(biāo)志的TCP報文,SYN即同步(Synchronize),同步報文會指明客戶端使用的端口以及TCP連接的初始序號;
第二步,服務(wù)器在收到客戶端的SYN報文后,將返回一個SYN+ACK的報文,表示客戶端的請求被接受,同時TCP序號被加一,ACK即確認(rèn)(Acknowledgement)。
第三步,客戶端也返回一個確認(rèn)報文ACK給服務(wù)器端,同樣TCP序列號被加一,到此一個TCP連接完成。
以上的連接過程在TCP協(xié)議中被稱為三次握手(Three-way Handshake)。
問題就出在TCP連接的三次握手中,假設(shè)一個用戶向服務(wù)器發(fā)送了SYN報文后突然死機(jī)或掉線,那么服務(wù)器在發(fā)出SYN+ACK應(yīng)答報文后是無法收到客戶端的ACK報文的(第三次握手無法完成),這種情況下服務(wù)器端一般會重試(再次發(fā)送SYN+ACK給客戶端)并等待一段時間后丟棄這個未完成的連接,這段時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數(shù)量級(大約為30秒-2分鐘);一個用戶出現(xiàn)異常導(dǎo)致服務(wù)器的一個線程等待1分鐘并不是什么很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況,服務(wù)器端將為了維護(hù)一個非常大的半連接列表而消耗非常多的資源----數(shù)以萬計的半連接,即使是簡單的保存并遍歷也會消耗非常多的CPU時間和內(nèi)存,何況還要不斷對這個列表中的IP進(jìn)行SYN+ACK的重試。實際上如果服務(wù)器的TCP/IP棧不夠強(qiáng)大,最后的結(jié)果往往是堆棧溢出崩潰---即使服務(wù)器端的系統(tǒng)足夠強(qiáng)大,服務(wù)器端也將忙于處理攻擊者偽造的TCP連接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之?。藭r從正常客戶的角度看來,服務(wù)器失去響應(yīng),這種情況我們稱作:服務(wù)器端受到了SYN Flood攻擊(SYN洪水攻擊)。
預(yù)防:
1. 縮短SYN Timeout時間,由于SYN Flood攻擊的效果取決于服務(wù)器上保持的SYN半連接數(shù),這個值=SYN攻擊的頻度 x SYN Timeout,所以通過縮短從接收到SYN報文到確定這個報文無效并丟棄改連接的時間,例如設(shè)置為20秒以下(過低的SYN Timeout設(shè)置可能會影響客戶的正常訪問),可以成倍的降低服務(wù)器的負(fù)荷。
2. 設(shè)置SYN Cookie,就是給每一個請求連接的IP地址分配一個Cookie,如果短時間內(nèi)連續(xù)受到某個IP的重復(fù)SYN報文,就認(rèn)定是受到了攻擊,以后從這個IP地址來的包會被一概丟棄。
可是上述的兩種方法只能對付比較原始的SYN Flood攻擊,縮短SYN Timeout時間僅在對方攻擊頻度不高的情況下生效,SYN Cookie更依賴于對方使用真實的IP地址,如果攻擊者以數(shù)萬/秒的速度發(fā)送SYN報文,同時利用SOCK_RAW隨機(jī)改寫IP報文中的源地址,以上的方法將毫無用武之地。
3. 修改最大半連接數(shù)目TcpMaxHalfOpen以及半連接的測試次數(shù)TcpMaxHalfOpenRetried(當(dāng)超過次數(shù)目時,開始啟動SYN Flood防護(hù)),一般TcpMaxHalfOpen=TcpMaxHalfOpenRetried*1.25。
4. 基于DNS解析的負(fù)載均衡
5. 丟棄第一個SYN請求數(shù)據(jù)包,等待超時重傳。
2. WinNuke
特征:
WinNuke攻擊是一種拒絕服務(wù)攻擊,又稱“帶外傳輸攻擊”,它的特征是攻擊目標(biāo)端口,被攻擊的目標(biāo)端口通常是139、138、137、113、53,而且URG位設(shè)為1,即緊急模式。WinNuke攻擊就是利用了Windows操作系統(tǒng)的一個漏洞,向這些端口發(fā)送一些攜帶TCP帶外(OOB)數(shù)據(jù)報文的,但這些攻擊報文與正常攜帶OOB數(shù)據(jù)報文不同的是,其指針字段與數(shù)據(jù)的實際位置不符,即存在重合。這樣Windows操作系統(tǒng)在處理這些數(shù)據(jù)的時候,就會崩潰。目前的WinNuke系列工具已經(jīng)從最初的簡單選擇IP攻擊某個端口,發(fā)展到可以攻擊一個IP區(qū)間范圍的計算機(jī),并且可以進(jìn)行連續(xù)攻擊,還能夠驗證攻擊的效果,還可以檢測和選擇端口。所以,使用它可以造成某一個IP地址區(qū)間的計算機(jī)全部藍(lán)屏死機(jī)。
預(yù)防:
首先判斷數(shù)據(jù)包目標(biāo)端口是否為139、138、137等,并判斷URG位是否為1。如果是,則丟棄該數(shù)據(jù)包,并對這種攻擊進(jìn)行審計(記錄事件發(fā)生的時間、源主機(jī)和目標(biāo)主機(jī)的MAC地址和IP地址)。
3. Smurf
特征:
該攻擊方法結(jié)合使用了IP欺騙和ICMP回復(fù)方法使大量網(wǎng)絡(luò)傳輸充斥目標(biāo)系統(tǒng),引起目標(biāo)系統(tǒng)拒絕為正常系統(tǒng)進(jìn)行服務(wù)。通過向一個子網(wǎng)的廣播地址發(fā)一個帶有特定請求(如ICMP回應(yīng)請求)的包,并且將源地址偽裝成想要攻擊的主機(jī)地址。子網(wǎng)上所有主機(jī)都回應(yīng)廣播包請求而向被攻擊主機(jī)發(fā)包,使該主機(jī)受到攻擊。
預(yù)防:
每次收到ICMP Request包時,先記錄下來(可以用hash表),記錄的項包括ICMP頭標(biāo)識符(ID),源IP,目標(biāo)IP;當(dāng)下次收到ICMP Reply包時,根據(jù)源IP與目標(biāo)IP,去查找保存的記錄,判斷本次的ICMP Reply頭標(biāo)識符與保存的ICMP Request標(biāo)識符是否一致,如果不一致,則有可能受到Smurf攻擊,將該包丟棄。
4. Land-based
特征:
攻擊者將一個包的源地址和目的地址都設(shè)置為目標(biāo)主機(jī)的地址(一般是在局域網(wǎng)內(nèi),所以也可以是源MAC地址和目的MAC地址都等于本機(jī)MAC地址),然后將該包通過IP欺騙的方式發(fā)送給被攻擊主機(jī),這種包可以造成被攻擊主機(jī)因試圖與自己建立連接而陷入死循環(huán),從而很大程度地降低了系統(tǒng)性能。
預(yù)防:
由于如果目的MAC地址不等于本機(jī),直接被網(wǎng)卡扔掉,因此只需判斷目的網(wǎng)卡MAC與源網(wǎng)卡MAC是否相同即可。如果相同,則丟棄。
5. Ping of Death
特征:
據(jù)TCP/IP的規(guī)范,一個包的長度最大為65536字節(jié)。盡管一個包的長度不能超過65536字節(jié),但是一個包分成的多個片段的疊加卻能做到。當(dāng)一個主機(jī)收到了長度大于65536字節(jié)的包時,就是受到了Ping of Death攻擊,該攻擊會造成主機(jī)的宕機(jī)。
預(yù)防:
對接收到的ICMP Ping包,檢查IP頭,看是否有分片,如果有分片的話,則將第一個ICMP Ping包保存下來,對于下一個ICMP Ping包,則根據(jù)源IP與目標(biāo)IP找到上次保存的,如果次包與保存的包的標(biāo)識符相同,則累加包長度,如果超過65536,則說明有可能受到ping of death攻擊,將該包丟棄。
6. PingSweep
特征:
使用ICMP Echo輪詢多個主機(jī)。
預(yù)防:
預(yù)防:
對接收到的ICMP Ping包,將其記錄下來,對隨后的Ping包,如果是同一的源地址,則將計數(shù)加一,如果超過指定的允許數(shù)目,則將該包丟棄。
7. Pingflood
特征:
該攻擊在短時間內(nèi)向目的主機(jī)發(fā)送大量ping包,造成網(wǎng)絡(luò)堵塞或主機(jī)資源耗盡。
預(yù)防:
對接收到的ICMP Ping包,將其記錄下來,對隨后的Ping包,如果是同一的源地址,則將計數(shù)加一,如果超過指定的允許數(shù)目,則將該包丟棄。
8. Teardrop
特征:
Teardrop是基于UDP的病態(tài)分片數(shù)據(jù)包的攻擊方法,其工作原理是向被攻擊者發(fā)送多個分片的IP包(IP分片數(shù)據(jù)包中包括該分片數(shù)據(jù)包屬于哪個數(shù)據(jù)包以及在數(shù)據(jù)包中的位置等信息),某些操作系統(tǒng)收到含有重疊偏移的偽造分片數(shù)據(jù)包時將會出現(xiàn)系統(tǒng)崩潰、重啟等現(xiàn)象。(利用UDP包重組時重疊偏移(假設(shè)數(shù)據(jù)包中第二片IP包的偏移量小于第一片結(jié)束的位移,而且算上第二片IP包的Data,也未超過第一片的尾部,這就是重疊現(xiàn)象。)的漏洞對系統(tǒng)主機(jī)發(fā)動拒絕服務(wù)攻擊,最終導(dǎo)致主機(jī)菪掉;對于Windows系統(tǒng)會導(dǎo)致藍(lán)屏死機(jī),并顯示STOP 0x0000000A錯誤。)
預(yù)防:
對接收到的分片數(shù)據(jù)包進(jìn)行分析,計算數(shù)據(jù)包的片偏移量(Offset)是否有誤。
9. UDP Flood
特征:
UDP淹沒攻擊是導(dǎo)致基于主機(jī)的服務(wù)拒絕攻擊的一種。UDP 是一種無連接的協(xié)議,而且它不需要用任何程序建立連接來傳輸數(shù)據(jù)。當(dāng)攻擊者隨機(jī)地向受害系統(tǒng)的端口發(fā)送 UDP 數(shù)據(jù)包的時候,就可能發(fā)生了 UDP 淹沒攻擊。當(dāng)受害系統(tǒng)接收到一個 UDP 數(shù)據(jù)包的時候,它會確定目的端口正在等待中的應(yīng)用程序。當(dāng)它發(fā)現(xiàn)該端口中并不存在正在等待的應(yīng)用程序,它就會產(chǎn)生一個目的地址無法連接的 ICMP 數(shù)據(jù)包發(fā)送給該偽造的源地址。如果向受害者計算機(jī)端口發(fā)送了足夠多的 UDP 數(shù)據(jù)包的時候,整個系統(tǒng)就會癱瘓。
預(yù)防:
監(jiān)控指定的源IP與目標(biāo)IP為同一的UDP數(shù)據(jù)包,并計數(shù),當(dāng)超過指定的允許的數(shù)目時,則丟棄該包。
10. IGMP攻擊
特征:
IGMP攻擊就是偽造一個目的地址是單個ip, 但ip層指定協(xié)議為IGMP,系統(tǒng)會為你打造一個IGMP報頭,因為組播使用D類地址,所以系統(tǒng)不知如何處理,造成崩潰。
預(yù)防:
對接收到的IP包,檢查其包頭,看是否是IGMP(2)協(xié)議,并且目標(biāo)地址是單個IP,而非D類地址,則丟棄該包。
posted on 2009-02-16 15:34
水 閱讀(3038)
評論(4) 編輯 收藏 引用 所屬分類:
網(wǎng)絡(luò)安全