- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
本人近期一直在研究DDOS攻擊,并通讀了《破壞之王-DDOS攻擊與防范》一書,書中對于DDOS的攻擊方式與防范寫的很詳細(xì),很推薦閱讀,并針對本書中的DDOS攻擊方式做了總結(jié)。
1、攻擊網(wǎng)絡(luò)寬帶資源
1.1直接攻擊
使用大量的受控主機(jī)向被攻擊目標(biāo)發(fā)送大量的網(wǎng)絡(luò)數(shù)據(jù)包,以沾滿被攻擊目標(biāo)的寬帶,并消耗服務(wù)器和網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)數(shù)據(jù)處理能力,達(dá)到拒絕服務(wù)的目的。
直接攻擊的主要方法有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)境的各種問題反饋,通過這些消息,管理者可以對所發(fā)生的問題做出診斷,然后采取適當(dāng)?shù)慕鉀Q措施。
因特網(wǎng)組管理協(xié)議(IGMP)是用于管理因特網(wǎng)協(xié)議多播組成員的一種通信協(xié)議,IP主機(jī)和相鄰的路由器利用IGMP來建立多播組的組成員。
攻擊者使用受控主機(jī)向被攻擊目標(biāo)發(fā)送大量的ICMP/IGMP報(bào)文,進(jìn)行洪水攻擊以消耗目標(biāo)的寬帶資源,這種類型的攻擊出現(xiàn)的很早,使用hping等工具就能簡單的發(fā)起攻擊。但現(xiàn)在使用這種方法發(fā)動的攻擊已見不多,被攻擊目標(biāo)可以在其網(wǎng)絡(luò)邊界直接過濾并丟棄ICMP/IGMP數(shù)據(jù)包使攻擊無效化。
1.1.2 UDP洪水攻擊
用戶數(shù)據(jù)包協(xié)議(UDP)是一種面向無連接的傳輸層協(xié)議,主要用戶不要求分組順序到達(dá)的傳輸,提供面向?qū)嵤聞?wù)的簡單的不可靠信息傳送服務(wù)。
利用UDP數(shù)據(jù)報(bào)文,攻擊者也可以發(fā)送洪水攻擊,UDP洪水攻擊和ICMP/IGMP洪水攻擊的原理基本相同,通常,攻擊者會使用小包和大包兩種方式進(jìn)行攻擊。
小包是指64字節(jié)大小的數(shù)據(jù)包,這是以太網(wǎng)上傳輸數(shù)據(jù)幀的最小值,在相同流量下,單包體積越小,數(shù)據(jù)包的數(shù)量就越多。由于交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)備需要對沒一個(gè)數(shù)據(jù)包進(jìn)行檢查和校驗(yàn),因此使用UDP小包攻擊能夠最有效的增大網(wǎng)絡(luò)設(shè)備處理數(shù)據(jù)包的壓力,造成處理速度的緩慢和傳輸延遲等拒絕服務(wù)攻擊的效果。
大包是指1500字節(jié)以上的數(shù)據(jù)包,其大小超過了以太網(wǎng)的最大傳輸單元,使用UDP大包攻擊,能夠有效的占用網(wǎng)絡(luò)接口的傳輸寬帶,并迫使被攻擊目標(biāo)在接受到UDP數(shù)據(jù)時(shí)進(jìn)行分片重組,造成網(wǎng)絡(luò)擁堵,服務(wù)器響應(yīng)速度變慢。
UDP洪水攻擊也是很早就出現(xiàn)的一種拒絕服務(wù)攻擊方式,這種攻擊發(fā)動簡單,有相當(dāng)多的工具都能夠發(fā)動UDP洪水攻擊,如hping,LOIC等,但UDP洪水攻擊完全依靠受控主機(jī)本身的網(wǎng)絡(luò)性能,因此通常對目標(biāo)寬帶資源的消耗并不太大。http://www.tjdsmy.cn/archives/64088.html
1.2發(fā)射和放大攻擊
攻擊者可以使用ICMP/IGMP洪水攻擊和UDP洪水攻擊等方式直接對被攻擊目標(biāo)展開消耗網(wǎng)絡(luò)寬帶資源的分布式拒絕服務(wù)攻擊,但這種攻擊方式不僅較低,還很容易被查到攻擊的源頭,雖然攻擊者可以使用偽造源IP地址的方式進(jìn)行隱藏,但更好的方式是使用反射攻擊技術(shù)。
發(fā)射攻擊又被稱為DRDoS(分布式反射拒絕服務(wù))攻擊,是指利用路由器、服務(wù)器等設(shè)施對請求產(chǎn)生應(yīng)答,從而反射攻擊流量并隱藏攻擊來源的一種分布式拒絕服務(wù)攻擊技術(shù)。
在進(jìn)行反射攻擊時(shí),攻擊者使用受控主機(jī)發(fā)送大量的數(shù)據(jù)包,這些數(shù)據(jù)包的特別之處在于,其目的IP地址指向作為反射器的服務(wù)器、路由器等設(shè)施,而源IP地址則被偽造成被攻擊目標(biāo)的IP地址,反射器在收到數(shù)據(jù)包時(shí),會認(rèn)為該數(shù)據(jù)包是否被攻擊目標(biāo)所發(fā)來的請求,因此會將相應(yīng)數(shù)據(jù)發(fā)送給被攻擊目標(biāo),當(dāng)大量的響應(yīng)數(shù)據(jù)包涌向攻擊目標(biāo)時(shí),就會耗盡目標(biāo)的網(wǎng)絡(luò)寬帶資源,造成拒絕服務(wù)攻擊。
發(fā)動反射攻擊需要在互聯(lián)網(wǎng)上找到大量的發(fā)射器,某些種類的反射攻擊并不難實(shí)現(xiàn),例如,對于ACK反射攻擊,只需要找到互聯(lián)網(wǎng)上開放的TCP端口的服務(wù)器即可,而這種服務(wù)器在互聯(lián)網(wǎng)上的存在是非常廣泛的。
發(fā)動反射攻擊通常會使用無需認(rèn)證或者握手的協(xié)議,反射攻擊需要將請求數(shù)據(jù)的源IP地址偽造成被攻擊目標(biāo)的IP地址,如果使用的協(xié)議需要進(jìn)行認(rèn)證或者握手,則該認(rèn)證或握手過程沒有辦法完成,也就不能進(jìn)行下一步的攻擊,因此,絕大多數(shù)的反射攻擊都是使用基于UDP協(xié)議的網(wǎng)絡(luò)服務(wù)進(jìn)行的,
相比于直接偽造源地址的分布式拒絕服務(wù)攻擊,反射攻擊由于增加了一個(gè)反射步驟,因此更加難以追溯攻擊來源,但是,這并不是反射攻擊真正的威脅,真正的威脅在于利用反射原理進(jìn)行的放大攻擊。
放大攻擊是一種特殊的反射攻擊,其特殊之處在于反射器對于網(wǎng)絡(luò)流量具有放大作用,因此我們也可以將這種反射器成為放大器,進(jìn)行放大攻擊的方式與反射攻擊的方式也是基本一致的,不用之處在于反射器(放大器)所提供的網(wǎng)絡(luò)服務(wù)需要滿足一定條件。
在反射器所提供的網(wǎng)絡(luò)服務(wù)協(xié)議中,需要存在請求和響應(yīng)數(shù)據(jù)量不對稱的情況,響應(yīng)數(shù)據(jù)量需要大于請求數(shù)據(jù)量,響應(yīng)數(shù)據(jù)量與請求數(shù)據(jù)量的比值越大,放大器的放大倍數(shù)也就越大,進(jìn)行放大攻擊所產(chǎn)生的消耗寬帶資源的效果也就越明顯。
放大器所使用網(wǎng)絡(luò)服務(wù)部署的廣泛性決定了該放大攻擊的規(guī)模和嚴(yán)重程度,如果存在某些網(wǎng)絡(luò)服務(wù),不需要進(jìn)行認(rèn)證并且放大效果非常好,但是在互聯(lián)網(wǎng)上部署的數(shù)量很少,那么利用該網(wǎng)絡(luò)服務(wù)進(jìn)行放大也不能達(dá)到很大的流量,達(dá)不到有效的消耗寬帶資源的效果,這種網(wǎng)絡(luò)服務(wù)也就不能作為主要的放大攻擊流量,而只能作為輔助手段。
1.2.1 ACK反射攻擊
我們知道,在傳輸控制協(xié)議建立連接時(shí),首先會進(jìn)行TCP三次握手,在這個(gè)工程中,當(dāng)服務(wù)器端接收到客戶端發(fā)來的SYN連接請求時(shí),會對該請求進(jìn)行ACK應(yīng)答,利用TCP握手的ACK應(yīng)答,即可進(jìn)行ACK反射攻擊。
如果攻擊者將SYN的源IP地址偽造成被攻擊目標(biāo)的IP地址,服務(wù)器的應(yīng)答也就會直接發(fā)送給被攻擊目標(biāo),由于使用TCP協(xié)議的服務(wù)在互聯(lián)網(wǎng)上廣泛存在,攻擊者可以通過受控主機(jī)向大量不同的服務(wù)器發(fā)送偽造源IP地址的SYN請求,從而使服務(wù)器響應(yīng)的大量ACK應(yīng)答數(shù)據(jù)涌向被攻擊目標(biāo),占用目標(biāo)的網(wǎng)絡(luò)寬帶資源并拒絕服務(wù)。
在發(fā)動ACK反射攻擊時(shí),首先需要進(jìn)行掃描,獲得大量的反射器地址,并分別向這些反射器發(fā)送偽造源地址的SYN請求數(shù)據(jù),因此相比于直接攻擊,這種方式顯得復(fù)雜了一些,ACK反射攻擊的優(yōu)點(diǎn)主要在于其能夠比較有效地隱藏攻擊的來源。
1.2.2 DNS放大攻擊
域名系統(tǒng)是因特網(wǎng)的一項(xiàng)核心服務(wù),它作為可以將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使人更方便地訪問互聯(lián)網(wǎng),而不用去記住那些難以記憶的IP地址,DNS使用的TCP與UDP端口號都是53,主要使用的UDP協(xié)議。
通常,DNS的相應(yīng)數(shù)據(jù)包會比查詢數(shù)據(jù)包大,因此攻擊者利用普通的DNS查詢請求就能夠發(fā)動放大攻擊,并將攻擊流量放大2~10倍,但更有效的方法是使用RFC2671中定義的DNS擴(kuò)展機(jī)制EDNS0。
****EDNS0
在沒有EDNS0以前,對DNS查詢的響應(yīng)數(shù)據(jù)包被限制在512字節(jié)以內(nèi),當(dāng)需要應(yīng)答的數(shù)據(jù)包超過512字節(jié)時(shí),根據(jù)DNS服務(wù)器實(shí)現(xiàn)的不同,可能會丟棄超過512字節(jié)的部分,也可能會使用TCP協(xié)議建立連接并重新發(fā)送,無論是哪站方式,都不利于進(jìn)行DNS放大攻擊。
在EDNS0中,擴(kuò)展了DNS數(shù)據(jù)包的結(jié)果,增加了OPT RR字段,在OPT RR字段中,包含了客戶端能夠處理的最大UDP報(bào)文大小的信息,服務(wù)器在響應(yīng)DNS請求時(shí),解析并記錄下客戶端能夠處理的最大UDP報(bào)文的大小,并根據(jù)該大小生成響應(yīng)的報(bào)文。
攻擊者能夠利用dig和EDNS0進(jìn)行高效的DNS放大攻擊,攻擊者向廣泛存在的開放DNS解析器發(fā)送dig查詢命令,將OPT RR字段中UDP報(bào)文大小設(shè)置為很大的值,并將請求的源IP地址偽造成被攻擊目標(biāo)的IP地址。DNS解析器收到查詢請求后,會將解析的結(jié)果發(fā)送給被攻擊目標(biāo),當(dāng)大量的解析結(jié)果涌向目標(biāo)時(shí),就會導(dǎo)致目標(biāo)網(wǎng)絡(luò)擁堵和緩慢,造成拒絕服務(wù)攻擊。
攻擊者發(fā)送的DNS查詢請求數(shù)據(jù)包大小一般為60字節(jié)左右,而查詢返回結(jié)果的數(shù)據(jù)包大小通常為300字節(jié)以上,因此,使用該方式進(jìn)行放大攻擊能夠達(dá)到50倍以上的放大效果,這種放大效應(yīng)所產(chǎn)生的攻擊效果是非常驚人的,只要攻擊的發(fā)起端能夠發(fā)出2Gbit/s的寬帶,就能夠在目標(biāo)網(wǎng)絡(luò)處產(chǎn)生 100Gbit/s的寬帶消耗,在2013年3月在Spamhaus的分布式拒絕服務(wù)攻擊中,主要就是用了DNS放大攻擊技術(shù),使得攻擊流量達(dá)到了史無前例的300Gbit/s,設(shè)置拖慢了局部互聯(lián)網(wǎng)的響應(yīng)速度。
與ACK反射攻擊類似,發(fā)動DNS放大攻擊也需要先進(jìn)行掃描,以獲得大量的開放DNS解析器的地址,并向這些開放DNS解析器發(fā)送偽造源地址的查詢命令來放大攻擊流量。
1.2.3 NTP放大攻擊
網(wǎng)絡(luò)時(shí)間協(xié)議是用來使計(jì)算器時(shí)間同步化的一種協(xié)議,他可以使計(jì)算機(jī)與時(shí)鐘源進(jìn)行同步化并提供高精準(zhǔn)度的時(shí)間校正,NTP使用UDP123端口進(jìn)行通信。
在NTP協(xié)議的服務(wù)器實(shí)現(xiàn)上,通常會實(shí)現(xiàn)一系列Mode7的調(diào)試接口,而接口中的monlist請求能夠獲取到目標(biāo)NTP服務(wù)器進(jìn)行同步的最后600個(gè)客戶端的IP地址等信息。這意味著,只需要發(fā)送一個(gè)很小的請求包,就能觸發(fā)大量連續(xù)的包含IP地址信息等數(shù)據(jù)的UDP響應(yīng)數(shù)據(jù)包。
實(shí)際上,monlist請求返回的數(shù)據(jù)量與一段時(shí)間內(nèi)和NTP服務(wù)器交互的客戶端數(shù)據(jù)量有關(guān),由于NTP服務(wù)使用的是UDP單包通信,因此攻擊者可以將偽造源IP地址的UDP請求包發(fā)送給NTP放大器,偽造客戶端與NTP服務(wù)器的交互,增加“和NTP服務(wù)器交互的客戶端的數(shù)量”,以此來增加monlist請求的響應(yīng)數(shù)據(jù)量并增大NTP放大器的放大倍數(shù),只要向NTP放大器發(fā)送600個(gè)不超過64字節(jié)的請求包(約40KB數(shù)據(jù)),就能夠快速的將NTP放大器的放大倍數(shù)提高到700倍以上,并在該服務(wù)器的NTP服務(wù)關(guān)閉或重新啟動之前一直保持這么大的放大倍數(shù)。
攻擊者發(fā)送的monlist請求數(shù)據(jù)包大小不超過64字節(jié),而請求返回的結(jié)果會包含100個(gè)482字節(jié)的UDP響應(yīng)數(shù)據(jù),因此使用該方式進(jìn)行放大攻擊能夠達(dá)到700倍以上的放大效果。
與ACK反射攻擊和DNS放大攻擊類似,發(fā)動NTP放大攻擊也需要先進(jìn)行網(wǎng)絡(luò)掃描,以獲取大量的NTP服務(wù)器,并向這些NTP服務(wù)器發(fā)送偽造源地址的請求來放大攻擊流量,相比于DNS放大攻擊,NTP放大攻擊的放大倍數(shù)更大,因此其危害也更加嚴(yán)重,在針對Spamhaus的大規(guī)模分布式拒絕服務(wù)攻擊事件中,如果攻擊者不使用DNS放大攻擊而改用NTP放大攻擊,那么攻擊流量將會達(dá)到2Tbit/s以上。
1.2.4 SNMP放大攻擊
簡單網(wǎng)絡(luò)管理協(xié)議是目前網(wǎng)絡(luò)中應(yīng)用最為廣泛的網(wǎng)絡(luò)管理協(xié)議,他提供了一個(gè)管理框架來監(jiān)控和維護(hù)互聯(lián)網(wǎng)的設(shè)備,SNMP協(xié)議使用UDP161端口進(jìn)行通信。
利用SNMP協(xié)議中的默認(rèn)通信字符串和GetBulk請求,攻擊者能夠開展有效的SNMP放大攻擊。
由于SNMP的效果很好,網(wǎng)絡(luò)硬件廠商開始把SNMP加入到它們制作的每一臺設(shè)備,這導(dǎo)致各種網(wǎng)絡(luò)設(shè)備上都可以看到默認(rèn)啟用的SNMP服務(wù),從交換機(jī)到路由器,從防火墻到網(wǎng)絡(luò)打印機(jī),無一例外,同時(shí),許多廠商安裝的SNMP都采用了默認(rèn)的通信字符串,這些通信字符串是程序獲取設(shè)備信息和修改配置必不可少的,最常見的默認(rèn)通信字符串是public和private,除此之外還有許多廠商私有的默認(rèn)通信字符串,幾乎所有運(yùn)行SNMP的網(wǎng)絡(luò)設(shè)備上,都可以找到某種形式的默認(rèn)通信字符串。
在SNMPv1中定義的get請求可以嘗試一次獲取多個(gè)MIB對象,但相應(yīng)消息的大小受到設(shè)備處理能力的限制,如果設(shè)備不能返回全部請求的響應(yīng),則會返回一條錯誤信息。在SNMPv2中,添加了getbulk請求,該請求會通知設(shè)備返回盡可能多的數(shù)據(jù),這使得管理程序能夠通過發(fā)送一次請求就獲得大段的檢索信息。
攻擊者向廣泛存在并開啟了SNMP服務(wù)的網(wǎng)絡(luò)設(shè)備發(fā)送getbulk請求,使用默認(rèn)通信字符串作為認(rèn)證憑據(jù),并將源IP地址偽造成攻擊目標(biāo)的IP地址,設(shè)備收到getbulk請求后,會將響應(yīng)結(jié)果發(fā)送給攻擊目標(biāo),當(dāng)大量的響應(yīng)結(jié)果涌向攻擊目標(biāo)時(shí),就會導(dǎo)致攻擊目標(biāo)網(wǎng)絡(luò)擁堵和緩慢,造成拒絕服務(wù)攻擊。
攻擊者發(fā)送的getbulk請求數(shù)據(jù)包約為60字節(jié),而請求的響應(yīng)數(shù)據(jù)能夠達(dá)到1500字節(jié)以上,因此,使用該方式進(jìn)行放大攻擊能夠達(dá)到25倍以上的放大效果,這也是一種放大效應(yīng)明顯且有效的放大攻擊方式。
在發(fā)動SNMP放大攻擊時(shí),同樣需要先進(jìn)行網(wǎng)絡(luò)掃描以找到開放了SNMP協(xié)議的網(wǎng)絡(luò)社保,雖然開放SNMP協(xié)議的網(wǎng)絡(luò)設(shè)備很多,但是在掃描到這些設(shè)備之后還需要對他們所使用的默認(rèn)字符串進(jìn)行猜測,因此,相比DNS放大攻擊,不論是簡單度還是放大倍數(shù)的影響力,SNMP放大攻擊都略遜一籌,不過從總體上來看,SNMP放大攻擊依然是一種非常有效的消耗寬帶資源的攻擊方式。
1.3攻擊鏈路
攻擊鏈路與以前介紹的幾種攻擊方法有所不同,其攻擊的目標(biāo)并不是作為互聯(lián)網(wǎng)斷點(diǎn)的服務(wù)器的寬帶資源,而是骨干網(wǎng)上的鏈路的寬帶資源,對鏈路進(jìn)行攻擊的一種典型的方式是Coremelt攻擊。
Coremelt是安全研究人員在2009年提出的一種針對鏈路的分布式拒絕服務(wù)攻擊方法,攻擊者需要控制一個(gè)分布足夠廣泛的僵尸網(wǎng)絡(luò)來發(fā)動Coremelt攻擊。
首先,攻擊者通過traceroute等手段來判斷各個(gè)僵尸主機(jī)和將要攻擊的鏈路之間的位置關(guān)系,并根據(jù)結(jié)果將僵尸主機(jī)分為兩個(gè)部分,然后,攻擊者控制僵尸主機(jī),使其與鏈路另一側(cè)的每一臺僵尸主機(jī)進(jìn)行通信并收發(fā)大量數(shù)據(jù),這樣,大量的網(wǎng)絡(luò)數(shù)據(jù)包就會經(jīng)過骨干網(wǎng)上的被攻占鏈路,造成網(wǎng)絡(luò)擁堵和延時(shí)。
從骨干網(wǎng)上來看,這些僵尸主機(jī)之間相互收發(fā)的數(shù)據(jù)包確實(shí)是真是存在的通信數(shù)據(jù),沒有辦法將這些通信數(shù)據(jù)與真正的合法通信數(shù)據(jù)進(jìn)行有效的區(qū)分,因此這種攻擊方式更加難以防護(hù)和緩解。
2、攻擊系統(tǒng)資源
誤區(qū):DDOS攻擊都是消耗網(wǎng)絡(luò)寬帶資源的攻擊。
很多時(shí)候,新聞報(bào)道中提到DDOS攻擊,都會以“攻擊流量達(dá)到*****”的語句來描述攻擊的猛烈程度,這種以攻擊流量的寬帶作為DDOS攻擊危害程度描述指標(biāo)的說法,通常會讓人們誤以為DDOS攻擊都是消耗網(wǎng)絡(luò)寬帶資源的攻擊。
事實(shí)上,除了網(wǎng)絡(luò)寬帶資源,DDOS攻擊還有消耗系統(tǒng)資源和應(yīng)用資源的攻擊方法,而攻擊流量的大小只是決定攻擊危害程度的一個(gè)方面,對于相同種類的攻擊,通常攻擊流量越大,其危害也越大,而如果在相同攻擊流量的情況下,不同的攻擊方法造成的危害和影響則不盡相同。
有時(shí)候,人們會錯誤的將SYN洪水攻擊認(rèn)為是消耗網(wǎng)絡(luò)寬帶資源的DDOS攻擊,而事實(shí)上,這種攻擊的主要危害在于耗盡系統(tǒng)鏈接表資源,相同攻擊流量的SYN洪水攻擊會比UDP洪水攻擊的危害更大。
2.1 攻擊TCP連接
TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通訊協(xié)議,不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層無法提供這樣的流機(jī)制,在現(xiàn)實(shí)的互聯(lián)網(wǎng)中,這種連接通常通過TCP協(xié)議來實(shí)現(xiàn)。
TCP連接包括三個(gè)階段:連接創(chuàng)建,數(shù)據(jù)傳送和連接終止,由于在協(xié)議的設(shè)計(jì)過程當(dāng)中只專注于協(xié)議的可用性,而沒有對協(xié)議的安全性進(jìn)行比較周密和詳細(xì)的考慮,因此TCP協(xié)議存在很多安全缺陷和安全性問題。
TCP連接的三個(gè)階段都容易受到拒絕服務(wù)攻擊的影響,我們會在這里對這些攻擊手段分別進(jìn)行介紹。
2.1.1 TCP連接洪水攻擊
TCP連接洪水攻擊是在連接創(chuàng)建階段對TCP資源進(jìn)行攻擊的。
在三次握手進(jìn)行的過程中,服務(wù)器會創(chuàng)建并保存TCP連接的信息,這個(gè)信息通常被保存在連接表結(jié)構(gòu)中,但是,連接表的大小是有限的,一旦服務(wù)器接收到的連接數(shù)量超過了連接表能存儲的數(shù)量,服務(wù)器就無法創(chuàng)建新的TCP連接了。
攻擊者可以利用大量受控主機(jī),通過快速建立大量惡意的TCP連接占滿被攻擊目標(biāo)的連接表,使目標(biāo)無法接受新的TCP連接請求,從而達(dá)到拒絕服務(wù)攻擊的目的。
TCP連接洪水攻擊是攻擊TCP連接的最基本方法,當(dāng)有大量的受控主機(jī)發(fā)起攻擊時(shí),其效果非常明顯。
2.1.2 SYN洪水攻擊
SYN洪水攻擊是最經(jīng)典的一種拒絕服務(wù)攻擊方式,這種攻擊方式在2000年以前就出現(xiàn)過,直到現(xiàn)在依然被攻擊者大規(guī)模的廣泛使用,近年來,SYN洪水攻擊仍然占據(jù)全部分布式拒絕服務(wù)攻擊的三分之一以上。
TCP半開連接:
在建立TCP連接的過程中,如果在服務(wù)器返回SYN+ACK報(bào)文后,客戶端由于某種原因沒有對其進(jìn)行確認(rèn),這時(shí)服務(wù)器端就需要重傳SYN+ACK報(bào)文,并等待客戶端的確認(rèn)報(bào)文直到TCP連接超時(shí),這種等待客戶確認(rèn)的連接狀態(tài)通常被稱為半開連接
在連接超時(shí)之前,半開連接會一直保存在服務(wù)器的連接表中。
由于連接表的大小是有限的,如果在短時(shí)間內(nèi)產(chǎn)生大量的半開連接,而這些連接又無法很快的結(jié)束,連接表就會很快被占滿,導(dǎo)致新的連接TCP連接無法建立。
SYN洪水攻擊就是攻擊者利用受控主機(jī)發(fā)送大量的TCP SYN報(bào)文,使服務(wù)器打開大量的半開連接,占滿服務(wù)器的連接表,從而影響正常用戶與服務(wù)器建立會話,造成拒絕服務(wù)。
攻擊者在發(fā)送TCP SYN報(bào)文時(shí),可以在收到服務(wù)器返回的SYN+ACK報(bào)文后,跳過最后的ACK報(bào)文發(fā)送,使連接處于半開狀態(tài),但是這樣會很明顯的暴露出進(jìn)行SYN洪水攻擊的IP地址,同時(shí)相應(yīng)報(bào)文會作為反射流量占用攻擊者的寬帶資源,所以更好的方式是攻擊者將SYN報(bào)文的源IP地址隨機(jī)偽造其他主機(jī)的IP地址或者不存在的IP地址,這樣攻擊目標(biāo)將會應(yīng)答發(fā)送給被偽造的IP地址,從而占用連接資源并隱藏攻擊來源。
SYN洪水攻擊發(fā)動簡單,效果明顯,有大量的攻擊工具都能夠發(fā)動這種攻擊,至今依然是攻擊者最愛好的攻擊方法之一。
2.1.3 PSH+ACK洪水攻擊
在TCP數(shù)據(jù)傳輸?shù)倪^程中,可以通過設(shè)置PSH標(biāo)志位來表示當(dāng)前數(shù)據(jù)傳輸結(jié)束,需要服務(wù)端進(jìn)行處理。
在正常的TCP傳輸過程當(dāng)中,如果待發(fā)送的數(shù)據(jù)會清空發(fā)送緩沖區(qū),那么操作系統(tǒng)的TCP/IP協(xié)議棧就會自動為該數(shù)據(jù)包設(shè)置PSH標(biāo)志,同樣,當(dāng)服務(wù)端接收到一個(gè)設(shè)置了PSH+ACK標(biāo)志的報(bào)文時(shí),意味著當(dāng)前數(shù)據(jù)傳輸已經(jīng)結(jié)束,因此需要立即將這些數(shù)據(jù)投遞交給服務(wù)進(jìn)程并清空接收緩沖區(qū),而無須等待判斷是否還會有額外的數(shù)據(jù)到達(dá)。
由于帶有PSH標(biāo)志位的TCP數(shù)據(jù)包會強(qiáng)制要求接收端將接收緩沖區(qū)清空并將數(shù)據(jù)提交給應(yīng)用服務(wù)進(jìn)行處理,因此當(dāng)攻擊者利用受控主機(jī)向攻擊目標(biāo)發(fā)送大量的PSH+ACK數(shù)據(jù)包時(shí),被攻擊目標(biāo)就會消耗大量的系統(tǒng)資源不斷地進(jìn)行接收緩沖區(qū)的清空處理,導(dǎo)致無法正常處理數(shù)據(jù),從而造成拒絕服務(wù)。
單獨(dú)使用PSH+ACK洪水攻擊對服務(wù)器產(chǎn)生的影響并不十分明顯,更有效的方式是SYN洪水攻擊與ACK洪水攻擊相結(jié)合,這樣能夠繞過一部分防護(hù)設(shè)備,增強(qiáng)攻擊的效果。
2.1.4 RST洪水攻擊
在TCP連接的終止階段,通常是通過帶有FIN標(biāo)志報(bào)文的四次交互(TCP四次握手)來切斷客戶端與服務(wù)端的TCP連接,但是客戶端或服務(wù)器其中之一出現(xiàn)異常狀況,無法正常完成TCP四次握手以終止連接時(shí),就會使用RST報(bào)文將連接強(qiáng)制中斷。
TCP RST攻擊:
在TCP連接中,RST表示復(fù)位,用來在異常時(shí)關(guān)閉連接,發(fā)送端在發(fā)送RST報(bào)文關(guān)閉連接時(shí),不需要等待緩沖區(qū)中的數(shù)據(jù)報(bào)全部發(fā)送完畢,而會直接丟棄緩沖器的數(shù)據(jù)并發(fā)送RST報(bào)文,同樣,接收端在收到RST報(bào)文后,也會清空緩沖區(qū)并關(guān)閉連接,并且不必發(fā)送ACK報(bào)文進(jìn)行確認(rèn)。
攻擊者可以利用RST報(bào)文的這個(gè)特性,發(fā)送偽造的帶有RST標(biāo)志位的TCP報(bào)文,強(qiáng)制中斷客戶端與服務(wù)端的TCP連接,在偽造RST報(bào)文的過程中,服務(wù)端的IP地址和端口號是已知的,攻擊者還需要設(shè)法獲取客戶端的IP地址和端口號,并且使RST報(bào)文的序列號處于服務(wù)器的接收窗口之內(nèi),如果攻擊者和被攻擊客戶端或服務(wù)器處于同一內(nèi)網(wǎng),這些信息可以通過欺騙和嗅探等方式獲取到。
TCP RST攻擊的原理如圖所示
很多情況下,攻擊者不會與被攻擊客戶端或服務(wù)器處于同一內(nèi)網(wǎng),導(dǎo)致發(fā)動TCP RST攻擊時(shí)難以獲取端口和序列號,在這種情況下,攻擊者可以利用大量的受控主機(jī)猜測端口和序列號,進(jìn)行盲打,發(fā)送RST洪水攻擊,只要在數(shù)量巨大的RST報(bào)文中有一條與攻擊目標(biāo)的端口號相同,并且序列號落在目標(biāo)的接收窗口之中,就能夠終端連接。
RST洪水攻擊的原理如圖所示
嚴(yán)格來說,TCP RST攻擊和RST洪水攻擊是針對用戶的拒絕攻擊方式,這種攻擊通常被用來攻擊在線游戲或比賽的用戶,從而影響比賽的結(jié)果并獲得一定的經(jīng)濟(jì)利益。
2.1.5 Sockstress攻擊
Sockstress攻擊是研究人員在2008年提出的一種攻擊TCP連接的方法,與前面幾種攻擊方式不同的是,Sockstress攻擊不需要在短時(shí)間內(nèi)發(fā)送大量的攻擊流量,因此不屬于洪水攻擊,而是一種慢速攻擊。
在TCP傳輸數(shù)據(jù)時(shí),并不是將數(shù)據(jù)直接遞交給應(yīng)用程序處理,而是先臨時(shí)存儲在接受緩沖區(qū)里,該接收緩沖區(qū)的大小是由TCP窗口表示的,如果TCP窗口大小為0,則表示接收緩沖區(qū)已被填滿,發(fā)送端應(yīng)該停止發(fā)送數(shù)據(jù),知道接收端的窗口發(fā)生了更新,Sockstress攻擊就是利用該原理長時(shí)間維持TCP連接,以達(dá)到拒絕服務(wù)攻擊的目的。
Sockstress攻擊首先會完成TCP三次握手以建立TCP連接,但是在三次握手的最后一次ACK應(yīng)答中,攻擊者將其TCP窗口大小設(shè)置為0,隨后 進(jìn)行一次數(shù)據(jù)請求,攻擊目標(biāo)在傳輸數(shù)據(jù)時(shí),發(fā)現(xiàn)接收端的TCP窗口大小為0,就會停止傳輸數(shù)據(jù),并發(fā)出TCP窗口探測包,詢問攻擊者其TCP窗口是否有更新,由于攻擊者沒有更改TCP窗口的大小,被攻擊目標(biāo)就會一直維持TCP連接等待數(shù)據(jù)發(fā)送,并不斷進(jìn)行窗口更新的探測,如果攻擊者利用大量的受控主機(jī)進(jìn)行Sockstress攻擊,被攻擊目標(biāo)會一直維持大量的TCP連接并進(jìn)行大量窗口更新探測,其TCP連接表會逐漸耗盡,無法連接新的連接而導(dǎo)致拒絕服務(wù)。
Sockstress攻擊的原理如圖所示
Sockstress攻擊的另一種方式是將TCP窗口設(shè)置為一個(gè)非常小的值,例如4字節(jié),這樣攻擊目標(biāo)將不得不把需要發(fā)送的數(shù)據(jù)切分成大量4字節(jié)大小的分片,這會極大的消耗目標(biāo)的內(nèi)存和處理器資源,造成系統(tǒng)響應(yīng)緩慢和拒絕服務(wù)。
2.2 攻擊SSL連接
安全套接層是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,SSL能夠在傳輸層對網(wǎng)絡(luò)連接進(jìn)行加密,以防止傳輸?shù)臄?shù)據(jù)明文被監(jiān)聽和截獲。
然而,SSL協(xié)議加密、解密和秘鑰協(xié)商的過程中會消耗大量的系統(tǒng)資源,嚴(yán)重降低機(jī)器的性能,因此,通常只有在傳輸密碼等機(jī)密信息時(shí)才使用SSL協(xié)議進(jìn)行傳輸。
攻擊者可以利用SSL協(xié)議消耗資源的特性進(jìn)行拒絕服務(wù)攻擊。
2.2.1 THC SSL DOS攻擊
在進(jìn)行SSL數(shù)據(jù)傳輸之前,通信雙方首先要進(jìn)行SSL握手,以協(xié)商加密算法交換加密秘鑰,進(jìn)行身份驗(yàn)證,通常情況下,這樣的SSL握手過程只需要進(jìn)行一次即可,但是在SSL協(xié)議中有一個(gè)Renegotiation選項(xiàng),通過它可以進(jìn)行秘鑰的重新協(xié)商以建立新的秘鑰。
THC SSL DOS攻擊是安全研究人員在2011年提出的一種針對SSL的拒絕服務(wù)攻擊方法,這種方法就是利用Renegotiation選項(xiàng),造成被攻擊目標(biāo)資源耗盡,在進(jìn)行SSL連接并握手之后,攻擊者反復(fù)不斷的進(jìn)行秘鑰重新協(xié)商過程,而秘鑰重新協(xié)商過程需要服務(wù)器投入比客戶端多15倍的CPU計(jì)算資源,攻擊者只需要一臺普通的臺式機(jī)就能拖慢一臺高性能服務(wù)器,而如果有大量主機(jī)同時(shí)進(jìn)行攻擊,則會使服務(wù)器忙于協(xié)商秘鑰而完全停止響應(yīng)。
THC SSL DOS攻擊的原理如圖所示
另外,即使服務(wù)器不支持Renegotiation,攻擊者依然可以通過另行打開新的SSL連接的方式來制造類似的攻擊效果。
2.2.2 SSL洪水攻擊
在SSL握手的過程中,服務(wù)器會消耗較多的CPU計(jì)算資源進(jìn)行加解密,并進(jìn)行數(shù)據(jù)的有效性檢驗(yàn),對于客戶端發(fā)過來的數(shù)據(jù),服務(wù)器需要先花費(fèi)大量的計(jì)算資源進(jìn)行解密,之后才能對數(shù)據(jù)的有效性進(jìn)行檢驗(yàn),重要的是,不論數(shù)據(jù)是否是有效的,服務(wù)器都必須先進(jìn)行解密才能夠做檢查,攻擊者可以利用這個(gè)特性進(jìn)行SSL洪水攻擊。
在進(jìn)行洪水攻擊時(shí),一個(gè)要點(diǎn)是需要攻擊者能夠在客戶端大量的發(fā)出攻擊請求,這就需要客戶端所進(jìn)行的計(jì)算盡可能的少,對于SSL洪水攻擊,比較好的方式是在數(shù)據(jù)傳輸之前,進(jìn)行SSL握手的過程中發(fā)動攻擊,攻擊者并不需要完成SSL握手和秘鑰交換,而只需要在這個(gè)過程中讓服務(wù)器去解密和驗(yàn)證,就能夠大量的消耗服務(wù)器的計(jì)算資源,因此,攻擊者可以非常容易的構(gòu)造秘鑰交換過程中的請求數(shù)據(jù),達(dá)到減少客戶端計(jì)算量的目的。
SSL洪水攻擊的原理如圖所示
攻擊者可以使用SSL Squeeze等工具來發(fā)動SSL洪水攻擊。
3.攻擊應(yīng)用資源
近年來,消耗應(yīng)用資源的分布式拒絕服務(wù)攻擊正逐漸成為拒絕服務(wù)攻擊的主要手段之一,而由于DNS和Web服務(wù)的廣泛性和重要性,這兩種服務(wù)也就成為了消耗應(yīng)用資源的分布式拒絕服務(wù)攻擊的最主要的攻擊目標(biāo)。
3.1 攻擊DNS服務(wù)
DNS服務(wù)是互聯(lián)網(wǎng)的一項(xiàng)核心服務(wù),通過使用DNS,人們在訪問網(wǎng)絡(luò)時(shí)不需要記住其IP地址,而只需輸入其域名即可,在IPv6網(wǎng)絡(luò)環(huán)境下,由于IP地址由原來的32位擴(kuò)展到了128位,變得更加難以記憶,DNS服務(wù)也就變得更加重要,當(dāng)DNS服務(wù)的可用性收到威脅時(shí),互聯(lián)網(wǎng)上的大量設(shè)備都會受到影響甚至無法正常運(yùn)行,歷史上曾有多次針對DNS的攻擊事件,都造成了較大影響。
針對DNS服務(wù)的攻擊方法主要有DNS QUERY洪水攻擊和DNS NXDOMAIN洪水攻擊兩種
3.1.1 DNS QUERY洪水攻擊
DNS查詢和解析過程:
當(dāng)客戶端向DNS服務(wù)器查詢某域名時(shí),DNS服務(wù)器會首先檢查其本地緩存中是否有該域名的記錄,如果緩存中有該域名的記錄(即命中),則直接講緩存中記錄的IP地址作為非權(quán)威應(yīng)答返回給客戶端,如果在緩存中沒有找到該域名的記錄,則會進(jìn)行迭代查詢,從根域名開始,逐級進(jìn)行域名解析,直到解析出完整的域名,之后服務(wù)器會將域名解析結(jié)果作為應(yīng)答發(fā)送給客戶端,并生成一條解析記錄保存到緩存中。
DNS查詢和解析過程如圖所示:
在DNS解析的過程中,客戶端發(fā)起一次查詢請求,DNS服務(wù)器可能需要進(jìn)行額外的多次查詢才能完成解析的過程并給出應(yīng)答,在這個(gè)過程中會消耗一定的計(jì)算和網(wǎng)絡(luò)資源,如果攻擊者利用大量受控主機(jī)不斷發(fā)送不同域名的解析請求,那么DNS服務(wù)器的緩存會被不斷刷新,而大量解析請求不能命中緩存又導(dǎo)致DNS服務(wù)器必須消耗額外的資源進(jìn)行迭代查詢,這會極大的增加DNS服務(wù)器的資源消耗,導(dǎo)致DNS響應(yīng)緩慢甚至完全拒絕服務(wù)。
DNS QUERY洪水攻擊的原理如圖所示
進(jìn)行DNS QUERY洪水攻擊的要點(diǎn)在于每一個(gè)DNS解析要求所查詢的域名應(yīng)是不同的,這樣可以比較有效的避開NDS服務(wù)器緩存中的解析記錄,達(dá)到更好的資源消耗效果。
3.1.2 DNS NXDOMAIN洪水攻擊
DNS NXDOMAIN洪水攻擊是DNS QUERY洪水攻擊的一個(gè)變種攻擊方式,區(qū)別在于后者是向DNS服務(wù)器查詢一個(gè)真實(shí)存在的域名,而前者是向DNS服務(wù)器查詢一個(gè)不存在的域名。
在進(jìn)行DNS NXDOMAIN洪水攻擊時(shí),DNS服務(wù)器會進(jìn)行多次域名查詢,同時(shí),其緩存會被大量NXDOMAIN記錄所填滿,導(dǎo)致響應(yīng)正常用戶的DNS解析請求的速度變慢,這與DNS QUERY洪水攻擊所達(dá)到的效果類似,除此之外,一部分DNS服務(wù)器在獲取不到域名的解析結(jié)果時(shí),還會再次進(jìn)行遞歸查詢,向其上一級的DNS服務(wù)器發(fā)送解析請求并等待應(yīng)答,這進(jìn)一步增加了DNS服務(wù)器的資源消耗,因此,DNS NXDOMAIN洪水攻擊通常比DNS QUERY洪水攻擊的效果更好。
DNS NXDOMAIN洪水攻擊 的原理如果所示
3.2 攻擊web服務(wù)
近年來,web技術(shù)發(fā)展非常迅速,人們可以通過瀏覽器使用web服務(wù),簡單方便的獲取需要的信息,而許多機(jī)構(gòu)和企業(yè)的重要信息和關(guān)鍵業(yè)務(wù)也是通過web服務(wù)的方式對外提供,一旦web服務(wù)受到解決服務(wù)攻擊,就會對其承載的業(yè)務(wù)造成致命的影響。
3.2.1 HTTP洪水攻擊
Web服務(wù)通常使用超文本傳輸協(xié)議進(jìn)行請求和響應(yīng)數(shù)據(jù)的傳輸。
常見的HTTP請求有GET請求和POST請求兩種,通常GET請求用于從wen服務(wù)器獲取數(shù)據(jù)和資源,例如請求頁面、獲取圖片和文檔等;POST請求用于向web服務(wù)器提交數(shù)據(jù)和資源,例如發(fā)送用戶名/密碼、上傳文件等。在處理這些HTTP請求的過程中,web服務(wù)器通常需要解析請求、處理和執(zhí)行服務(wù)端腳本、驗(yàn)證用戶權(quán)限并多次訪問數(shù)據(jù)庫,這會消耗大量的計(jì)算資源和IO訪問資源。
如果攻擊者利用大量的受控主機(jī)不斷的向web服務(wù)器發(fā)送惡意大量HTTP請求,要求web服務(wù)器處理,就會完全占用服務(wù)器的資源,造成其他正常用戶的web訪問請求處理緩慢設(shè)置得不到處理,導(dǎo)致拒絕服務(wù),這就是HTTP洪水攻擊。
由于HTTP協(xié)議是基于TCP協(xié)議的,需要完成三次握手建立TCP連接才能開始HTTP通信,因此進(jìn)行HTTP洪水攻擊時(shí)無法使用偽造源IP地址的方式發(fā)動攻擊,這時(shí),攻擊者通常會使用HTTP代理服務(wù)器,HTTP代理服務(wù)器在互聯(lián)網(wǎng)上廣泛存在,通過使用HTTP代理服務(wù)器,不僅可以隱藏來源以避免被追查,還能夠提高攻擊的效率--攻擊者連接代理服務(wù)器并發(fā)送完成請求后,可以直接切斷與該代理服務(wù)器的連接并開始連接下一個(gè)代理服務(wù)器,這時(shí)代理服務(wù)器與目標(biāo)web服務(wù)器的HTTP連接依然保持,web服務(wù)器需要繼續(xù)接收數(shù)據(jù)并處理HTTP請求。
HTTP洪水攻擊的原理如圖所示
與DNS服務(wù)類似,web服務(wù)也存在緩存機(jī)制,如果攻擊者的大量請求都命中了服務(wù)器緩存,那么這種攻擊的主要作用僅體現(xiàn)咋消耗網(wǎng)絡(luò)寬帶資源上,對于計(jì)算和IO資源的消耗是非常有限的,因此,高效的HTTP洪水攻擊應(yīng)不斷發(fā)出針對不同資源和頁面的HTTP請求,并盡可能請求無法被緩存的資源,從而加重服務(wù)器的負(fù)擔(dān),增強(qiáng)攻擊效果。
此外,如果web服務(wù)器支持HTTPS,那么進(jìn)行HTTPS洪水攻擊是更為有效的一種攻擊方式,一方面,在進(jìn)行HTTPS通信時(shí),web服務(wù)器需要消耗更多的資源用來進(jìn)行認(rèn)證和加解密,另一方面,一部分的防護(hù)設(shè)備無法對HTTPS通信數(shù)據(jù)流進(jìn)行處理,也會導(dǎo)致攻擊流量繞過防護(hù)設(shè)備,直接對web服務(wù)器造成攻擊。
HTTP洪水攻擊是目標(biāo)對web服務(wù)威脅最大的攻擊之一,有大量的攻擊工具支持HTTP洪水攻擊,發(fā)動簡單其效果明顯,已經(jīng)成為攻擊者使用的主要攻擊方式之一。
3.2.2 Slowloris攻擊
Slowloris攻擊是一種針對web服務(wù)器的慢速HTTP攻擊,由安全研究人員在2009年提出。
在HTTP協(xié)議中規(guī)定,HTTP頭部以連續(xù)的“\r\n\r\n”作為結(jié)束標(biāo)志,許多web服務(wù)器在處理http請求的頭部信息時(shí),會等待頭部傳輸結(jié)束后再進(jìn)行處理,因此,如果web服務(wù)器沒有接受到連續(xù)的“\r\n\r\n”,就會一直接受數(shù)據(jù)并保持與客戶端的連接,利用這個(gè)特性,攻擊者能夠長時(shí)間與web服務(wù)器保持聯(lián)系,并逐漸耗盡web服務(wù)器的連接資源。
攻擊者在發(fā)送HTTP GET請求時(shí),緩慢的發(fā)送無用的header字段,并且一直不發(fā)送“\r\n\r\n”結(jié)束標(biāo)志,這樣就能夠長時(shí)間占用與web服務(wù)器的連接并保證該連接不被超時(shí)中斷,然而,web服務(wù)器能夠處理的并發(fā)連接數(shù)是有限的,如果攻擊者利用大量的受控主機(jī)發(fā)送這種不完整的HTTP GET請求并持續(xù)占用這些連接,就會耗盡web服務(wù)器的連接資源,導(dǎo)致其他用戶的http 請求無法被處理,造成拒絕服務(wù)。
Slowloris攻擊原理如圖所示
攻擊者使用Slowloris、slowhttptest等工具就可以簡單的發(fā)動Slowloris攻擊。在Slowloris攻擊方法出現(xiàn)以后,IIS、nignx等一部分web服務(wù)器軟件針對該攻擊方法進(jìn)行了修改,但是Apache.dhttpd等web服務(wù)器軟件依然會受到Slowloris攻擊的影響。
3.2.3 慢速POST請求攻擊
慢速POST請求攻擊也是一種針對web服務(wù)器的慢速http攻擊,由安全研究人員在2010年提出,與Slowloris攻擊不同的是,慢速POST請求攻擊利用緩慢發(fā)送HTTP BODY的方式達(dá)到占用并耗盡web服務(wù)器連接資源的目的。
在HTTP頭部信息中,可以使用Content-Length字段來指定HTTP消息實(shí)體的傳輸長度,當(dāng)web服務(wù)器接收到的請求頭部中含有Content-Length字段時(shí),服務(wù)器會將該字段的值作為 HTTP BODY的長度,持續(xù)接收數(shù)據(jù)并在達(dá)到Content-Length值時(shí)對HTTP BODY的數(shù)據(jù)內(nèi)容進(jìn)行處理,利用這個(gè)特性,攻擊者能夠長時(shí)間與web服務(wù)器保持連接,并逐漸耗盡web服務(wù)器的連接資源。
攻擊者在發(fā)送HTTP POST請求時(shí),在請求頭部中將Content-Length設(shè)置為一個(gè)很大的值,并將HTTP BODY以非常緩慢的速度一個(gè)字節(jié)一個(gè)字節(jié)的向web服務(wù)器發(fā)送,這樣,web服務(wù)器就需要一直維持與客戶端的連接并等待數(shù)據(jù)傳輸結(jié)束,由于Content-Length被設(shè)置成了很大的值,而HTTP BODY的傳輸速度又非常緩慢,攻擊者就可以長時(shí)間占用這個(gè)連接,通過間斷性的發(fā)送單字節(jié)的HTTP BODY內(nèi)容,攻擊者就能夠確保連接不因超時(shí)而導(dǎo)致中斷,如果攻擊者利用大量的受控主機(jī)發(fā)送這種緩慢的HTTP POST請求并持續(xù)占用這些連接,就會耗盡web服務(wù)器的連接資源,導(dǎo)致其他用戶的HTTP請求無法被處理,造成拒絕服務(wù)。
慢速POST請求攻擊原理如圖:
攻擊者可以使用Slowhttptest等攻擊發(fā)動慢速POST請求攻擊,與Slowloris攻擊有所不同,由于HTTP協(xié)議設(shè)計(jì)上的原因,所有的web服務(wù)器軟件都會受到慢速POST請求攻擊的影響。
3.2.4 數(shù)據(jù)處理過程攻擊
web服務(wù)器在收到HTTP請求之后,需要檢查并處理其中的數(shù)據(jù),通過惡意構(gòu)造請求數(shù)據(jù)的內(nèi)容,攻擊者可以顯著的增加數(shù)據(jù)處理過程中的資源消耗,造成拒絕服務(wù)攻擊。
這里已正則表達(dá)式拒絕服務(wù)攻擊和哈希沖突拒絕服務(wù)攻擊為例進(jìn)行說明。
正則表達(dá)式拒絕服務(wù)攻擊又被稱為ReDoS,是安全研究人員在2009年發(fā)現(xiàn)的一種拒絕服務(wù)攻擊方法,在處理請求數(shù)據(jù)時(shí),web應(yīng)用通常會使用正則表達(dá)式進(jìn)行字符的匹配操作,一部分正則表達(dá)式引擎會使用一種被稱為非確定性有限狀態(tài)自動機(jī)的實(shí)現(xiàn)方式,以便能夠處理復(fù)雜的正則表達(dá)式,例如包含了向后引用或者捕獲括號的正則表達(dá)式。然而,這種正則引擎的實(shí)現(xiàn)方式也導(dǎo)致了其處理時(shí)間增加,尤其是在確定“否定匹配”時(shí),正則引擎需要對所有可能的匹配路徑全部進(jìn)行測試,如果位于web應(yīng)用中的正則表達(dá)式寫的不好,需要測試的匹配路徑數(shù)量會隨著輸入字符串的長度呈指數(shù)級增長,利用惡意構(gòu)造的輸入字符串,攻擊者只需要提交相對較短的輸入字符串,就可以強(qiáng)制正則引擎處理數(shù)億個(gè)匹配路徑,所需時(shí)間可以達(dá)到幾個(gè)小時(shí)甚至幾天,只需要幾個(gè)這種類似的惡意正則表達(dá)式匹配請求,就能夠完全占用web服務(wù)器的計(jì)算資源,造成web服務(wù)器拒絕服務(wù)。
哈希沖突拒絕服務(wù)攻擊是安全研究人員在2011年提出的一種拒絕服務(wù)攻擊方法,web應(yīng)用在處理請求中的POST數(shù)據(jù)時(shí),通常使用鍵-值對的方式來進(jìn)行存儲,在PHP、Python、Java等語言中,鍵-值對的實(shí)質(zhì)是一個(gè)哈希表,web應(yīng)用程序通過計(jì)算“鍵”的哈希來獲取其所對應(yīng)的的“值”。正常情況下,這個(gè)哈希表的哈希沖突較少,因此進(jìn)行查找和插入的速度很快,正常狀態(tài)下的哈希表如圖所示。
如果攻擊者構(gòu)造一組惡意的POST數(shù)據(jù),使得請求中的“鍵”的哈希值全部相同,那么保存POST數(shù)據(jù)的哈希表就會因此退化成為鏈表 ,對哈希表的查找和插入等操作規(guī)則變成了對鏈表的遍歷操作,造成大量的計(jì)算資源被占用,導(dǎo)致拒絕服務(wù)攻擊。如圖所示為大量沖突狀態(tài)下的哈希表。
(本文屬于安全脈搏原創(chuàng)現(xiàn)金獎勵計(jì)劃,未經(jīng)允許,嚴(yán)禁轉(zhuǎn)載。)
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP