国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

DDOS攻擊方式總結

2017-11-27 22:58:03 15698

本人近期一直在研究DDOS攻擊,并通讀了《破壞之王-DDOS攻擊與防范》一書(shū),書(shū)中對于DDOS的攻擊方式與防范寫(xiě)的很詳細,很推薦閱讀,并針對本書(shū)中的DDOS攻擊方式做了總結。


1、攻擊網(wǎng)絡(luò )寬帶資源


1.1直接攻擊

    使用大量的受控主機向被攻擊目標發(fā)送大量的網(wǎng)絡(luò )數據包,以沾滿(mǎn)被攻擊目標的寬帶,并消耗服務(wù)器和網(wǎng)絡(luò )設備的網(wǎng)絡(luò )數據處理能力,達到拒絕服務(wù)的目的。

1.png

直接攻擊的主要方法有ICMP/IGMP洪水攻擊和UDP洪水攻擊兩種。

  • 1.1.1  ICMP/UDP洪水攻擊

    網(wǎng)絡(luò )控制消息協(xié)議(ICMP)是TCP/IP協(xié)議族的核心協(xié)議之一,它用于在TCP/IP網(wǎng)絡(luò )中發(fā)送控制消息,提供可能發(fā)生在通信環(huán)境的各種問(wèn)題反饋,通過(guò)這些消息,管理者可以對所發(fā)生的問(wèn)題做出診斷,然后采取適當的解決措施。

    因特網(wǎng)組管理協(xié)議(IGMP)是用于管理因特網(wǎng)協(xié)議多播組成員的一種通信協(xié)議,IP主機和相鄰的路由器利用IGMP來(lái)建立多播組的組成員。

    攻擊者使用受控主機向被攻擊目標發(fā)送大量的ICMP/IGMP報文,進(jìn)行洪水攻擊以消耗目標的寬帶資源,這種類(lèi)型的攻擊出現的很早,使用hping等工具就能簡(jiǎn)單的發(fā)起攻擊。但現在使用這種方法發(fā)動(dòng)的攻擊已見(jiàn)不多,被攻擊目標可以在其網(wǎng)絡(luò )邊界直接過(guò)濾并丟棄ICMP/IGMP數據包使攻擊無(wú)效化。

  • 1.1.2  UDP洪水攻擊

    用戶(hù)數據包協(xié)議(UDP)是一種面向無(wú)連接的傳輸層協(xié)議,主要用戶(hù)不要求分組順序到達的傳輸,提供面向實(shí)事務(wù)的簡(jiǎn)單的不可靠信息傳送服務(wù)。

    利用UDP數據報文,攻擊者也可以發(fā)送洪水攻擊,UDP洪水攻擊和ICMP/IGMP洪水攻擊的原理基本相同,通常,攻擊者會(huì )使用小包和大包兩種方式進(jìn)行攻擊。

    小包是指64字節大小的數據包,這是以太網(wǎng)上傳輸數據幀的最小值,在相同流量下,單包體積越小,數據包的數量就越多。由于交換機、路由器等網(wǎng)絡(luò )設備需要對沒(méi)一個(gè)數據包進(jìn)行檢查和校驗,因此使用UDP小包攻擊能夠最有效的增大網(wǎng)絡(luò )設備處理數據包的壓力,造成處理速度的緩慢和傳輸延遲等拒絕服務(wù)攻擊的效果。

    大包是指1500字節以上的數據包,其大小超過(guò)了以太網(wǎng)的最大傳輸單元,使用UDP大包攻擊,能夠有效的占用網(wǎng)絡(luò )接口的傳輸寬帶,并迫使被攻擊目標在接受到UDP數據時(shí)進(jìn)行分片重組,造成網(wǎng)絡(luò )擁堵,服務(wù)器響應速度變慢。

    UDP洪水攻擊也是很早就出現的一種拒絕服務(wù)攻擊方式,這種攻擊發(fā)動(dòng)簡(jiǎn)單,有相當多的工具都能夠發(fā)動(dòng)UDP洪水攻擊,如hping,LOIC等,但UDP洪水攻擊完全依靠受控主機本身的網(wǎng)絡(luò )性能,因此通常對目標寬帶資源的消耗并不太大。http://www.tjdsmy.cn/archives/64088.html

1.2發(fā)射和放大攻擊

   攻擊者可以使用ICMP/IGMP洪水攻擊和UDP洪水攻擊等方式直接對被攻擊目標展開(kāi)消耗網(wǎng)絡(luò )寬帶資源的分布式拒絕服務(wù)攻擊,但這種攻擊方式不僅較低,還很容易被查到攻擊的源頭,雖然攻擊者可以使用偽造源IP地址的方式進(jìn)行隱藏,但更好的方式是使用反射攻擊技術(shù)。

   發(fā)射攻擊又被稱(chēng)為DRDoS(分布式反射拒絕服務(wù))攻擊,是指利用路由器、服務(wù)器等設施對請求產(chǎn)生應答,從而反射攻擊流量并隱藏攻擊來(lái)源的一種分布式拒絕服務(wù)攻擊技術(shù)。

