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