dos攻擊有多少種_DoS攻擊種類
DoS到底是什么?接觸PC機(jī)較早的同志會(huì)直接想到微軟磁盤操作系統(tǒng)的DOS--DiskOperationSystem?不,此DoS非彼DOS也,DoS即DenialOfService,拒絕服務(wù)的縮寫。
作個(gè)形象的比喻來(lái)理解DoS。街頭的餐館是為大眾提供餐飲服務(wù),如果一群地痞流氓要DoS餐館的話,手段會(huì)很多,比如霸占著餐桌不結(jié)賬,堵住餐館的大門不讓路,騷擾餐館的服務(wù)員或廚子不能干活,甚至更惡劣……相應(yīng)的計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng)則是為Internet用戶提供互聯(lián)網(wǎng)資源的,如果有黑客要進(jìn)行DoS攻擊的話,可以想象同樣有好多手段!今天最常見的DoS攻擊有對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的帶寬攻擊和連通性攻擊。帶寬攻擊指以極大的通信量沖擊網(wǎng)絡(luò),使得所有可用網(wǎng)絡(luò)資源都被消耗殆盡,最后導(dǎo)致合法的用戶請(qǐng)求無(wú)法通過(guò)。連通性攻擊指用大量的連接請(qǐng)求沖擊計(jì)算機(jī),使得所有可用的操作系統(tǒng)資源都被消耗殆盡,最終計(jì)算機(jī)無(wú)法再處理合法用戶的請(qǐng)求。
傳統(tǒng)上,攻擊者所面臨的主要問題是網(wǎng)絡(luò)帶寬,由于較小的網(wǎng)絡(luò)規(guī)模和較慢的網(wǎng)絡(luò)速度的限制,攻擊者無(wú)法發(fā)出過(guò)多的請(qǐng)求。雖然類似“the ping of death”的攻擊類型只需要較少量的包就可以摧毀一個(gè)沒有打過(guò)補(bǔ)丁的UNIX系統(tǒng),但大多數(shù)的DoS攻擊還是需要相當(dāng)大的帶寬的,而以個(gè)人為單位的黑客們很難使用高帶寬的資源。為了克服這個(gè)缺點(diǎn),DoS攻擊者開發(fā)了分布式的攻擊。攻擊者簡(jiǎn)單利用工具集合許多的網(wǎng)絡(luò)帶寬來(lái)同時(shí)對(duì)同一個(gè)目標(biāo)發(fā)動(dòng)大量的攻擊請(qǐng)求,這就是DDoS(Distributed Denial of Service)攻擊。
無(wú)論是DoS攻擊還是DDoS攻擊,簡(jiǎn)單的看,都只是一種破壞網(wǎng)絡(luò)服務(wù)的黑客方式,雖然具體的實(shí)現(xiàn)方式千變?nèi)f化,但都有一個(gè)共同點(diǎn),就是其根本目的是使受害主機(jī)或網(wǎng)絡(luò)無(wú)法及時(shí)接收并處理外界請(qǐng)求,或無(wú)法及時(shí)回應(yīng)外界請(qǐng)求。其具體表現(xiàn)方式有以下幾種:
1,制造大流量無(wú)用數(shù)據(jù),造成通往被攻擊主機(jī)的網(wǎng)絡(luò)擁塞,使被攻擊主機(jī)無(wú)法正常和外界通信。
2,利用被攻擊主機(jī)提供服務(wù)或傳輸協(xié)議上處理重復(fù)連接的缺陷,反復(fù)高頻的發(fā)出攻擊性的重復(fù)服務(wù)請(qǐng)求,使被攻擊主機(jī)無(wú)法及時(shí)處理其它正常的請(qǐng)求。
3,利用被攻擊主機(jī)所提供服務(wù)程序或傳輸協(xié)議的本身實(shí)現(xiàn)缺陷,反復(fù)發(fā)送畸形的攻擊數(shù)據(jù)引發(fā)系統(tǒng)錯(cuò)誤的分配大量系統(tǒng)資源,使主機(jī)處于掛起狀態(tài)甚至死機(jī)。
使用僵尸電腦進(jìn)行DOS攻擊
僵尸電腦(Zombie computer),簡(jiǎn)稱“僵尸(zombie)”,有些人稱之為“肉雞”,接入互聯(lián)網(wǎng)的電腦被病毒感染后,受控于黑客,可以隨時(shí)按照黑客的指令展開拒絕服務(wù)(DoS)攻擊或發(fā)送垃圾信息。通常,一部被侵占的電腦只是僵尸網(wǎng)絡(luò)里面眾多中的一環(huán),而且會(huì)被用來(lái)去運(yùn)行一連串的或遠(yuǎn)端控制的惡意程序。很多“僵尸電腦的擁有者”都沒有察覺到自己的系統(tǒng)已經(jīng)被“僵尸化”,就仿佛是沒有自主意識(shí)的僵尸一般。
攻擊流程
要理解dos攻擊,首先要理解TCP連接的三次握手過(guò)程(Three-wayhandshake)。在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。
第一次握手:建立連接時(shí),客戶端發(fā)送SYN包((SYN=i)到服務(wù)器,并進(jìn)入SYN SEND狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN (ACK=i+1 ),同時(shí)自己也發(fā)送一個(gè)SYN包((SYN=j)}即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ACK=j+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。
在上述過(guò)程中,還有一些重要的概念:
半連接:收到SYN包而還未收到ACK包時(shí)的連接狀態(tài)稱為半連接,即尚未完全完成三次握手的TCP連接。
半連接隊(duì)列:在三次握手協(xié)議中,服務(wù)器維護(hù)一個(gè)半連接隊(duì)列,該隊(duì)列為每個(gè)客戶端的SYN包(SYN=i )開設(shè)一個(gè)條目,該條目表明服務(wù)器已收到SYN包,并向客戶發(fā)出確認(rèn),正在等待客戶的確認(rèn)包。這些條目所標(biāo)識(shí)的連接在服務(wù)器處于SYN_ RECV狀態(tài),當(dāng)服務(wù)器收到客戶的確認(rèn)包時(shí),刪除該條目,服務(wù)器進(jìn)入ESTABLISHED狀態(tài)。
Backlog參數(shù):表示半連接隊(duì)列的最大容納數(shù)目。
SYN-ACK重傳次數(shù):服務(wù)器發(fā)送完SYN-ACK包,如果未收到客戶確認(rèn)包,服務(wù)器進(jìn)行首次重傳,等待一段時(shí)間仍未收到客戶確認(rèn)包,進(jìn)行第二次重傳,如果重傳次數(shù)超過(guò)系統(tǒng)規(guī)定的最大重傳次數(shù),系統(tǒng)將該連接信息、從半連接隊(duì)列中刪除。注意,每次重傳等待的時(shí)間不一定相同。
半連接存活時(shí)間:是指半連接隊(duì)列的條目存活的最長(zhǎng)時(shí)間,也即服務(wù)從收到SYN包到確認(rèn)這個(gè)報(bào)文無(wú)效的最長(zhǎng)時(shí)間,該時(shí)間值是所有重傳請(qǐng)求包的最長(zhǎng)等待時(shí)間總和。有時(shí)也稱半連接存活時(shí)間為Timeout時(shí)間、SYN_RECV存活時(shí)間。
上面三個(gè)參數(shù)對(duì)系統(tǒng)的TCP連接狀況有很大影響。
SYN洪水攻擊屬于DoS攻擊的一種,它利用TCP協(xié)議缺陷,通過(guò)發(fā)送大量的半連接請(qǐng)求,耗費(fèi)CPU和內(nèi)存資源。SYN攻擊除了能影響主機(jī)外,還可以危害路由器、防火墻等網(wǎng)絡(luò)系統(tǒng),事實(shí)上SYN攻擊并不管目標(biāo)是什么系統(tǒng),只要這些系統(tǒng)打開TCP服務(wù)就可以實(shí)施。從圖4-3可看到,服務(wù)器接收到連接請(qǐng)求(SYN=i )將此信息加入未連接隊(duì)列,并發(fā)送請(qǐng)求包給客戶端( SYN=j,ACK=i+1 ),此時(shí)進(jìn)入SYN_RECV狀態(tài)。當(dāng)服務(wù)器未收到客戶端的確認(rèn)包時(shí),重發(fā)請(qǐng)求包,一直到超時(shí),才將此條目從未連接隊(duì)列刪除。配合IP欺騙,SYN攻擊能達(dá)到很好的效果,通常,客戶端在短時(shí)間內(nèi)偽造大量不存在的IP地址,向服務(wù)器不斷地發(fā)送SYN包,服務(wù)器回復(fù)確認(rèn)包,并等待客戶的確認(rèn),由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直至超時(shí),這些偽造的SYN包將長(zhǎng)時(shí)間占用未連接隊(duì)列,正常的SYN 請(qǐng)求
被丟棄,目標(biāo)系統(tǒng)運(yùn)行緩慢,嚴(yán)重者引起網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓。過(guò)程如下:
攻擊主機(jī)C(地址偽裝后為C')-----大量SYN包----》被攻擊主機(jī)
C'《-------SYN/ACK包----被攻擊主機(jī)
由于C’地址不可達(dá),被攻擊主機(jī)等待SYN包超時(shí)。攻擊主機(jī)通過(guò)發(fā)大量SYN包填滿未連接隊(duì)列,導(dǎo)致正常SYN包被拒絕服務(wù)。另外,SYN洪水攻擊還可以通過(guò)發(fā)大量ACK包進(jìn)行DoS攻擊。
攻擊手段
拒絕服務(wù)攻擊是一種對(duì)網(wǎng)絡(luò)危害巨大的惡意攻擊。今天,DoS具有代表性的攻擊手段包括PingofDeath、TearDrop、UDPflood、SYNflood、LandAttack、IPSpoofingDoS等。看看它們又是怎么實(shí)現(xiàn)的。
dos攻擊快閃族
死亡之ping (pingofdeath)DengKelen
ICMP(InternetControlMessageProtocol,Internet控制信息協(xié)議)在Internet上用于錯(cuò)誤處理和傳遞控制信息。最普通的ping程序就是這個(gè)功能。而在TCP/IP的RFC文檔中對(duì)包的最大尺寸都有嚴(yán)格限制規(guī)定,許多操作系統(tǒng)的TCP/IP協(xié)議棧都規(guī)定ICMP包大小為64KB,且在對(duì)包的標(biāo)題頭進(jìn)行讀取之后,要根據(jù)該標(biāo)題頭里包含的信息來(lái)為有效載荷生成緩沖區(qū)?!癙ingofDeath”就是故意產(chǎn)生畸形的測(cè)試Ping(PacketInternetGroper)包,聲稱自己的尺寸超過(guò)ICMP上限,也就是加載的尺寸超過(guò)64KB上限,使未采取保護(hù)措施的網(wǎng)絡(luò)系統(tǒng)出現(xiàn)內(nèi)存分配錯(cuò)誤,導(dǎo)致TCP/IP協(xié)議棧崩潰,最終接收方宕機(jī)。
淚滴
淚滴攻擊利用在TCP/IP協(xié)議棧實(shí)現(xiàn)中信任IP碎片中的包的標(biāo)題頭所包含的信息來(lái)實(shí)現(xiàn)自己的攻擊。IP分段含有指示該分段所包含的是原包的哪一段的信息,某些TCP/IP協(xié)議棧(例如NT在servicepack4以前)在收到含有重疊偏移的偽造分段時(shí)將崩潰。
UDP泛洪
(UDPflood)
UDPflood攻擊:如今在Internet上UDP(用戶數(shù)據(jù)包協(xié)議)的應(yīng)用比較廣泛,很多提供WWW和Mail等服務(wù)設(shè)備通常是使用Unix的服務(wù)器,它們默認(rèn)打開一些被黑客惡意利用的UDP服務(wù)。如echo服務(wù)會(huì)顯示接收到的每一個(gè)數(shù)據(jù)包,而原本作為測(cè)試功能的chargen服務(wù)會(huì)在收到每一個(gè)數(shù)據(jù)包時(shí)隨機(jī)反饋一些字符。UDPflood假冒攻擊就是利用這兩個(gè)簡(jiǎn)單的TCP/IP服務(wù)的漏洞進(jìn)行惡意攻擊,通過(guò)偽造與某一主機(jī)的Chargen服務(wù)之間的一次的UDP連接,回復(fù)地址指向開著Echo服務(wù)的一臺(tái)主機(jī),通過(guò)將Chargen和Echo服務(wù)互指,來(lái)回傳送毫無(wú)用處且占滿帶寬的垃圾數(shù)據(jù),在兩臺(tái)主機(jī)之間生成足夠多的無(wú)用數(shù)據(jù)流,這一拒絕服務(wù)攻擊飛快地導(dǎo)致網(wǎng)絡(luò)可用帶寬耗盡。
SYN泛洪
(SYNflood)
SYNflood攻擊:我們知道當(dāng)用戶進(jìn)行一次標(biāo)準(zhǔn)的TCP(TransmissionControlProtocol)連接時(shí),會(huì)有一個(gè)3次握手過(guò)程。首先是請(qǐng)求服務(wù)方發(fā)送一個(gè)SYN(SynchronizeSequenceNumber)消息,服務(wù)方收到SYN后,會(huì)向請(qǐng)求方回送一個(gè)SYN-ACK表示確認(rèn),當(dāng)請(qǐng)求方收到SYN-ACK后,再次向服務(wù)方發(fā)送一個(gè)ACK消息,這樣一次TCP連接建立成功?!癝YNFlooding”則專門針對(duì)TCP協(xié)議棧在兩臺(tái)主機(jī)間初始化連接握手的過(guò)程進(jìn)行DoS攻擊,其在實(shí)現(xiàn)過(guò)程中只進(jìn)行前2個(gè)步驟:當(dāng)服務(wù)方收到請(qǐng)求方的SYN-ACK確認(rèn)消息后,請(qǐng)求方由于采用源地址欺騙等手段使得服務(wù)方收不到ACK回應(yīng),于是服務(wù)方會(huì)在一定時(shí)間處于等待接收請(qǐng)求方ACK消息的狀態(tài)。而對(duì)于某臺(tái)服務(wù)器來(lái)說(shuō),可用的TCP連接是有限的,因?yàn)樗麄冎挥杏邢薜膬?nèi)存緩沖區(qū)用于創(chuàng)建連接,如果這一緩沖區(qū)充滿了虛假連接的初始信息,該服務(wù)器就會(huì)對(duì)接下來(lái)的連接停止響應(yīng),直至緩沖區(qū)里的連接企圖超時(shí)。如果惡意攻擊方快速連續(xù)地發(fā)送此類連接請(qǐng)求,該服務(wù)器可用的TCP連接隊(duì)列將很快被阻塞,系統(tǒng)可用資源急劇減少,網(wǎng)絡(luò)可用帶寬迅速縮小,長(zhǎng)此下去,除了少數(shù)幸運(yùn)用戶的請(qǐng)求可以插在大量虛假請(qǐng)求間得到應(yīng)答外,服務(wù)器將無(wú)法向用戶提供正常的合法服務(wù)。
Land(LandAttack)攻擊
在Land攻擊中,黑客利用一個(gè)特別打造的SYN包--它的原地址和目標(biāo)地址都被設(shè)置成某一個(gè)服務(wù)器地址進(jìn)行攻擊。此舉將導(dǎo)致接受服務(wù)器向它自己的地址發(fā)送SYN-ACK消息,結(jié)果這個(gè)地址又發(fā)回ACK消息并創(chuàng)建一個(gè)空連接,每一個(gè)這樣的連接都將保留直到超時(shí),在Land攻擊下,許多UNIX將崩潰,NT變得極其緩慢(大約持續(xù)五分鐘)。
IP欺騙
dos攻擊
這種攻擊利用TCP協(xié)議棧的RST位來(lái)實(shí)現(xiàn),使用IP欺騙,迫使服務(wù)器把合法用戶的連接復(fù)位,影響合法用戶的連接。假設(shè)有一個(gè)合法用戶(100.100.100.100)已經(jīng)同服務(wù)器建了正常的連接,攻擊者構(gòu)造攻擊的TCP數(shù)據(jù),偽裝自己的IP為100.100.100.100,并向服務(wù)器發(fā)送一個(gè)帶有RST位的TCP數(shù)據(jù)段。服務(wù)器接收到這樣的數(shù)據(jù)后,認(rèn)為從100.100.100.100發(fā)送的連接有錯(cuò)誤,就會(huì)清空緩沖區(qū)中已建立好的連接。這時(shí),合法用戶100.100.100.100再發(fā)送合法數(shù)據(jù),服務(wù)器就已經(jīng)沒有這樣的連接了,該用戶就被拒絕服務(wù)而只能重新開始建立新的連接。
攻擊方法
具體DoS攻擊方法很多,但大多都可以分為以下幾類:
利用軟件實(shí)現(xiàn)的缺陷
OOB攻擊(常用工具winnuke),teardrop攻擊(常用工具teardrop.cboink.cbonk.c),land攻擊,IGMP碎片包攻擊,jolt攻擊,Cisco2600路由器IOSversion12.0(10)遠(yuǎn)程拒絕服務(wù)攻擊等等,這些攻擊都是利用了被攻擊軟件的實(shí)現(xiàn)上的缺陷完成DoS攻擊的。通常這些攻擊工具向被攻擊系統(tǒng)發(fā)送特定類型的一個(gè)或多個(gè)報(bào)文,這些攻擊通常都是致命的,一般都是一擊致死,而且很多攻擊是可以偽造源地址的,所以即使通過(guò)IDS或者別的sniffer軟件記錄到攻擊報(bào)文也不能找到誰(shuí)發(fā)動(dòng)的攻擊,而且此類型的攻擊多是特定類型的幾個(gè)報(bào)文,非常短暫的少量的報(bào)文,如果偽造源IP地址的話,使追查工作幾乎是不可能。
軟件主流程圖
那么如何造成這些攻擊的?通常是軟件開發(fā)過(guò)程中對(duì)某種特定類型的報(bào)文、或請(qǐng)求沒有處理,導(dǎo)致軟件遇到這種類型的報(bào)文運(yùn)行出現(xiàn)異常,導(dǎo)致軟件崩潰甚至系統(tǒng)崩潰。下面結(jié)合幾個(gè)具體實(shí)例解釋一下這種攻擊的成因。
1997年5月7號(hào)有人發(fā)布了一個(gè)winnuke.c。首先建立一條到Win95/NT主機(jī)的TCP連接,然后發(fā)送TCP緊急數(shù)據(jù),導(dǎo)致對(duì)端系統(tǒng)崩潰。139/TCP是Win95/NT系統(tǒng)最常見的偵聽端口,所以winnuke.c使用了該端口。之所以稱呼這種攻擊為OOB攻擊,因?yàn)镸SG_OOB標(biāo)志,實(shí)際應(yīng)該是TCP緊急數(shù)據(jù)攻擊。
原始teardrop.c只構(gòu)造了兩種碎片包,每次同時(shí)發(fā)送這兩種UDP碎片包。如果指定發(fā)送次數(shù),將完全重復(fù)先前所發(fā)送出去的兩種碎片包。它可以偽造源ip并跨越路由器進(jìn)行遠(yuǎn)程攻擊,影響的系統(tǒng)包括Linux/WinNT/Win95。使用的方法是:
teardrop源ip目的ip[-s源端口][-d目的端口][-n次數(shù)]
比較新的一個(gè)DoS攻擊是Windows的SMB實(shí)現(xiàn)中的DoS攻擊,2002年8月發(fā)布,只要允許匿名連接的windows系統(tǒng)就可以進(jìn)行遠(yuǎn)程攻擊,強(qiáng)烈建議Windows用戶打相應(yīng)的補(bǔ)丁。它的方法就是先和目標(biāo)系統(tǒng)建立一個(gè)連接,然后發(fā)送一個(gè)特定的請(qǐng)求,目標(biāo)系統(tǒng)就會(huì)蘭屏。發(fā)布的測(cè)試工具SMBdie.exe是圖形界面工具,輸入目標(biāo)地址NETBIOS名稱即可。
從上面的討論可以看出,這種攻擊行為威力很大,而且難于偵察。但真實(shí)情況下它的危害僅現(xiàn)于漏洞發(fā)布后的不長(zhǎng)的時(shí)間段內(nèi),相關(guān)廠商會(huì)很快發(fā)布補(bǔ)丁修補(bǔ)這種漏洞。所以上面提到的幾種較老的攻擊在現(xiàn)實(shí)的環(huán)境中,通常是無(wú)效的。不過(guò)最新的攻擊方法還是讓我們不寒而栗,我們可以做的就是關(guān)注安全漏洞的發(fā)布,及時(shí)打上新的補(bǔ)丁。如果你想偷懶的話,購(gòu)買專業(yè)安全服務(wù)公司的相關(guān)服務(wù)應(yīng)該是個(gè)更好的選擇。
利用協(xié)議的漏洞
如果說(shuō)上面那種漏洞危害的時(shí)間不是很長(zhǎng),那么這種攻擊的生存能力卻非常強(qiáng)。為了能夠在網(wǎng)絡(luò)上進(jìn)行互通、互聯(lián),所有的軟件實(shí)現(xiàn)都必須遵循既有的協(xié)議,而如果這種協(xié)議存在漏洞的話,所有遵循此協(xié)議的軟件都會(huì)受到影響。
最經(jīng)典的攻擊是synflood攻擊,它利用TCP/IP協(xié)議的漏洞完成攻擊。通常一次TCP連接的建立包括3個(gè)步驟,客戶端發(fā)送SYN包給服務(wù)器端,服務(wù)器分配一定的資源給這里連接并返回SYN/ACK包,并等待連接建立的最后的ACK包,最后客戶端發(fā)送ACK報(bào)文,這樣兩者之間的連接建立起來(lái),并可以通過(guò)連接傳送數(shù)據(jù)了。而攻擊的過(guò)程就是瘋狂發(fā)送SYN報(bào)文,而不返回ACK報(bào)文,服務(wù)器占用過(guò)多資源,而導(dǎo)致系統(tǒng)資源占用過(guò)多,沒有能力響應(yīng)別的操作,或者不能響應(yīng)正常的網(wǎng)絡(luò)請(qǐng)求。
這個(gè)攻擊是經(jīng)典的以小搏大的攻擊,自己使用少量資源占用對(duì)方大量資源。一臺(tái)P4的Linux系統(tǒng)大約能發(fā)到30-40M的64字節(jié)的synflood報(bào)文,而一臺(tái)普通的服務(wù)器20M的流量就基本沒有任何響應(yīng)了(包括鼠標(biāo)、鍵盤)。而且synflood不僅可以遠(yuǎn)程進(jìn)行,而且可以偽造源IP地址,給追查造成很大困難,要查找必須所有骨干網(wǎng)絡(luò)運(yùn)營(yíng)商,一級(jí)一級(jí)路由器的向上查找。
TCP/IP協(xié)議結(jié)構(gòu)圖
對(duì)于偽造源IP的synflood攻擊,除非攻擊者和被攻擊的系統(tǒng)之間所有的路由器的管理者都配合查找,否則很難追查。當(dāng)前一些防火墻產(chǎn)品聲稱有抗DoS的能力,但通常他們能力有限,包括國(guó)外的硬件防火墻大多100M防火墻的抗synflood的能力只有20-30Mbps(64字節(jié)syn包),這里涉及到它們對(duì)小報(bào)文的轉(zhuǎn)發(fā)能力,再大的流量甚至能把防火墻打死機(jī)。有些安全廠商認(rèn)識(shí)到DoS攻擊的危害,開始研發(fā)專用的抗拒絕服務(wù)產(chǎn)品。
由于TCP/IP協(xié)議相信報(bào)文的源地址,另一種攻擊方式是反射拒絕服務(wù)攻擊,另外可以利用還有廣播地址,和組播協(xié)議輔助反射拒絕服務(wù)攻擊效果更好。不過(guò)大多數(shù)路由器都禁止廣播地址和組播協(xié)議的地址。
另一類攻擊方式是使用大量符合協(xié)議的正常服務(wù)請(qǐng)求,由于每個(gè)請(qǐng)求耗費(fèi)很大系統(tǒng)資源,導(dǎo)致正常服務(wù)請(qǐng)求不能成功。如HTTP協(xié)議是無(wú)狀態(tài)協(xié)議,攻擊者構(gòu)造大量搜索請(qǐng)求,這些請(qǐng)求耗費(fèi)大量服務(wù)器資源,導(dǎo)致DoS。這種方式攻擊比較好處理,由于是正常請(qǐng)求,暴露了正常的源IP地址,禁止這些IP就可以了。
進(jìn)行資源比拼
這種攻擊方式屬于無(wú)賴打法,我憑借著手中的資源豐富,發(fā)送大量的垃圾數(shù)據(jù)侵占完你的資源,導(dǎo)致DoS。比如,ICMPflood,mstreamflood,Connectionflood。為了獲得比目標(biāo)系統(tǒng)更多資源,通常攻擊者會(huì)發(fā)動(dòng)DDoS(DistributedDos分布式拒絕服務(wù))攻擊者控制多個(gè)攻擊傀儡發(fā)動(dòng)攻擊,這樣才能產(chǎn)生預(yù)期的效果。前兩類攻擊是可以偽造IP地址的,追查也是非常困難,第3種攻擊由于需要建立連接,可能會(huì)暴露攻擊傀儡的IP地址,通過(guò)防火墻禁止這些IP就可以了。對(duì)于難于追查,禁止的攻擊行為,我們只能期望專用的抗拒絕服務(wù)產(chǎn)品了。
DoS攻擊種類
DoS攻擊有許多種類,主要有Land攻擊、死亡之ping、淚滴、Smurf攻擊及SYN洪水等。
據(jù)統(tǒng)計(jì),在所有黑客攻擊事件中,syn洪水攻擊是最常見又最容易被利用的一種DoS攻擊手法。
1.攻擊原理
要理解SYN洪水攻擊,首先要理解TCP連接的三次握手過(guò)程(Three-wayhandshake)。在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。第一次握手:建立連接時(shí),客戶端發(fā)送SYN包((SYN=i)到服務(wù)器,并進(jìn)入SYN SEND狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN (ACK=i+1 ),同}Jj’自己也發(fā)送一個(gè)SYN包((SYN j)}即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN十ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ACK=j+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。
在上述過(guò)程中,還有一些重要的概念:
半連接:收到SYN包而還未收到ACK包時(shí)的連接狀態(tài)稱為半連接,即尚未完全完成三次握手的TCP連接。
半連接隊(duì)列:在三次握手協(xié)議中,服務(wù)器維護(hù)一個(gè)半連接隊(duì)列,該隊(duì)列為每個(gè)客戶端的SYN包(SYN=i )開設(shè)一個(gè)條目,該條目表明服務(wù)器已收到SYN包,并向客戶發(fā)出確認(rèn),正在等待客戶的確認(rèn)包。這些條目所標(biāo)識(shí)的連接在服務(wù)器處于SYN_ RECV狀態(tài),當(dāng)服務(wù)器收到客戶的確認(rèn)包時(shí),刪除該條目,服務(wù)器進(jìn)入ESTABLISHED狀態(tài)。
Backlog參數(shù):表示半連接隊(duì)列的最大容納數(shù)目。
SYN-ACK重傳次數(shù):服務(wù)器發(fā)送完SYN-ACK包,如果未收到客戶確認(rèn)包,服務(wù)器進(jìn)行首次重傳,等待一段時(shí)間仍未收到客戶確認(rèn)包,進(jìn)行第二次重傳,如果重傳次數(shù)超過(guò)系統(tǒng)規(guī)定的最大重傳次數(shù),系統(tǒng)將該連接信息、從半連接隊(duì)列中刪除。注意,每次重傳等待的時(shí)間不一定相同。
半連接存活時(shí)間:是指半連接隊(duì)列的條目存活的最長(zhǎng)時(shí)間,也即服務(wù)從收到SYN包到確認(rèn)這個(gè)報(bào)文無(wú)效的最長(zhǎng)時(shí)間,該時(shí)間值是所有重傳請(qǐng)求包的最長(zhǎng)等待時(shí)間總和。有時(shí)也稱半連接存活時(shí)間為Timeout時(shí)間、SYN_RECV存活時(shí)間。
上面三個(gè)參數(shù)對(duì)系統(tǒng)的TCP連接狀況有很大影響。
SYN洪水攻擊屬于DoS攻擊的一種,它利用TCP協(xié)議缺陷,通過(guò)發(fā)送大量的半連接請(qǐng)求,耗費(fèi)CPU和內(nèi)存資源。SYN攻擊除了能影響主機(jī)外,還可以危害路由器、防火墻等網(wǎng)絡(luò)系統(tǒng),事實(shí)上SYN攻擊并不管目標(biāo)是什么系統(tǒng),只要這些系統(tǒng)打開TCP服務(wù)就可以實(shí)施。從圖4-3可看到,服務(wù)器接收到連接請(qǐng)求(SYN=i )將此信息加入未連接隊(duì)列,并發(fā)送請(qǐng)求包給客戶( SYN=j,ACK=i+1 ),此時(shí)進(jìn)入SYN_RECV狀態(tài)。當(dāng)服務(wù)器未收到客戶端的確認(rèn)包時(shí),重發(fā)請(qǐng)求包,一直到超時(shí),才將此條目從未連接隊(duì)列刪除。配合IP欺騙,SYN攻擊能達(dá)到很好的效果,通常,客戶端在短時(shí)間內(nèi)偽造大量不存在的IP地址,向服務(wù)器不斷地發(fā)送SYN包,服務(wù)器回復(fù)確認(rèn)包,并等待客戶的確認(rèn),由于源地址是不存在的,服務(wù)器需要不斷的重發(fā)直至超時(shí),這些偽造的SYN包將長(zhǎng)時(shí)間占用未連接隊(duì)列,正常的SYN 請(qǐng)求
被丟棄,目標(biāo)系統(tǒng)運(yùn)行緩慢,嚴(yán)重者引起網(wǎng)絡(luò)堵塞甚至系統(tǒng)癱瘓。過(guò)程如下:
攻擊主機(jī)C(地址偽裝后為C‘)-----大量SYN包----》彼攻擊主機(jī)
C’《-------SYN/ACK包----被攻擊主機(jī)
由于C’地址不可達(dá),被攻擊主機(jī)等待SYN包超時(shí)。攻擊主機(jī)通過(guò)發(fā)人量SYN包填滿未連接隊(duì)列,導(dǎo)致正常SYN包被拒絕服務(wù)。另外,SYN洪水攻擊還可以通過(guò)發(fā)大量ACK包進(jìn)行DoS攻擊。
2.傳統(tǒng)算法
抵御SYN洪水攻擊較常用的方法為網(wǎng)關(guān)防火墻法、中繼防火墻法和SYNcookies。為便于敘述,將系統(tǒng)拓?fù)鋱D簡(jiǎn)化為圖4-4。圖中,按網(wǎng)絡(luò)在防火墻內(nèi)側(cè)還是外側(cè)將其分為內(nèi)網(wǎng)、外網(wǎng)(內(nèi)網(wǎng)是受防火墻保護(hù)的)。其次,設(shè)置防火墻的SYN重傳計(jì)時(shí)器。超時(shí)值必須足夠小,避免backlog隊(duì)列被填滿;同時(shí)又要足夠大保證用戶的正常通訊。
(1) 網(wǎng)關(guān)防火墻法
網(wǎng)關(guān)防火墻抵御攻擊的基本思想是:對(duì)于內(nèi)網(wǎng)服務(wù)器所發(fā)的SYN/ACK包,防火墻立即發(fā)送ACK包響應(yīng)。當(dāng)內(nèi)網(wǎng)服務(wù)器接到ACK包后,從backlog隊(duì)列中移出此半連接,連接轉(zhuǎn)為開連接,TCP連接建成。由于服務(wù)器處理開連接的能力比處理半連接大得多,這種方法能有效減輕對(duì)內(nèi)網(wǎng)服務(wù)器的SYN攻擊,能有效地讓backlog隊(duì)列處于未滿狀態(tài),同時(shí)在重傳一個(gè)未完成的連接之前可以等待更長(zhǎng)時(shí)間。
以下為算法完整描述:
第一步,防火墻截獲外網(wǎng)客戶端發(fā)向內(nèi)網(wǎng)服務(wù)器SYN數(shù)據(jù)包,允許其通過(guò),抵達(dá)內(nèi)網(wǎng)服務(wù)器。同時(shí)在連接跟蹤表中記錄此事件。
第二步,防火墻截獲服務(wù)器發(fā)向客戶端的SYN/ACK響應(yīng)包,用連接跟蹤表中記錄的相應(yīng)SYN包匹配它。
第三步,防火墻讓截獲的SYN/ACK繼續(xù)進(jìn)行(發(fā)向客戶端)。同時(shí),向內(nèi)網(wǎng)服務(wù)器發(fā)送ACK包。這樣,對(duì)服務(wù)器來(lái)說(shuō),TCP連接三次握手已經(jīng)完成。系統(tǒng)在backlog隊(duì)列中刪掉此半連接。
第四步,看此TCP連接是否有效,相應(yīng)產(chǎn)生兩種解決方法。如果客戶端的連接嘗試是有效的,那么防火墻將接到來(lái)自客戶端的ACK包,然后防火墻將它轉(zhuǎn)發(fā)到服務(wù)器。服務(wù)器會(huì)忽略這個(gè)冗余的ACK包,這在TCP協(xié)議中是允許的。
如果客戶端的IP地址并不存在,那么防火墻將收不到來(lái)自客戶端的ACK包,重轉(zhuǎn)計(jì)時(shí)器將超時(shí)。這時(shí),防火墻重傳此連接。
(2) 中繼防火墻法
中繼防火墻抵御攻擊的思想是:防火墻在向內(nèi)網(wǎng)服務(wù)器發(fā)SYN包之前,首先完成與外網(wǎng)的三次握手連接,從而消除SYN洪水攻擊的成立條件。
以下為算法完整描述:
第一步,防火墻截獲外網(wǎng)客戶端發(fā)向內(nèi)網(wǎng)服務(wù)器SYN數(shù)據(jù)包。
第二步,防火墻并不直接向內(nèi)網(wǎng)發(fā)SYN數(shù)據(jù)包,而是代替內(nèi)網(wǎng)服務(wù)器向外網(wǎng)發(fā)SYNIACK數(shù)據(jù)包。
第三步,只有接到外網(wǎng)的ACK包,防火墻向內(nèi)網(wǎng)發(fā)SYN包。
第四步,服務(wù)器應(yīng)答SYN/ACK包。
第五步,防火墻應(yīng)答ACK包。
(3) 分析
首先分析算法的性能,可以看出:為了提高效率,上述算法使用了狀態(tài)檢測(cè)等機(jī)制(可通過(guò)本系統(tǒng)的基本模塊層得以實(shí)現(xiàn))
對(duì)于非SYN包(CSYN/ACK及ACK包),如果在連線跟蹤信息表未查找到相應(yīng)項(xiàng),則還要匹配規(guī)則庫(kù),而匹配規(guī)則庫(kù)需比較諸多項(xiàng)(如IP地址、端口號(hào)等),花費(fèi)較大,這會(huì)降低防火墻的流量。另外,在中繼防火墻算法中,由于使用了SYN包代理,增加了防火墻的負(fù)荷,也會(huì)降低防火墻的流量。
其次,當(dāng)攻擊主機(jī)發(fā)ACK包,而不是SYN包,算法將出現(xiàn)安全漏洞。一般地,TCP連接從SYN包開始,一旦 SYN包匹配規(guī)則庫(kù),此連接將被加到連接跟蹤表中,并且系統(tǒng)給其60s延時(shí)。之后,當(dāng)接到ACK包時(shí),此連接延時(shí)突然加大到3600s。如果,TCP連接從ACK包開始,同時(shí)此連接未在連接跟蹤表中注冊(cè),ACK包會(huì)匹配規(guī)則庫(kù)。如匹配成功,此連接將被加到連接跟蹤表中,同時(shí)其延時(shí)被設(shè)置為3600s。即使系統(tǒng)無(wú)響應(yīng),此連接也不會(huì)終止。如果攻擊者發(fā)大量的ACK包,就會(huì)使半連接隊(duì)列填滿,導(dǎo)致無(wú)法建立其它TCP連接。此類攻擊來(lái)自于內(nèi)網(wǎng)。因?yàn)?,?lái)自于外網(wǎng)的ACK包攻擊,服務(wù)器會(huì)很快發(fā)RST包終止此連接(SOs》。而對(duì)于內(nèi)網(wǎng)的外發(fā)包,其限制規(guī)則的嚴(yán)格性要小的多。一旦攻擊者在某時(shí)間段內(nèi)從內(nèi)網(wǎng)發(fā)大量ACK包,并且速度高于防火墻處理速度,很容易造成系統(tǒng)癱瘓。
(4) SYN cookies
Linux支持SYN cookies,它通過(guò)修改TCP協(xié)議的序列號(hào)生成方法來(lái)加強(qiáng)抵御SYN洪水攻擊能力。在TCP協(xié)議中,當(dāng)收到客戶端的SYN請(qǐng)求時(shí),服務(wù)器需要回復(fù)SYN-SACK包給客戶端,客戶端也要發(fā)送確認(rèn)包給服務(wù)器。通常,服務(wù)器的初始序列號(hào)由服務(wù)器按照一定的規(guī)律計(jì)算得到或采用隨機(jī)數(shù),但在SYN cookies中,服務(wù)器的初始序列號(hào)是通過(guò)對(duì)客戶端IP地址、客戶端端口、服務(wù)器IP地址和服務(wù)器端口以及其他一些安全數(shù)值等要素進(jìn)行hash運(yùn)算,加密得到的,稱之為cookie。當(dāng)服務(wù)器遭受SYN攻擊使得backlog隊(duì)列滿時(shí),服務(wù)器并不拒絕新的SYN請(qǐng)求,而是回復(fù)cookie(回復(fù)包的SYN序列號(hào))給客戶端,如果收到客戶端的ACK包,服務(wù)器將客戶端的ACK序列號(hào)減去1得到。cookie比較值,并將上述要素進(jìn)行一次hash運(yùn)算,看看是否等于此cookie。如果相等,直接完成三次握手(注意:此時(shí)并不用查看此連接是否屬于backlog隊(duì)列)。
(5)land攻擊
land 攻擊是一種使用相同的源和目的主機(jī)和端口發(fā)送數(shù)據(jù)包到某臺(tái)機(jī)器的攻擊。結(jié)果通常使存在漏洞的機(jī)器崩潰。
在Land攻擊中,一個(gè)特別打造的SYN包中的原地址和目標(biāo)地址都被設(shè)置成某一個(gè)服務(wù)器地址,這時(shí)將導(dǎo)致接受服務(wù)器向它自己的地址發(fā)送SYN一ACK消息,結(jié)果這個(gè)地址又發(fā)回ACK消息并創(chuàng)建一個(gè)空連接,每一個(gè)這樣的連接都將保留直到超時(shí)掉。對(duì)Land攻擊反應(yīng)不同,許多UNIX實(shí)現(xiàn)將崩潰,而 Windows NT 會(huì)變的極其緩慢(大約持續(xù)五分鐘)。
(6)死亡之Ping
(ping of death)
對(duì)目標(biāo)IP不停地Ping探測(cè)從而致使目標(biāo)主機(jī)網(wǎng)絡(luò)癱瘓。常見工具有蝸牛炸彈、AhBomb等。
由于在早期的階段,路由器對(duì)包的最大尺寸都有限制,許多操作系統(tǒng)對(duì)TCP/IP棧的實(shí)現(xiàn)在ICMP包上都是規(guī)定64KB,并且在對(duì)包的標(biāo)題頭進(jìn)行讀取之后,要根據(jù)該標(biāo)題頭里包含的信息來(lái)為有效載荷生成緩沖區(qū),當(dāng)產(chǎn)生畸形的,聲稱自己的尺寸超過(guò)ICMP上限的包也就是加載的尺寸超過(guò)64K上限時(shí),就會(huì)出現(xiàn)內(nèi)存分配錯(cuò)誤,導(dǎo)致TCP/IP堆棧崩潰,致使接受方死機(jī)。
防御:現(xiàn)在所有的標(biāo)準(zhǔn)TCP/IP實(shí)現(xiàn)都已實(shí)現(xiàn)對(duì)付超大尺寸的包,并且大多數(shù)防火墻能夠自動(dòng)過(guò)濾這些攻擊,包括:從windows 98之后的windows NT(service pack 3之后),Solaris、和Mac OS都具有抵抗一般ping of death攻擊的能力。此外,對(duì)防火墻進(jìn)行配置,阻斷ICMP以及任何未知協(xié)議,都講防止此類攻擊。
ping -t(無(wú)限ping) -l(長(zhǎng)度) 65500 ip 死亡之ping(發(fā)送大于64K的文件并一直ping就成了死亡之ping)
(7)淚滴
teardrop)
淚滴攻擊利用那些在TCP/IP堆棧實(shí)現(xiàn)中信任IP碎片中的包的標(biāo)題頭所包含的信息來(lái)實(shí)現(xiàn)自己的攻擊。IP分段含有指示該分段所包含的是原包的哪一段的信息,某些TCP/IP(包括servicepack 4以前的NT)在收到含有重疊偏移的偽造分段時(shí)將崩潰。
防御:服務(wù)器應(yīng)用最新的服務(wù)包,或者在設(shè)置防火墻時(shí)對(duì)分段進(jìn)行重組,而不是轉(zhuǎn)發(fā)它們
(8)Smurf攻擊
Smurf攻擊是以最初發(fā)動(dòng)這種攻擊的程序名“Smurf”來(lái)命名的。這種攻擊方法結(jié)合使用了IP欺騙和ICMP回復(fù)方法使大量網(wǎng)絡(luò)傳輸充斥目標(biāo)系統(tǒng),引起目標(biāo)系統(tǒng)拒絕為正常系統(tǒng)進(jìn)行服務(wù)。Smurf攻擊通過(guò)使用將回復(fù)地址設(shè)置成受害網(wǎng)絡(luò)的廣播地址的ICMP應(yīng)答請(qǐng)求(ping)數(shù)據(jù)包,來(lái)淹沒受害主機(jī),最終導(dǎo)致該網(wǎng)絡(luò)的所有主機(jī)都對(duì)此ICMP應(yīng)答請(qǐng)求做出答復(fù),導(dǎo)致網(wǎng)絡(luò)阻塞。更加復(fù)雜的Smurf將源地址改為第三方的受害者,最終導(dǎo)致第三方崩潰。
非常好我支持^.^
(1) 100%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說(shuō)] uboot的基本概念和啟動(dòng)流程分析 2023-10-24
- [電子說(shuō)] 編譯官方fridaserver或者strongFrida并替換系統(tǒng)內(nèi)置版本 2023-10-24
- [電子說(shuō)] “協(xié)同發(fā)展,生態(tài)聚合” 開放原子1024程序員節(jié)圓滿落幕 2023-10-24
- [人工智能] 機(jī)器學(xué)習(xí)需要掌握的九種工具盤點(diǎn) 2023-10-24
- [電子說(shuō)] 多路徑和iSCSI SAN存儲(chǔ)技術(shù)介紹 2023-10-24
- [電子說(shuō)] 三星宣布正開發(fā)RGB OLEDoS 蘋果考慮采用 2023-10-24
- [電子說(shuō)] 浩辰CAD Linux版 2024全球發(fā)布 2023-10-23
- [電子說(shuō)] 18萬(wàn)獎(jiǎng)金!開放原子開源大賽OpenCloudOS賽題征集開啟 2023-10-21
( 發(fā)表人:龔婷 )