2.png

   在進(jìn)行反射攻擊時(shí),攻擊者使用受控主機發(fā)送大量的數據包,這些數據包的特別之處在于,其目的IP地址指向作為反射器的服務(wù)器、路由器等設施,而源IP地址則被偽造成被攻擊目標的IP地址,反射器在收到數據包時(shí),會(huì )認為該數據包是否被攻擊目標所發(fā)來(lái)的請求,因此會(huì )將相應數據發(fā)送給被攻擊目標,當大量的響應數據包涌向攻擊目標時(shí),就會(huì )耗盡目標的網(wǎng)絡(luò )寬帶資源,造成拒絕服務(wù)攻擊。

   發(fā)動(dòng)反射攻擊需要在互聯(lián)網(wǎng)上找到大量的發(fā)射器,某些種類(lèi)的反射攻擊并不難實(shí)現,例如,對于A(yíng)CK反射攻擊,只需要找到互聯(lián)網(wǎng)上開(kāi)放的TCP端口的服務(wù)器即可,而這種服務(wù)器在互聯(lián)網(wǎng)上的存在是非常廣泛的。

   發(fā)動(dòng)反射攻擊通常會(huì )使用無(wú)需認證或者握手的協(xié)議,反射攻擊需要將請求數據的源IP地址偽造成被攻擊目標的IP地址,如果使用的協(xié)議需要進(jìn)行認證或者握手,則該認證或握手過(guò)程沒(méi)有辦法完成,也就不能進(jìn)行下一步的攻擊,因此,絕大多數的反射攻擊都是使用基于UDP協(xié)議的網(wǎng)絡(luò )服務(wù)進(jìn)行的,

   相比于直接偽造源地址的分布式拒絕服務(wù)攻擊,反射攻擊由于增加了一個(gè)反射步驟,因此更加難以追溯攻擊來(lái)源,但是,這并不是反射攻擊真正的威脅,真正的威脅在于利用反射原理進(jìn)行的放大攻擊。

   放大攻擊是一種特殊的反射攻擊,其特殊之處在于反射器對于網(wǎng)絡(luò )流量具有放大作用,因此我們也可以將這種反射器成為放大器,進(jìn)行放大攻擊的方式與反射攻擊的方式也是基本一致的,不用之處在于反射器(放大器)所提供的網(wǎng)絡(luò )服務(wù)需要滿(mǎn)足一定條件。

   在反射器所提供的網(wǎng)絡(luò )服務(wù)協(xié)議中,需要存在請求和響應數據量不對稱(chēng)的情況,響應數據量需要大于請求數據量,響應數據量與請求數據量的比值越大,放大器的放大倍數也就越大,進(jìn)行放大攻擊所產(chǎn)生的消耗寬帶資源的效果也就越明顯。

   放大器所使用網(wǎng)絡(luò )服務(wù)部署的廣泛性決定了該放大攻擊的規模和嚴重程度,如果存在某些網(wǎng)絡(luò )服務(wù),不需要進(jìn)行認證并且放大效果非常好,但是在互聯(lián)網(wǎng)上部署的數量很少,那么利用該網(wǎng)絡(luò )服務(wù)進(jìn)行放大也不能達到很大的流量,達不到有效的消耗寬帶資源的效果,這種網(wǎng)絡(luò )服務(wù)也就不能作為主要的放大攻擊流量,而只能作為輔助手段。

1.2.1  ACK反射攻擊

   我們知道,在傳輸控制協(xié)議建立連接時(shí),首先會(huì )進(jìn)行TCP三次握手,在這個(gè)工程中,當服務(wù)器端接收到客戶(hù)端發(fā)來(lái)的SYN連接請求時(shí),會(huì )對該請求進(jìn)行ACK應答,利用TCP握手的ACK應答,即可進(jìn)行ACK反射攻擊。

   如果攻擊者將SYN的源IP地址偽造成被攻擊目標的IP地址,服務(wù)器的應答也就會(huì )直接發(fā)送給被攻擊目標,由于使用TCP協(xié)議的服務(wù)在互聯(lián)網(wǎng)上廣泛存在,攻擊者可以通過(guò)受控主機向大量不同的服務(wù)器發(fā)送偽造源IP地址的SYN請求,從而使服務(wù)器響應的大量ACK應答數據涌向被攻擊目標,占用目標的網(wǎng)絡(luò )寬帶資源并拒絕服務(wù)。

3.png

   在發(fā)動(dòng)ACK反射攻擊時(shí),首先需要進(jìn)行掃描,獲得大量的反射器地址,并分別向這些反射器發(fā)送偽造源地址的SYN請求數據,因此相比于直接攻擊,這種方式顯得復雜了一些,ACK反射攻擊的優(yōu)點(diǎn)主要在于其能夠比較有效地隱藏攻擊的來(lái)源。

1.2.2  DNS放大攻擊

   域名系統是因特網(wǎng)的一項核心服務(wù),它作為可以將域名和IP地址相互映射的一個(gè)分布式數據庫,能夠使人更方便地訪(fǎng)問(wèn)互聯(lián)網(wǎng),而不用去記住那些難以記憶的IP地址,DNS使用的TCP與UDP端口號都是53,主要使用的UDP協(xié)議。

   通常,DNS的相應數據包會(huì )比查詢(xún)數據包大,因此攻擊者利用普通的DNS查詢(xún)請求就能夠發(fā)動(dòng)放大攻擊,并將攻擊流量放大2~10倍,但更有效的方法是使用RFC2671中定義的DNS擴展機制EDNS0。

****EDNS0

   在沒(méi)有EDNS0以前,對DNS查詢(xún)的響應數據包被限制在512字節以?xún)?,當需要應答的數據包超過(guò)512字節時(shí),根據DNS服務(wù)器實(shí)現的不同,可能會(huì )丟棄超過(guò)512字節的部分,也可能會(huì )使用TCP協(xié)議建立連接并重新發(fā)送,無(wú)論是哪站方式,都不利于進(jìn)行DNS放大攻擊。

   在EDNS0中,擴展了DNS數據包的結果,增加了OPT RR字段,在OPT RR字段中,包含了客戶(hù)端能夠處理的最大UDP報文大小的信息,服務(wù)器在響應DNS請求時(shí),解析并記錄下客戶(hù)端能夠處理的最大UDP報文的大小,并根據該大小生成響應的報文。

   攻擊者能夠利用dig和EDNS0進(jìn)行高效的DNS放大攻擊,攻擊者向廣泛存在的開(kāi)放DNS解析器發(fā)送dig查詢(xún)命令,將OPT RR字段中UDP報文大小設置為很大的值,并將請求的源IP地址偽造成被攻擊目標的IP地址。DNS解析器收到查詢(xún)請求后,會(huì )將解析的結果發(fā)送給被攻擊目標,當大量的解析結果涌向目標時(shí),就會(huì )導致目標網(wǎng)絡(luò )擁堵和緩慢,造成拒絕服務(wù)攻擊。

   攻擊者發(fā)送的DNS查詢(xún)請求數據包大小一般為60字節左右,而查詢(xún)返回結果的數據包大小通常為300字節以上,因此,使用該方式進(jìn)行放大攻擊能夠達到50倍以上的放大效果,這種放大效應所產(chǎn)生的攻擊效果是非常驚人的,只要攻擊的發(fā)起端能夠發(fā)出2Gbit/s的寬帶,就能夠在目標網(wǎng)絡(luò )處產(chǎn)生 100Gbit/s的寬帶消耗,在2013年3月在Spamhaus的分布式拒絕服務(wù)攻擊中,主要就是用了DNS放大攻擊技術(shù),使得攻擊流量達到了史無(wú)前例的300Gbit/s,設置拖慢了局部互聯(lián)網(wǎng)的響應速度。

   與ACK反射攻擊類(lèi)似,發(fā)動(dòng)DNS放大攻擊也需要先進(jìn)行掃描,以獲得大量的開(kāi)放DNS解析器的地址,并向這些開(kāi)放DNS解析器發(fā)送偽造源地址的查詢(xún)命令來(lái)放大攻擊流量。

4.png

1.2.3  NTP放大攻擊

   網(wǎng)絡(luò )時(shí)間協(xié)議是用來(lái)使計算器時(shí)間同步化的一種協(xié)議,他可以使計算機與時(shí)鐘源進(jìn)行同步化并提供高精準度的時(shí)間校正,NTP使用UDP123端口進(jìn)行通信。

   在NTP協(xié)議的服務(wù)器實(shí)現上,通常會(huì )實(shí)現一系列Mode7的調試接口,而接口中的monlist請求能夠獲取到目標NTP服務(wù)器進(jìn)行同步的最后600個(gè)客戶(hù)端的IP地址等信息。這意味著(zhù),只需要發(fā)送一個(gè)很小的請求包,就能觸發(fā)大量連續的包含IP地址信息等數據的UDP響應數據包。

   實(shí)際上,monlist請求返回的數據量與一段時(shí)間內和NTP服務(wù)器交互的客戶(hù)端數據量有關(guān),由于NTP服務(wù)使用的是UDP單包通信,因此攻擊者可以將偽造源IP地址的UDP請求包發(fā)送給NTP放大器,偽造客戶(hù)端與NTP服務(wù)器的交互,增加“和NTP服務(wù)器交互的客戶(hù)端的數量”,以此來(lái)增加monlist請求的響應數據量并增大NTP放大器的放大倍數,只要向NTP放大器發(fā)送600個(gè)不超過(guò)64字節的請求包(約40KB數據),就能夠快速的將NTP放大器的放大倍數提高到700倍以上,并在該服務(wù)器的NTP服務(wù)關(guān)閉或重新啟動(dòng)之前一直保持這么大的放大倍數。

5.png

   攻擊者發(fā)送的monlist請求數據包大小不超過(guò)64字節,而請求返回的結果會(huì )包含100個(gè)482字節的UDP響應數據,因此使用該方式進(jìn)行放大攻擊能夠達到700倍以上的放大效果。

   與ACK反射攻擊和DNS放大攻擊類(lèi)似,發(fā)動(dòng)NTP放大攻擊也需要先進(jìn)行網(wǎng)絡(luò )掃描,以獲取大量的NTP服務(wù)器,并向這些NTP服務(wù)器發(fā)送偽造源地址的請求來(lái)放大攻擊流量,相比于DNS放大攻擊,NTP放大攻擊的放大倍數更大,因此其危害也更加嚴重,在針對Spamhaus的大規模分布式拒絕服務(wù)攻擊事件中,如果攻擊者不使用DNS放大攻擊而改用NTP放大攻擊,那么攻擊流量將會(huì )達到2Tbit/s以上。

1.2.4  SNMP放大攻擊

   簡(jiǎn)單網(wǎng)絡(luò )管理協(xié)議是目前網(wǎng)絡(luò )中應用最為廣泛的網(wǎng)絡(luò )管理協(xié)議,他提供了一個(gè)管理框架來(lái)監控和維護互聯(lián)網(wǎng)的設備,SNMP協(xié)議使用UDP161端口進(jìn)行通信。

利用SNMP協(xié)議中的默認通信字符串和GetBulk請求,攻擊者能夠開(kāi)展有效的SNMP放大攻擊。

   由于SNMP的效果很好,網(wǎng)絡(luò )硬件廠(chǎng)商開(kāi)始把SNMP加入到它們制作的每一臺設備,這導致各種網(wǎng)絡(luò )設備上都可以看到默認啟用的SNMP服務(wù),從交換機到路由器,從防火墻到網(wǎng)絡(luò )打印機,無(wú)一例外,同時(shí),許多廠(chǎng)商安裝的SNMP都采用了默認的通信字符串,這些通信字符串是程序獲取設備信息和修改配置必不可少的,最常見(jiàn)的默認通信字符串是public和private,除此之外還有許多廠(chǎng)商私有的默認通信字符串,幾乎所有運行SNMP的網(wǎng)絡(luò )設備上,都可以找到某種形式的默認通信字符串。

   在SNMPv1中定義的get請求可以嘗試一次獲取多個(gè)MIB對象,但相應消息的大小受到設備處理能力的限制,如果設備不能返回全部請求的響應,則會(huì )返回一條錯誤信息。在SNMPv2中,添加了getbulk請求,該請求會(huì )通知設備返回盡可能多的數據,這使得管理程序能夠通過(guò)發(fā)送一次請求就獲得大段的檢索信息。

   攻擊者向廣泛存在并開(kāi)啟了SNMP服務(wù)的網(wǎng)絡(luò )設備發(fā)送getbulk請求,使用默認通信字符串作為認證憑據,并將源IP地址偽造成攻擊目標的IP地址,設備收到getbulk請求后,會(huì )將響應結果發(fā)送給攻擊目標,當大量的響應結果涌向攻擊目標時(shí),就會(huì )導致攻擊目標網(wǎng)絡(luò )擁堵和緩慢,造成拒絕服務(wù)攻擊。

6.png

   攻擊者發(fā)送的getbulk請求數據包約為60字節,而請求的響應數據能夠達到1500字節以上,因此,使用該方式進(jìn)行放大攻擊能夠達到25倍以上的放大效果,這也是一種放大效應明顯且有效的放大攻擊方式。

   在發(fā)動(dòng)SNMP放大攻擊時(shí),同樣需要先進(jìn)行網(wǎng)絡(luò )掃描以找到開(kāi)放了SNMP協(xié)議的網(wǎng)絡(luò )社保,雖然開(kāi)放SNMP協(xié)議的網(wǎng)絡(luò )設備很多,但是在掃描到這些設備之后還需要對他們所使用的默認字符串進(jìn)行猜測,因此,相比DNS放大攻擊,不論是簡(jiǎn)單度還是放大倍數的影響力,SNMP放大攻擊都略遜一籌,不過(guò)從總體上來(lái)看,SNMP放大攻擊依然是一種非常有效的消耗寬帶資源的攻擊方式。

1.3攻擊鏈路

   攻擊鏈路與以前介紹的幾種攻擊方法有所不同,其攻擊的目標并不是作為互聯(lián)網(wǎng)斷點(diǎn)的服務(wù)器的寬帶資源,而是骨干網(wǎng)上的鏈路的寬帶資源,對鏈路進(jìn)行攻擊的一種典型的方式是Coremelt攻擊。

   Coremelt是安全研究人員在2009年提出的一種針對鏈路的分布式拒絕服務(wù)攻擊方法,攻擊者需要控制一個(gè)分布足夠廣泛的僵尸網(wǎng)絡(luò )來(lái)發(fā)動(dòng)Coremelt攻擊。

