上篇文章雨筍教育小編給大家介紹了XSS攻擊,今天給大家介紹的也是滲透測試中常遇到的一種攻擊方法DOSS攻擊,這種攻擊近兩年很多大型攻擊事件都是通過這種手段來進行的。到底它的攻擊原理是什么,我們又該如何去防范,請看下面這篇介紹。 作者:小牛在行動yu https://www.bilibili.com/read/cv14113655 出處:bilibili
什么是DDoS攻擊
DDoS攻擊,指借助於C/S技術,將多個計算機聯合起來作為攻擊平台,對一個或多個目標發動DoS攻擊,從而成倍地提高拒絕服務攻擊的威力。
通常,攻擊者將DDoS主控程序安裝在其所擁有的計算機,或使用通過非法手段獲取到的帳號,將DDoS主控程序安裝在其他已淪陷的計算機上,並將DDoS代理程序安裝在網絡上的許多已淪陷的計算機上。當攻擊者意圖對被害業務系統發起DDoS攻擊時,會通過DDoS主控程序與大量DDoS代理程序通訊。DDoS代理程序在收到DDoS主控程序的指令后就會立即發動DDoS攻擊,從而造成被害業務系統網絡幾近癱瘓,甚至於出現宕機。利用客戶/服務器技術,DDoS主控程序能在短短幾秒鍾內發動成千上萬個DDoS代理程序進行DDoS攻擊。
DDoS攻擊的危害
首先從一個現實生活環境的比方來深入理解什么是DDoS攻擊。
一家商鋪試圖讓對面那家有着競爭關系的商鋪無法正常營業,他們會采取什么手段呢?一般會有如下幾步:
他們首先會雇佣一群馬仔,並讓這群馬仔們扮作普通客戶;
然后命令這群馬仔們一直擁擠在對手的商鋪,賴着不走,真正的購物者卻無法進入;
讓馬仔們總是和營業員有一搭沒一搭的東扯西扯,讓商鋪的工作人員不能正常服務客戶;
也可以為商鋪的經營者提供虛假信息,商鋪的的工作人員上上下下忙成一團之后,卻發現都是一場空,最終跑了真正的大客戶,損失慘重。
此外馬仔們完成這些壞事有時憑單干難以完成,需要叫上很多人一起。
網絡空間安全領域中DoS和DDoS攻擊也遵循着這些思路。
在網絡空間安全的三要素——"保密性"、"完整性"和"可用性"中,DoS攻擊,即拒絕服務攻擊,針對的目標正是"可用性"。該攻擊方式利用目標系統網絡服務功能缺陷或者直接消耗其系統資源,使得該目標系統無法提供正常的服務。
常見的DDoS攻擊種類
DDoS攻擊的攻擊方式有很多種,最基本的DoS攻擊就是利用合理的服務請求來占用過多的服務資源,從而使合法用戶無法得到服務的響應。單一的DoS攻擊一般是采用一對一方式的,當攻擊目標存在有CPU速度低、內存小或者網絡帶寬小等等各項指標不高的性能時,它的效果是明顯的。
隨着計算機與網絡技術的發展,計算機的處理能力迅速增長,內存大大增加,同時也出現了超大規模的網絡,這使得DoS攻擊的困難程度顯著加大了——目標系統對惡意攻擊包的"消化能力"加強了不少。這時候DDoS攻擊就應運而生了。DDoS攻擊就是利用更多的傀儡機(肉雞)來發起進攻,以比從前更大的規模來進攻受害者的業務系統,從而造成被害業務系統網絡幾近癱瘓,甚至於出現宕機。
DDoS攻擊通過大量合法的請求占用大量網絡資源,以達到癱瘓網絡的目的。這種攻擊方式主要可分為以下幾種:
1. IP Spoofing
2. LAND attack
3. Smurf攻擊
4. Teardrop攻擊
5. SYN Flood攻擊
6. SYN+ACK Flood攻擊
7. ACK Flood 攻擊
8. TCP 全連接攻擊
9. UDP Flood
10. CC 攻擊
11. 以上攻擊的混合攻擊
01、IP Spoofing
IP Spoofing攻擊是指創建的IP 數據包中具有偽造的源 IP 地址,目的是在發動攻擊時隱藏攻擊者的身份或冒充成另一個計算系統。當攻擊者冒充網絡上的另一個設備或用戶以對網絡主機發起攻擊、竊取數據、傳播惡意軟件或繞過訪問控制時,就會發生欺騙攻擊。
防范IP 欺騙攻擊的主要方法有以下幾種:
1、針對於內網環境下,可以進行IP-MAC綁定。通過將接收到的IP數據包中的源IP與已有的IP-MAC表進行對比,若已有的IP-MAC表中的源IP對應的MAC地址和IP數據包中的其發送者的MAC地址不符,則將其發送的數據包進行丟棄。
2、針對於公網環境下,可以直接丟棄從公網方向接收到的IP數據包中源IP為內網IP段范圍內(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16)的IP數據包。
3、針對於公網環境下,還可以使用URPF,通過取出從公網方向接收到的IP數據包中的源IP地址,然后查看自身的路由表中是否有該數據包的路由信息。如果路由表中沒有其用於數據返回的路由信息,那么極有可能是某人偽造了該數據包,於是便把它丟棄。
02、LAND attack
LAND Attack指的是攻擊者向目標系統發送一個SYN的TCP包,包中的源地址被偽造為目標系統的地址。當目標系統收到包后,會向自己發送一個SYN+ACK的TCP包。然后,目標系統向自己發送一個ACK包,這樣就自己和自己建立一個空連接。這個空連接會一直持續,直到超時。當目標系統被這樣大量欺騙,建立大量空連接,消耗大量的系統資源,導致目標系統底層操作系統運行緩慢,甚至崩潰。該漏洞存在於很多早期操作系統,如Windows XP和Windows 2003。
防范着陸攻擊的主要方法依賴於過濾並丟棄源地址和目標地址相同的SYN、SYN+ACK的TCP數據包。
03、Smurf攻擊
Smurf攻擊通過使用將回復地址設置成目標系統網絡的廣播地址的ICMP應答請求(ping)數據包,來淹沒目標系統,最終導致目標系統網絡的所有主機都對此ICMP應答請求做出答復,導致網絡阻塞。
防范Smurf攻擊的主要方法有以下幾種:
1、針對於網絡設備可以過濾並丟棄IP數據包中的源IP地址為廣播地址的IP數據包。
2、針對於終端設備,可以禁止對IP數據包中的目標地址為廣播地址的ICMP包進行響應。
3、針對於網絡邊界設備,可以對於從本網絡向外部網絡發送的IP數據包中源地址為其他網絡的這部分IP數據包過濾並丟棄。
04、Teardrop攻擊
Teardrop攻擊通過向目標系統發送一些分片IP報文,並且故意將“13位分片偏移”字段設置成錯誤的值,此處既可以與上一分片數據重疊,也可以與上一分片數據錯開,目標系統在組合這種含有重疊偏移的偽造分片報文時,會導致目標系統底層操作系統崩潰。
防范Teardrop攻擊的主要方法依賴於把接收到的分片報文先放入緩存中,並根據源IP地址和目的IP地址對報文進行分組,源IP地址和目的IP地址均相同的報文歸入同一組,然后對每組IP報文的相關分片信息進行檢查,丟棄分片信息存在錯誤的報文。為了防止緩存溢出,當緩存快要存滿時,直接丟棄后續分片報文。
05、SYN Flood 攻擊
SYN Flood攻擊指的是攻擊者在短時間內使用大量的肉雞或偽造大量不存在的IP地址,向目標系統不斷地發送SYN數據包,迫使目標系統需要回復大量SYN+ACK確認包,並等待發送源的確認。由於源地址不對確認包進行響應或者源地址是根本就不存在的,目標系統需要不斷的重發SYN+ACK確認包直至SYN包超時,這些一直得不到確認的SYN包將長時間占用SYN隊列,正常的SYN請求被丟棄或被拒絕,導致目標系統運行緩慢,嚴重者會引起網絡堵塞甚至目標系統底層操作系統癱瘓。
緩解SYN Flood攻擊的主要方法有以下幾種:
1、縮短SYN數據包超時(SYN Timeout)時間,減少SYN隊列內無效SYN數據包積壓數量。
2、增加最大半連接數,即增加SYN隊列大小,使得系統可以容納更多的SYN數據包。
3、開啟SYN Cookies,就是給每一個請求連接的IP地址分配一個Cookie,當再次收到相同五元組的SYN數據包時,不再新分配ACK號,而是復用之前的ACK號,從而減小SYN隊列長度。
4、進行首包丟棄,一般情況下正常訪問者在首包超時后會再次發送SYN數據包,而攻擊者一般情況下則不會重新發送SYN數據包,從而減少SYN隊列內無效SYN數據包積壓數量。
5、進行源地址驗證,如果源地址是偽造的話直接丟棄該SYN數據包,從而減少SYN隊列內無效SYN數據包積壓數量。
06、SYN+ACK Flood 攻擊
SYN_ACK Flood攻擊指的是攻擊者發送大量的SYN+ACK數據包到目標系統,目標系統將會為處理這些報文而消耗大量的資源,導致目標系統運行緩慢,嚴重者會引起網絡堵塞甚至目標系統底層操作系統癱瘓。
緩解SYN+ACK Flood攻擊的主要方法有以下幾種:
1、如果不需要主動發起連接,可以將所有的SYN+ACK包丟棄。
2、進行源地址驗證,如果源地址是偽造的話直接丟棄該SYN+ACK數據包。
07、ACK Flood 攻擊
ACK Flood攻擊是發生在TCP連接建立之后,由於所有的數據傳輸TCP報文都帶有ACK標志位,所以目標系統在接收到一個帶有ACK標志位的數據包的時候,需要檢查該數據包所表示的連接四元組是否存在,如果存在則檢查該數據包所表示的狀態是否合法,然后再向應用層傳遞該數據包。如果在檢查中發現該數據包不合法,例如該數據包所指向的目的端口在本機並未開放,則主機操作系統協議棧會回應RST包告訴對方此端口不存在。這里,服務器要做兩個動作:查表、回應ACK/RST。由於攻擊者發送大量的帶有ACK標志位的數據包,導致目標系統需要進行大量的查詢操作,導致目標系統運行緩慢,嚴重者會引起網絡堵塞甚至目標系統底層操作系統癱瘓。
緩解ACK Flood攻擊的主要方法有以下幾種:
1、統計源地址各類型數據包分布,如果目標系統從該源地址收取數據包的數量異常大於目標系統發往該源地址的數據包的數量,則可以直接丟棄該源地址的ACK數據包。
2、進行源地址驗證,如果源地址是偽造的話直接丟棄該ACK數據包。
08、TCP全連接攻擊
TCP全連接攻擊是通過消費目標系統進程數和連接數,只連接而不進行發送數據的一種攻擊方式。當攻擊者連接到目標系統,僅僅只是連接,此時目標系統會為每一個連接創建一個進程來處理攻擊者發送的數據。但是攻擊者只是連接而不發送數據,此時目標系統會一直處在Recv或者Read的狀態,如此一來,多個連接,目標系統的每個連接都是出於等待狀態從而導致目標系統的崩潰。
一般來說,防范TCP全連接攻擊的主要方法依賴於限制單個源IP可與目標系統建立的最大連接數,從而確保目標系統不會崩潰。
09、UDP Flood攻擊
UDP Flood攻擊又稱UDP淹沒攻擊,是流量型DoS攻擊的一種,常常利用大量UDP小包沖擊目標系統,從而耗盡目標系統的帶寬。由於UDP協議是一種無連接的服務,在發動UDP Flood攻擊時,攻擊者發送大量偽造源IP地址的小UDP包,也可以導致目標系統癱瘓。
防范UDP Flood攻擊的主要方法依賴於在網絡邊界處限制單個源IP可發往目標系統的最大包速率和最大帶寬,從而確保目標系統帶寬不被耗盡且不會崩潰。
10、CC 攻擊
CC攻擊,其前身名為Fatboy攻擊,是利用不斷對目標系統發送連接請求致使形成拒絕服務的目的。CC攻擊又可分為代理CC攻擊和肉雞CC攻擊。代理CC攻擊是攻擊者借助代理服務器生成指向目標系統的合法網頁請求,從而導致目標系統的CPU幾近100%,甚至宕機的現象。而肉雞CC攻擊是黑客使用CC攻擊軟件,控制大量肉雞,發動攻擊,相比來后者比前者更難防御。因為肉雞可以模擬正常用戶訪問網站的請求。偽造成合法數據包。
緩解CC 攻擊的主要方法有以下幾種:
1、限制單源地址可被目標系統處理的總請求數,從而避免出現單源地址占用目標系統資源過多的情況。
2、限制單源地址單位時間可被目標系統處理的請求數,從而避免出現單源地址占用目標系統資源過多的情況。
3、網站頁面靜態化,使用網站頁面靜態化可以較大程度的減少系統資源消耗,從而增強系統對請求的處理能力。
學滲透技術:跟着老師聽公開課打基礎:https://ke.qq.com/course/3383785?quicklink=1
咨詢學習:15386496074