7.png

  首先,攻擊者通過(guò)traceroute等手段來(lái)判斷各個(gè)僵尸主機和將要攻擊的鏈路之間的位置關(guān)系,并根據結果將僵尸主機分為兩個(gè)部分,然后,攻擊者控制僵尸主機,使其與鏈路另一側的每一臺僵尸主機進(jìn)行通信并收發(fā)大量數據,這樣,大量的網(wǎng)絡(luò )數據包就會(huì )經(jīng)過(guò)骨干網(wǎng)上的被攻占鏈路,造成網(wǎng)絡(luò )擁堵和延時(shí)。

   從骨干網(wǎng)上來(lái)看,這些僵尸主機之間相互收發(fā)的數據包確實(shí)是真是存在的通信數據,沒(méi)有辦法將這些通信數據與真正的合法通信數據進(jìn)行有效的區分,因此這種攻擊方式更加難以防護和緩解。

2、攻擊系統資源


誤區:DDOS攻擊都是消耗網(wǎng)絡(luò )寬帶資源的攻擊。

   很多時(shí)候,新聞報道中提到DDOS攻擊,都會(huì )以“攻擊流量達到*****”的語(yǔ)句來(lái)描述攻擊的猛烈程度,這種以攻擊流量的寬帶作為DDOS攻擊危害程度描述指標的說(shuō)法,通常會(huì )讓人們誤以為DDOS攻擊都是消耗網(wǎng)絡(luò )寬帶資源的攻擊。

   事實(shí)上,除了網(wǎng)絡(luò )寬帶資源,DDOS攻擊還有消耗系統資源和應用資源的攻擊方法,而攻擊流量的大小只是決定攻擊危害程度的一個(gè)方面,對于相同種類(lèi)的攻擊,通常攻擊流量越大,其危害也越大,而如果在相同攻擊流量的情況下,不同的攻擊方法造成的危害和影響則不盡相同。

   有時(shí)候,人們會(huì )錯誤的將SYN洪水攻擊認為是消耗網(wǎng)絡(luò )寬帶資源的DDOS攻擊,而事實(shí)上,這種攻擊的主要危害在于耗盡系統鏈接表資源,相同攻擊流量的SYN洪水攻擊會(huì )比UDP洪水攻擊的危害更大。

2.1 攻擊TCP連接

   TCP是一種面向連接的、可靠的、基于字節流的傳輸層通訊協(xié)議,不同主機的應用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層無(wú)法提供這樣的流機制,在現實(shí)的互聯(lián)網(wǎng)中,這種連接通常通過(guò)TCP協(xié)議來(lái)實(shí)現。

   TCP連接包括三個(gè)階段:連接創(chuàng )建,數據傳送和連接終止,由于在協(xié)議的設計過(guò)程當中只專(zhuān)注于協(xié)議的可用性,而沒(méi)有對協(xié)議的安全性進(jìn)行比較周密和詳細的考慮,因此TCP協(xié)議存在很多安全缺陷和安全性問(wèn)題。

   TCP連接的三個(gè)階段都容易受到拒絕服務(wù)攻擊的影響,我們會(huì )在這里對這些攻擊手段分別進(jìn)行介紹。

2.1.1 TCP連接洪水攻擊

   TCP連接洪水攻擊是在連接創(chuàng )建階段對TCP資源進(jìn)行攻擊的。

   在三次握手進(jìn)行的過(guò)程中,服務(wù)器會(huì )創(chuàng )建并保存TCP連接的信息,這個(gè)信息通常被保存在連接表結構中,但是,連接表的大小是有限的,一旦服務(wù)器接收到的連接數量超過(guò)了連接表能存儲的數量,服務(wù)器就無(wú)法創(chuàng )建新的TCP連接了。

   攻擊者可以利用大量受控主機,通過(guò)快速建立大量惡意的TCP連接占滿(mǎn)被攻擊目標的連接表,使目標無(wú)法接受新的TCP連接請求,從而達到拒絕服務(wù)攻擊的目的。

8.png

   TCP連接洪水攻擊是攻擊TCP連接的最基本方法,當有大量的受控主機發(fā)起攻擊時(shí),其效果非常明顯。

2.1.2 SYN洪水攻擊

   SYN洪水攻擊是最經(jīng)典的一種拒絕服務(wù)攻擊方式,這種攻擊方式在2000年以前就出現過(guò),直到現在依然被攻擊者大規模的廣泛使用,近年來(lái),SYN洪水攻擊仍然占據全部分布式拒絕服務(wù)攻擊的三分之一以上。

TCP半開(kāi)連接:

   在建立TCP連接的過(guò)程中,如果在服務(wù)器返回SYN+ACK報文后,客戶(hù)端由于某種原因沒(méi)有對其進(jìn)行確認,這時(shí)服務(wù)器端就需要重傳SYN+ACK報文,并等待客戶(hù)端的確認報文直到TCP連接超時(shí),這種等待客戶(hù)確認的連接狀態(tài)通常被稱(chēng)為半開(kāi)連接

9.png


   在連接超時(shí)之前,半開(kāi)連接會(huì )一直保存在服務(wù)器的連接表中。

由于連接表的大小是有限的,如果在短時(shí)間內產(chǎn)生大量的半開(kāi)連接,而這些連接又無(wú)法很快的結束,連接表就會(huì )很快被占滿(mǎn),導致新的連接TCP連接無(wú)法建立。

   SYN洪水攻擊就是攻擊者利用受控主機發(fā)送大量的TCP SYN報文,使服務(wù)器打開(kāi)大量的半開(kāi)連接,占滿(mǎn)服務(wù)器的連接表,從而影響正常用戶(hù)與服務(wù)器建立會(huì )話(huà),造成拒絕服務(wù)。

   攻擊者在發(fā)送TCP SYN報文時(shí),可以在收到服務(wù)器返回的SYN+ACK報文后,跳過(guò)最后的ACK報文發(fā)送,使連接處于半開(kāi)狀態(tài),但是這樣會(huì )很明顯的暴露出進(jìn)行SYN洪水攻擊的IP地址,同時(shí)相應報文會(huì )作為反射流量占用攻擊者的寬帶資源,所以更好的方式是攻擊者將SYN報文的源IP地址隨機偽造其他主機的IP地址或者不存在的IP地址,這樣攻擊目標將會(huì )應答發(fā)送給被偽造的IP地址,從而占用連接資源并隱藏攻擊來(lái)源。

10.png

   SYN洪水攻擊發(fā)動(dòng)簡(jiǎn)單,效果明顯,有大量的攻擊工具都能夠發(fā)動(dòng)這種攻擊,至今依然是攻擊者最?lèi)?ài)好的攻擊方法之一。

2.1.3  PSH+ACK洪水攻擊

   在TCP數據傳輸的過(guò)程中,可以通過(guò)設置PSH標志位來(lái)表示當前數據傳輸結束,需要服務(wù)端進(jìn)行處理。

   在正常的TCP傳輸過(guò)程當中,如果待發(fā)送的數據會(huì )清空發(fā)送緩沖區,那么操作系統的TCP/IP協(xié)議棧就會(huì )自動(dòng)為該數據包設置PSH標志,同樣,當服務(wù)端接收到一個(gè)設置了PSH+ACK標志的報文時(shí),意味著(zhù)當前數據傳輸已經(jīng)結束,因此需要立即將這些數據投遞交給服務(wù)進(jìn)程并清空接收緩沖區,而無(wú)須等待判斷是否還會(huì )有額外的數據到達。

   由于帶有PSH標志位的TCP數據包會(huì )強制要求接收端將接收緩沖區清空并將數據提交給應用服務(wù)進(jìn)行處理,因此當攻擊者利用受控主機向攻擊目標發(fā)送大量的PSH+ACK數據包時(shí),被攻擊目標就會(huì )消耗大量的系統資源不斷地進(jìn)行接收緩沖區的清空處理,導致無(wú)法正常處理數據,從而造成拒絕服務(wù)。

11.png

   單獨使用PSH+ACK洪水攻擊對服務(wù)器產(chǎn)生的影響并不十分明顯,更有效的方式是SYN洪水攻擊與ACK洪水攻擊相結合,這樣能夠繞過(guò)一部分防護設備,增強攻擊的效果。

2.1.4 RST洪水攻擊

   在TCP連接的終止階段,通常是通過(guò)帶有FIN標志報文的四次交互(TCP四次握手)來(lái)切斷客戶(hù)端與服務(wù)端的TCP連接,但是客戶(hù)端或服務(wù)器其中之一出現異常狀況,無(wú)法正常完成TCP四次握手以終止連接時(shí),就會(huì )使用RST報文將連接強制中斷。

TCP RST攻擊:

   在TCP連接中,RST表示復位,用來(lái)在異常時(shí)關(guān)閉連接,發(fā)送端在發(fā)送RST報文關(guān)閉連接時(shí),不需要等待緩沖區中的數據報全部發(fā)送完畢,而會(huì )直接丟棄緩沖器的數據并發(fā)送RST報文,同樣,接收端在收到RST報文后,也會(huì )清空緩沖區并關(guān)閉連接,并且不必發(fā)送ACK報文進(jìn)行確認。

   攻擊者可以利用RST報文的這個(gè)特性,發(fā)送偽造的帶有RST標志位的TCP報文,強制中斷客戶(hù)端與服務(wù)端的TCP連接,在偽造RST報文的過(guò)程中,服務(wù)端的IP地址和端口號是已知的,攻擊者還需要設法獲取客戶(hù)端的IP地址和端口號,并且使RST報文的序列號處于服務(wù)器的接收窗口之內,如果攻擊者和被攻擊客戶(hù)端或服務(wù)器處于同一內網(wǎng),這些信息可以通過(guò)欺騙和嗅探等方式獲取到。

TCP RST攻擊的原理如圖所示

12.png

   很多情況下,攻擊者不會(huì )與被攻擊客戶(hù)端或服務(wù)器處于同一內網(wǎng),導致發(fā)動(dòng)TCP RST攻擊時(shí)難以獲取端口和序列號,在這種情況下,攻擊者可以利用大量的受控主機猜測端口和序列號,進(jìn)行盲打,發(fā)送RST洪水攻擊,只要在數量巨大的RST報文中有一條與攻擊目標的端口號相同,并且序列號落在目標的接收窗口之中,就能夠終端連接。

 RST洪水攻擊的原理如圖所示

13.png

   嚴格來(lái)說(shuō),TCP RST攻擊和RST洪水攻擊是針對用戶(hù)的拒絕攻擊方式,這種攻擊通常被用來(lái)攻擊在線(xiàn)游戲或比賽的用戶(hù),從而影響比賽的結果并獲得一定的經(jīng)濟利益。

2.1.5 Sockstress攻擊

   Sockstress攻擊是研究人員在2008年提出的一種攻擊TCP連接的方法,與前面幾種攻擊方式不同的是,Sockstress攻擊不需要在短時(shí)間內發(fā)送大量的攻擊流量,因此不屬于洪水攻擊,而是一種慢速攻擊。

   在TCP傳輸數據時(shí),并不是將數據直接遞交給應用程序處理,而是先臨時(shí)存儲在接受緩沖區里,該接收緩沖區的大小是由TCP窗口表示的,如果TCP窗口大小為0,則表示接收緩沖區已被填滿(mǎn),發(fā)送端應該停止發(fā)送數據,知道接收端的窗口發(fā)生了更新,Sockstress攻擊就是利用該原理長(cháng)時(shí)間維持TCP連接,以達到拒絕服務(wù)攻擊的目的。

   Sockstress攻擊首先會(huì )完成TCP三次握手以建立TCP連接,但是在三次握手的最后一次ACK應答中,攻擊者將其TCP窗口大小設置為0,隨后 進(jìn)行一次數據請求,攻擊目標在傳輸數據時(shí),發(fā)現接收端的TCP窗口大小為0,就會(huì )停止傳輸數據,并發(fā)出TCP窗口探測包,詢(xún)問(wèn)攻擊者其TCP窗口是否有更新,由于攻擊者沒(méi)有更改TCP窗口的大小,被攻擊目標就會(huì )一直維持TCP連接等待數據發(fā)送,并不斷進(jìn)行窗口更新的探測,如果攻擊者利用大量的受控主機進(jìn)行Sockstress攻擊,被攻擊目標會(huì )一直維持大量的TCP連接并進(jìn)行大量窗口更新探測,其TCP連接表會(huì )逐漸耗盡,無(wú)法連接新的連接而導致拒絕服務(wù)。

Sockstress攻擊的原理如圖所示

14.png

   Sockstress攻擊的另一種方式是將TCP窗口設置為一個(gè)非常小的值,例如4字節,這樣攻擊目標將不得不把需要發(fā)送的數據切分成大量4字節大小的分片,這會(huì )極大的消耗目標的內存和處理器資源,造成系統響應緩慢和拒絕服務(wù)。

2.2 攻擊SSL連接

   安全套接層是為網(wǎng)絡(luò )通信提供安全及數據完整性的一種安全協(xié)議,SSL能夠在傳輸層對網(wǎng)絡(luò )連接進(jìn)行加密,以防止傳輸的數據明文被監聽(tīng)和截獲。

然而,SSL協(xié)議加密、解密和秘鑰協(xié)商的過(guò)程中會(huì )消耗大量的系統資源,嚴重降低機器的性能,因此,通常只有在傳輸密碼等機密信息時(shí)才使用SSL協(xié)議進(jìn)行傳輸。

攻擊者可以利用SSL協(xié)議消耗資源的特性進(jìn)行拒絕服務(wù)攻擊。

2.2.1 THC SSL DOS攻擊

   在進(jìn)行SSL數據傳輸之前,通信雙方首先要進(jìn)行SSL握手,以協(xié)商加密算法交換加密秘鑰,進(jìn)行身份驗證,通常情況下,這樣的SSL握手過(guò)程只需要進(jìn)行一次即可,但是在SSL協(xié)議中有一個(gè)Renegotiation選項,通過(guò)它可以進(jìn)行秘鑰的重新協(xié)商以建立新的秘鑰。

   THC SSL DOS攻擊是安全研究人員在2011年提出的一種針對SSL的拒絕服務(wù)攻擊方法,這種方法就是利用Renegotiation選項,造成被攻擊目標資源耗盡,在進(jìn)行SSL連接并握手之后,攻擊者反復不斷的進(jìn)行秘鑰重新協(xié)商過(guò)程,而秘鑰重新協(xié)商過(guò)程需要服務(wù)器投入比客戶(hù)端多15倍的CPU計算資源,攻擊者只需要一臺普通的臺式機就能拖慢一臺高性能服務(wù)器,而如果有大量主機同時(shí)進(jìn)行攻擊,則會(huì )使服務(wù)器忙于協(xié)商秘鑰而完全停止響應。

THC SSL DOS攻擊的原理如圖所示

15.png

  另外,即使服務(wù)器不支持Renegotiation,攻擊者依然可以通過(guò)另行打開(kāi)新的SSL連接的方式來(lái)制造類(lèi)似的攻擊效果。

2.2.2 SSL洪水攻擊

   在SSL握手的過(guò)程中,服務(wù)器會(huì )消耗較多的CPU計算資源進(jìn)行加解密,并進(jìn)行數據的有效性檢驗,對于客戶(hù)端發(fā)過(guò)來(lái)的數據,服務(wù)器需要先花費大量的計算資源進(jìn)行解密,之后才能對數據的有效性進(jìn)行檢驗,重要的是,不論數據是否是有效的,服務(wù)器都必須先進(jìn)行解密才能夠做檢查,攻擊者可以利用這個(gè)特性進(jìn)行SSL洪水攻擊。

   在進(jìn)行洪水攻擊時(shí),一個(gè)要點(diǎn)是需要攻擊者能夠在客戶(hù)端大量的發(fā)出攻擊請求,這就需要客戶(hù)端所進(jìn)行的計算盡可能的少,對于SSL洪水攻擊,比較好的方式是在數據傳輸之前,進(jìn)行SSL握手的過(guò)程中發(fā)動(dòng)攻擊,攻擊者并不需要完成SSL握手和秘鑰交換,而只需要在這個(gè)過(guò)程中讓服務(wù)器去解密和驗證,就能夠大量的消耗服務(wù)器的計算資源,因此,攻擊者可以非常容易的構造秘鑰交換過(guò)程中的請求數據,達到減少客戶(hù)端計算量的目的。

SSL洪水攻擊的原理如圖所示

16.png

攻擊者可以使用SSL Squeeze等工具來(lái)發(fā)動(dòng)SSL洪水攻擊。

3.攻擊應用資源


   近年來(lái),消耗應用資源的分布式拒絕服務(wù)攻擊正逐漸成為拒絕服務(wù)攻擊的主要手段之一,而由于DNS和Web服務(wù)的廣泛性和重要性,這兩種服務(wù)也就成為了消耗應用資源的分布式拒絕服務(wù)攻擊的最主要的攻擊目標。

3.1 攻擊DNS服務(wù)

   DNS服務(wù)是互聯(lián)網(wǎng)的一項核心服務(wù),通過(guò)使用DNS,人們在訪(fǎng)問(wèn)網(wǎng)絡(luò )時(shí)不需要記住其IP地址,而只需輸入其域名即可,在IPv6網(wǎng)絡(luò )環(huán)境下,由于IP地址由原來(lái)的32位擴展到了128位,變得更加難以記憶,DNS服務(wù)也就變得更加重要,當DNS服務(wù)的可用性收到威脅時(shí),互聯(lián)網(wǎng)上的大量設備都會(huì )受到影響甚至無(wú)法正常運行,歷史上曾有多次針對DNS的攻擊事件,都造成了較大影響。

   針對DNS服務(wù)的攻擊方法主要有DNS QUERY洪水攻擊和DNS NXDOMAIN洪水攻擊兩種

3.1.1 DNS QUERY洪水攻擊

DNS查詢(xún)和解析過(guò)程:

   當客戶(hù)端向DNS服務(wù)器查詢(xún)某域名時(shí),DNS服務(wù)器會(huì )首先檢查其本地緩存中是否有該域名的記錄,如果緩存中有該域名的記錄(即命中),則直接講緩存中記錄的IP地址作為非權威應答返回給客戶(hù)端,如果在緩存中沒(méi)有找到該域名的記錄,則會(huì )進(jìn)行迭代查詢(xún),從根域名開(kāi)始,逐級進(jìn)行域名解析,直到解析出完整的域名,之后服務(wù)器會(huì )將域名解析結果作為應答發(fā)送給客戶(hù)端,并生成一條解析記錄保存到緩存中。

DNS查詢(xún)和解析過(guò)程如圖所示:

17.png

   在DNS解析的過(guò)程中,客戶(hù)端發(fā)起一次查詢(xún)請求,DNS服務(wù)器可能需要進(jìn)行額外的多次查詢(xún)才能完成解析的過(guò)程并給出應答,在這個(gè)過(guò)程中會(huì )消耗一定的計算和網(wǎng)絡(luò )資源,如果攻擊者利用大量受控主機不斷發(fā)送不同域名的解析請求,那么DNS服務(wù)器的緩存會(huì )被不斷刷新,而大量解析請求不能命中緩存又導致DNS服務(wù)器必須消耗額外的資源進(jìn)行迭代查詢(xún),這會(huì )極大的增加DNS服務(wù)器的資源消耗,導致DNS響應緩慢甚至完全拒絕服務(wù)。

DNS QUERY洪水攻擊的原理如圖所示

18.png

   進(jìn)行DNS QUERY洪水攻擊的要點(diǎn)在于每一個(gè)DNS解析要求所查詢(xún)的域名應是不同的,這樣可以比較有效的避開(kāi)NDS服務(wù)器緩存中的解析記錄,達到更好的資源消耗效果。

3.1.2 DNS NXDOMAIN洪水攻擊

   DNS NXDOMAIN洪水攻擊是DNS QUERY洪水攻擊的一個(gè)變種攻擊方式,區別在于后者是向DNS服務(wù)器查詢(xún)一個(gè)真實(shí)存在的域名,而前者是向DNS服務(wù)器查詢(xún)一個(gè)不存在的域名。

   在進(jìn)行DNS NXDOMAIN洪水攻擊時(shí),DNS服務(wù)器會(huì )進(jìn)行多次域名查詢(xún),同時(shí),其緩存會(huì )被大量NXDOMAIN記錄所填滿(mǎn),導致響應正常用戶(hù)的DNS解析請求的速度變慢,這與DNS QUERY洪水攻擊所達到的效果類(lèi)似,除此之外,一部分DNS服務(wù)器在獲取不到域名的解析結果時(shí),還會(huì )再次進(jìn)行遞歸查詢(xún),向其上一級的DNS服務(wù)器發(fā)送解析請求并等待應答,這進(jìn)一步增加了DNS服務(wù)器的資源消耗,因此,DNS NXDOMAIN洪水攻擊通常比DNS QUERY洪水攻擊的效果更好。

DNS NXDOMAIN洪水攻擊 的原理如果所示

19.png

3.2 攻擊web服務(wù)

   近年來(lái),web技術(shù)發(fā)展非常迅速,人們可以通過(guò)瀏覽器使用web服務(wù),簡(jiǎn)單方便的獲取需要的信息,而許多機構和企業(yè)的重要信息和關(guān)鍵業(yè)務(wù)也是通過(guò)web服務(wù)的方式對外提供,一旦web服務(wù)受到解決服務(wù)攻擊,就會(huì )對其承載的業(yè)務(wù)造成致命的影響。

3.2.1  HTTP洪水攻擊

Web服務(wù)通常使用超文本傳輸協(xié)議進(jìn)行請求和響應數據的傳輸。

20.png

   常見(jiàn)的HTTP請求有GET請求和POST請求兩種,通常GET請求用于從wen服務(wù)器獲取數據和資源,例如請求頁(yè)面、獲取圖片和文檔等;POST請求用于向web服務(wù)器提交數據和資源,例如發(fā)送用戶(hù)名/密碼、上傳文件等。在處理這些HTTP請求的過(guò)程中,web服務(wù)器通常需要解析請求、處理和執行服務(wù)端腳本、驗證用戶(hù)權限并多次訪(fǎng)問(wèn)數據庫,這會(huì )消耗大量的計算資源和IO訪(fǎng)問(wèn)資源。

   如果攻擊者利用大量的受控主機不斷的向web服務(wù)器發(fā)送惡意大量HTTP請求,要求web服務(wù)器處理,就會(huì )完全占用服務(wù)器的資源,造成其他正常用戶(hù)的web訪(fǎng)問(wèn)請求處理緩慢設置得不到處理,導致拒絕服務(wù),這就是HTTP洪水攻擊。

   由于HTTP協(xié)議是基于TCP協(xié)議的,需要完成三次握手建立TCP連接才能開(kāi)始HTTP通信,因此進(jìn)行HTTP洪水攻擊時(shí)無(wú)法使用偽造源IP地址的方式發(fā)動(dòng)攻擊,這時(shí),攻擊者通常會(huì )使用HTTP代理服務(wù)器,HTTP代理服務(wù)器在互聯(lián)網(wǎng)上廣泛存在,通過(guò)使用HTTP代理服務(wù)器,不僅可以隱藏來(lái)源以避免被追查,還能夠提高攻擊的效率--攻擊者連接代理服務(wù)器并發(fā)送完成請求后,可以直接切斷與該代理服務(wù)器的連接并開(kāi)始連接下一個(gè)代理服務(wù)器,這時(shí)代理服務(wù)器與目標web服務(wù)器的HTTP連接依然保持,web服務(wù)器需要繼續接收數據并處理HTTP請求。

HTTP洪水攻擊的原理如圖所示


21.png

   與DNS服務(wù)類(lèi)似,web服務(wù)也存在緩存機制,如果攻擊者的大量請求都命中了服務(wù)器緩存,那么這種攻擊的主要作用僅體現咋消耗網(wǎng)絡(luò )寬帶資源上,對于計算和IO資源的消耗是非常有限的,因此,高效的HTTP洪水攻擊應不斷發(fā)出針對不同資源和頁(yè)面的HTTP請求,并盡可能請求無(wú)法被緩存的資源,從而加重服務(wù)器的負擔,增強攻擊效果。

   此外,如果web服務(wù)器支持HTTPS,那么進(jìn)行HTTPS洪水攻擊是更為有效的一種攻擊方式,一方面,在進(jìn)行HTTPS通信時(shí),web服務(wù)器需要消耗更多的資源用來(lái)進(jìn)行認證和加解密,另一方面,一部分的防護設備無(wú)法對HTTPS通信數據流進(jìn)行處理,也會(huì )導致攻擊流量繞過(guò)防護設備,直接對web服務(wù)器造成攻擊。

HTTP洪水攻擊是目標對web服務(wù)威脅最大的攻擊之一,有大量的攻擊工具支持HTTP洪水攻擊,發(fā)動(dòng)簡(jiǎn)單其效果明顯,已經(jīng)成為攻擊者使用的主要攻擊方式之一。

3.2.2 Slowloris攻擊

   Slowloris攻擊是一種針對web服務(wù)器的慢速HTTP攻擊,由安全研究人員在2009年提出。

   在HTTP協(xié)議中規定,HTTP頭部以連續的“\r\n\r\n”作為結束標志,許多web服務(wù)器在處理http請求的頭部信息時(shí),會(huì )等待頭部傳輸結束后再進(jìn)行處理,因此,如果web服務(wù)器沒(méi)有接受到連續的“\r\n\r\n”,就會(huì )一直接受數據并保持與客戶(hù)端的連接,利用這個(gè)特性,攻擊者能夠長(cháng)時(shí)間與web服務(wù)器保持聯(lián)系,并逐漸耗盡web服務(wù)器的連接資源。

   攻擊者在發(fā)送HTTP GET請求時(shí),緩慢的發(fā)送無(wú)用的header字段,并且一直不發(fā)送“\r\n\r\n”結束標志,這樣就能夠長(cháng)時(shí)間占用與web服務(wù)器的連接并保證該連接不被超時(shí)中斷,然而,web服務(wù)器能夠處理的并發(fā)連接數是有限的,如果攻擊者利用大量的受控主機發(fā)送這種不完整的HTTP GET請求并持續占用這些連接,就會(huì )耗盡web服務(wù)器的連接資源,導致其他用戶(hù)的http 請求無(wú)法被處理,造成拒絕服務(wù)。

Slowloris攻擊原理如圖所示

22.png

   攻擊者使用Slowloris、slowhttptest等工具就可以簡(jiǎn)單的發(fā)動(dòng)Slowloris攻擊。在Slowloris攻擊方法出現以后,IIS、nignx等一部分web服務(wù)器軟件針對該攻擊方法進(jìn)行了修改,但是Apache.dhttpd等web服務(wù)器軟件依然會(huì )受到Slowloris攻擊的影響。

3.2.3 慢速POST請求攻擊

   慢速POST請求攻擊也是一種針對web服務(wù)器的慢速http攻擊,由安全研究人員在2010年提出,與Slowloris攻擊不同的是,慢速POST請求攻擊利用緩慢發(fā)送HTTP BODY的方式達到占用并耗盡web服務(wù)器連接資源的目的。

   在HTTP頭部信息中,可以使用Content-Length字段來(lái)指定HTTP消息實(shí)體的傳輸長(cháng)度,當web服務(wù)器接收到的請求頭部中含有Content-Length字段時(shí),服務(wù)器會(huì )將該字段的值作為 HTTP BODY的長(cháng)度,持續接收數據并在達到Content-Length值時(shí)對HTTP BODY的數據內容進(jìn)行處理,利用這個(gè)特性,攻擊者能夠長(cháng)時(shí)間與web服務(wù)器保持連接,并逐漸耗盡web服務(wù)器的連接資源。

   攻擊者在發(fā)送HTTP POST請求時(shí),在請求頭部中將Content-Length設置為一個(gè)很大的值,并將HTTP BODY以非常緩慢的速度一個(gè)字節一個(gè)字節的向web服務(wù)器發(fā)送,這樣,web服務(wù)器就需要一直維持與客戶(hù)端的連接并等待數據傳輸結束,由于Content-Length被設置成了很大的值,而HTTP BODY的傳輸速度又非常緩慢,攻擊者就可以長(cháng)時(shí)間占用這個(gè)連接,通過(guò)間斷性的發(fā)送單字節的HTTP BODY內容,攻擊者就能夠確保連接不因超時(shí)而導致中斷,如果攻擊者利用大量的受控主機發(fā)送這種緩慢的HTTP POST請求并持續占用這些連接,就會(huì )耗盡web服務(wù)器的連接資源,導致其他用戶(hù)的HTTP請求無(wú)法被處理,造成拒絕服務(wù)。

慢速POST請求攻擊原理如圖:

23.png

   攻擊者可以使用Slowhttptest等攻擊發(fā)動(dòng)慢速POST請求攻擊,與Slowloris攻擊有所不同,由于HTTP協(xié)議設計上的原因,所有的web服務(wù)器軟件都會(huì )受到慢速POST請求攻擊的影響。

3.2.4 數據處理過(guò)程攻擊

   web服務(wù)器在收到HTTP請求之后,需要檢查并處理其中的數據,通過(guò)惡意構造請求數據的內容,攻擊者可以顯著(zhù)的增加數據處理過(guò)程中的資源消耗,造成拒絕服務(wù)攻擊。

   這里已正則表達式拒絕服務(wù)攻擊和哈希沖突拒絕服務(wù)攻擊為例進(jìn)行說(shuō)明。

   正則表達式拒絕服務(wù)攻擊又被稱(chēng)為ReDoS,是安全研究人員在2009年發(fā)現的一種拒絕服務(wù)攻擊方法,在處理請求數據時(shí),web應用通常會(huì )使用正則表達式進(jìn)行字符的匹配操作,一部分正則表達式引擎會(huì )使用一種被稱(chēng)為非確定性有限狀態(tài)自動(dòng)機的實(shí)現方式,以便能夠處理復雜的正則表達式,例如包含了向后引用或者捕獲括號的正則表達式。然而,這種正則引擎的實(shí)現方式也導致了其處理時(shí)間增加,尤其是在確定“否定匹配”時(shí),正則引擎需要對所有可能的匹配路徑全部進(jìn)行測試,如果位于web應用中的正則表達式寫(xiě)的不好,需要測試的匹配路徑數量會(huì )隨著(zhù)輸入字符串的長(cháng)度呈指數級增長(cháng),利用惡意構造的輸入字符串,攻擊者只需要提交相對較短的輸入字符串,就可以強制正則引擎處理數億個(gè)匹配路徑,所需時(shí)間可以達到幾個(gè)小時(shí)甚至幾天,只需要幾個(gè)這種類(lèi)似的惡意正則表達式匹配請求,就能夠完全占用web服務(wù)器的計算資源,造成web服務(wù)器拒絕服務(wù)。

   哈希沖突拒絕服務(wù)攻擊是安全研究人員在2011年提出的一種拒絕服務(wù)攻擊方法,web應用在處理請求中的POST數據時(shí),通常使用鍵-值對的方式來(lái)進(jìn)行存儲,在PHP、Python、Java等語(yǔ)言中,鍵-值對的實(shí)質(zhì)是一個(gè)哈希表,web應用程序通過(guò)計算“鍵”的哈希來(lái)獲取其所對應的的“值”。正常情況下,這個(gè)哈希表的哈希沖突較少,因此進(jìn)行查找和插入的速度很快,正常狀態(tài)下的哈希表如圖所示。

24.png

   如果攻擊者構造一組惡意的POST數據,使得請求中的“鍵”的哈希值全部相同,那么保存POST數據的哈希表就會(huì )因此退化成為鏈表 ,對哈希表的查找和插入等操作規則變成了對鏈表的遍歷操作,造成大量的計算資源被占用,導致拒絕服務(wù)攻擊。如圖所示為大量沖突狀態(tài)下的哈希表。

25.png

本文屬于安全脈搏原創(chuàng )現金獎勵計劃,未經(jīng)允許,嚴禁轉載。

提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->