1. 程式人生 > >拒絕服務攻擊科普

拒絕服務攻擊科普

        在物理世界,對付犯罪行為的解決辦法主要有兩類,一類是防範,即增加犯罪行為的實施難度、減輕受害者的受損程度;一類是責任追究,這一方面可以在事發後追回損失,另一方面由於對犯罪行為的懲罰而對潛在的可能發生的犯罪行為構成威懾,從而減少犯罪的發生。

漏洞產生的原因

(1)系統基礎設計錯誤導致漏洞
        比如對於W州Z000NfT的認證協議,該認證協議本身存在漏洞,可以實施中間人劫持攻擊,這類漏洞不是由於程式設計錯誤造成的,而是系統設計本身就存在問題,無論程式設計如何嚴格,都無法彌補系統設計漏洞。

(2)編碼錯誤導致的漏洞
        很多的漏洞是由於程式設計錯誤導致的,比如緩衝區溢位、堆溢位、格式化串漏洞、指令碼(ASP/PHP等)漏洞等,這些漏洞是由於程式設計人員沒有嚴格實施程式設計時應注意的安全規則或系統的函式庫存在漏洞導致的。
        這類問題往往可以通過提高程式設計質量和實施程式碼控制得以緩解,儘量減少這類漏洞的產生。

(3)安全策略實施錯誤
        比如訪問控制實施的錯誤,如最早的WEB伺服器很多可以通過“二”訪問上一層的目錄。這類漏洞是因為在設計系統的時候沒有充分設計或實現應遵循的安全策略導致的。

(4)實施安全策略物件歧義導致的漏洞
        也就是說在實施安全策略的時候處理灼物件和最終操作處理的物件不一致。近幾年出現了大量因為目標物件歧義導致的漏洞。以最早的115的漏洞為例,比如“a.asp.”、a.asp.+htr”、“a.asp::mode”等方式都可以得到asp指令碼的原碼,這是由於對於115在實施安全策略(判斷安全性)的時候處理的物件是“a.asp.”、“a.asp.+ht:”、“a.asp::mode”,而在實施具體操作的時候處理的物件是“a.asp”。這類漏洞的根本原因在於安全策略要求實施的物件不是系統最終第l章問題的提出、問題的定義處理的物件,同一個物件有多個表述方式,近幾年來出現的很多漏洞可以歸結為這一原因。應該說一個嚴格的安全體系,必須明確一個安全策略實施的物件和最終處理的物件是不允許存在歧義的(正的MMIE解碼漏洞也是這種型別)。

(5)系統設計/實施時相關人員刻意留下的後門
        在系統的設計或實施的過程中,為了除錯的方便,給系統留下了後門,在系統完成直至交付使用後忘記取消後門。或者,某些系統的設計者為了這樣或那樣的目的,而故意為系統留下後門,為自己今後的非法進入創造條件。這些後門一旦被攻擊者獲悉,則後患無窮。

拒絕服務(Dos)—任何對服務的干涉如果使得其可用性降低或者失去可用性均稱為拒絕服務。如果一個計算機系統崩潰、或其頻寬耗盡、或其硬碟填滿,導致其不能提供正常的服務,就構成拒絕服務。

分散式拒絕服務(DDos)攻擊—如果處於不同位置的多個攻擊者同時向一個或數個目標發動攻擊,或者一個攻擊者控制了位於不同位置的多臺機器並利用這些機器對受害者同時實施攻擊,由於攻擊的發出點是分佈在不同地方的,這類攻擊稱為分散式拒絕服務攻擊。一般而言,除了規模以外,0005攻擊與005攻擊沒有本質上的區別,嚴格而言,0005攻擊也是005攻擊,只是我們把多個攻擊機器(一個或者數個攻擊者控制下的分處於不同網路位置的多個攻擊機)發起的協同攻擊特稱為DDoS攻擊。

DDoS網路—指ODoS攻擊中牽涉的各方,它由攻擊者、控制檯、攻擊機(傀儡機)、受害者組成。一個攻擊者可以控制多個控制檯,一個控制檯一般控制多個攻擊機,為了攻擊效果的緣故,受害者通常只有一個或有緊密聯絡的多個,比如,全球的根域名伺服器(orotesvrer)共有13個,從美國東部時間2002年10月21日下午5點左右起,攻擊者就同時對這13個域名伺服器進行了持續1小時的DODS攻擊,結果只有4到5個伺服器經受住了攻擊並能繼續提供服務,其餘的伺服器都癱瘓了。在這次攻擊中,普通的網路使用者的服務卻沒有受到影響。

網路追蹤—通過一定的機制、手段,確定攻擊的真正來源以及攻擊資料包經過的完整路徑。這裡的資料包的來源可能是實施了追蹤的網路的某個入口點、發出資料包的實際的主機或者網路,甚至可能是實施了追蹤的網路中的受攻擊者控制的某個路由器。

DDoS攻擊的典型過程

(1)準備階段,收集目標資訊
        通常,攻擊者的攻擊並非盲目地胡亂進行的,他不會用一臺通過Modem連線的Pc機去轟炸(nooding)一個大型網站(當然,如果該網站有一些漏洞使得劇毒包型攻擊也能奏效的話,用一臺PC機通過劇毒包攻擊大型網站奏效的情況也是存在的,然而,這裡我們感興趣的是風暴型攻擊)!為了使得攻擊奏效,攻擊者需要了解受害者許多的資訊如被攻擊目標主機數目、配置、效能、作業系統、地址情況以及目標網路的頻寬等。因此,在攻擊發生前,攻擊者需要先對目標進行偵察,如利用掃描工具對目標進行掃描。

(2)佔領傀儡機和控制檯
        在DDoS中,攻擊者可以通過自己的機器直接對目標發起攻擊,這樣攻擊者可能會冒著被發現的風險。通常,為了掩蔽自己不被發現,攻擊者需要佔領一些傀儡機,用來實施攻擊。另外,為了達到需要的攻擊力度,單靠一臺或數臺機器對一個大型系統的攻擊是不夠的,因此攻擊者也需要大量的傀儡機器用於增強攻擊的“火力”。這些傀儡機器最好具有良好的效能和充足的資源,如強的計算能力、大的頻寬等等,這樣攻擊者會獲得較大的攻擊力。當然,如果這些機器的管理水平、安全程度低,則更是攻擊者的最佳選擇,因為這樣的機器更容易被攻擊者攻破。比如一些寬頻家庭使用者的系統就具有高頻寬、低安全的特性,而且,由於這些使用者一般都是按月或按年度固定地付費的,因此,他們的計算機一般會長時間連在網上,這些都是最受攻擊者青睞的。並巨:,攻擊者還需要向傀儡機發送命令的控制檯,因此攻擊者還需利用某些被其攻破的機器或者其擁有訪問許可權的機器作為控制檯。
        攻擊者佔領這些傀儡機的一般方法是先通過掃描,得到一些容易攻破的機器,然後採用一些較為簡單的方法予以攻破。此外,由於新的軟體越來越多,必然的,整個系統的漏洞也越來越多;軟體的漏洞使得惡意程式可以自動地攻破大量的主機,然後提供給攻擊者作為傀儡機(攻擊機)使用。
        攻擊者佔領傀儡機以後,需要在傀儡機上安裝後門,以保持對傀儡機的“佔有”。此外,對於那些攻擊者選作攻擊機的傀儡機,攻擊者還需在上面安裝攻擊軟體。

(3)攻擊的實施
        在前面的準備工作完成之後,實際的攻擊過程卻相對比較簡單,攻擊者只需通過控制檯向傀儡機發出指令,令其立即或在某個時間向指定的受害者大量傳送特定的攻擊資料包即可。或者,攻擊者可以在傀儡機上作一定時設定,時間一到,這些傀儡機就自行對既定目標發起攻擊。

       我們這裡描述的是分散式拒絕服務攻擊的一個典型過程。實際上,並非每一次攻擊都要遵循這樣一個過程的。例如攻擊者在攻擊了受害者甲以後的某天打算攻擊受害者乙,這時,由於攻擊者已經掌握了控制檯機器和大量的攻擊機,第二個過程就可以省略。或者,攻擊者也許通過一些其他的渠道對某個受害者早已有了足夠的瞭解,當他想要對其實施攻擊時,第一個過程也就不再需要了。

幾種典型的拒絕服務攻擊

        我們把所有的拒絕服務攻擊分成3類,第一類是殺手包或劇毒包k(illerpackeo型攻擊,這類攻擊也是邏輯攻擊,它主要是利用協議本身或者其軟體實現中的漏洞,通過一些非正常的(畸形的)資料包使得受害者系統在處理時出現異常,導致受害者系統崩潰。由於這類攻擊對攻擊者的運算能力或頻寬沒有要求,一個通過modem連線的低檔的PC機就可以攻破一個具有高頻寬的大型系統。因此,這類攻擊有時也稱作非對稱「ols]DoS攻擊。此類攻擊一般可以通過打補丁①或者在防火牆處過濾特定的畸形資料包達到對受害者的保
護目的。第二類是風暴型(noodtPye)攻擊,攻擊者通過大量的無用資料包(無用是指它們不是正常使用者的正常請求,因此是無用的;這些資料包從單個來看是無害的,但當彙集到一定數量以後卻會損害受害者的服務,因此我們也稱這些資料包為有害資料包;同時,由於這些資料包是旨在攻擊受害者,由攻擊者發出的或者攻擊機響應攻擊者的指令而發出的,因此我們有時也稱之為攻擊性資料包)。在這類攻擊中,攻擊資料包可以是各種型別的,資料包中的資料也可以是多種多樣的,這些資料包與正常服務的資料包是難以區分的。前者,利
用協議實現的漏洞,攻擊過程只需藉助於一個或少量的異常資料包(稱作殺手包或劇毒包)即可達到目的;後者,攻擊效果完全依賴於資料包的數量,僅當大量的資料包傳到目標系統(受害者)時,攻擊方才有效。2000年2月發生的針對y觸ho。,eBAY,Amason.。om等等的分散式拒絕服務攻擊表明即使是擁有大量資源的網路在風暴型攻擊下也難以倖免。第三類攻擊我們稱為重定向攻擊,它既不是利用劇毒包,也不是利用風暴來攻擊受害者。它是通過修改網路中的一些引數如ARP表、DNS快取,使得從受害者發出的或者發向受害者的
資料包被重定向到了其他的地方。這種方法常常是用於竊聽或者中間人攻擊(將來自於受害者或者流向受害者的資料包重定向到攻擊者),但是,如果資料包被重定向到不存在的主機或者存在但不將資料包轉發到其真正目的地的主機,則構成實際的拒絕服務。

劇毒包型DOS攻擊

1)碎片攻擊(teardrop)

        當資料在不同的網路介質之間傳輸時,由於不同的網路介質和協議允許傳輸的資料包的最大長度—即最大傳輸單元(maximumtarnsmissionunit或MTU)可能是不同的,在這種情況下,為了確保資料包順利到達目的地,分.片(framgent,也稱為分段,本文中我們會交替使用這兩個詞)功能是必須的。當一個數據包傳輸到了一個網路環境中,如果該網路環境的MTU小於資料包的長度,則該資料包需要分片才能通過該網路。

        Teardrop本是一段程式,它利用Windows5、iWndowsNT和iWndows3.1中處理IP分片(Ifr腳nt的漏洞,向受害者傳送偏移地址重疊的分片的UDP資料包,使得目標機器在將分片重組時出現異常錯誤,導致目標系統崩潰或重啟。

2)Land攻擊
        Land是一段c程式,其向受害者傳送TCPSYN包,而這些包的源護地址和目的PI地址被偽造成相同的,即受害者的護地址,源埠和目的埠也是相同的,目標系統在收到這樣的包以後可能會掛起、崩潰或者重啟。

3)Ping of death攻擊

        Ping of death攻擊利用協議實現時的漏洞,向受害者傳送超長的ping資料包,導致受害者系統異常。根據TCP/PI規範要求,資料包的長度不得超過65535個位元組,其中包括至少20位元組的包頭和0位元組或更多位元組的選項資訊,其餘的則為資料。而nIetmet控制訊息協議CIMP是基於PI的,CIMP包要封裝到護包中。ICMp的頭有8位元組,因此,一個IeMP包的資料不能超過65535一20一8=65507位元組。如果攻擊者傳送資料超過65507的pnig包到一個有此漏洞的受害者,則受 害者系統可能會因此而崩潰、宕機、重啟等等。事實上,對於有的系統,攻擊者只需向其傳送載荷資料超過4位元組的ing包就可以達到目的,而不用使資料超過655070。

4)迴圈攻擊

        迴圈攻擊,有的也稱之為死鎖或振盪攻擊(oscinate attack)。這類攻擊中最常見的是Eeho一chargen攻擊,當執行著ehargen服務的UDP埠(通常為埠號19)收到一個數據包以後,其會產生一個字串作為迴應。當執行著echo服務的UDP埠(通常為埠號7)收到一個數據包以後,其會簡單地返回該包的資料內容作為迴應。這兩種服務可被攻擊者利用來進行迴圈攻擊。比如,攻擊者只需向甲系統的UDPecho埠傳送一個好像來自於乙系統的UDPhcargen埠的UDP包(即冒充乙系統的IP地址和ehargen埠),則在甲系統的UDPehargen埠和乙系統的之間會產生大量的UDp包,從而當甲乙是不同的兩個系統時使兩系統因處理彼此收發的資料包而效率降低並阻塞甲乙兩系統之間的頻寬,當甲乙
為同一個系統時因其兩個UDP埠間不停地傳送資料包而降低系統性能。(迴圈攻擊既可以看作是劇毒包型攻擊,也可以看作是風暴型攻擊,一方面,它只要求攻擊者傳送一個或數個數據包,另一方面,在受害者處卻有大量的資料包出現。)這種攻擊可以針對單個系統,也可以針對兩個或多個系統。

風暴型Dos攻擊

直接風暴型攻擊

(1)PING風暴攻擊
         這種攻擊是單純地向受害者傳送大量的ICMP迴應請求(即pnig)訊息,使受害者系統忙於處理這些訊息而降低效能,嚴重者可能導致系統無法對其他的訊息作出響應。

(2)SYN風暴攻擊

        SYN風暴攻擊是最常見的一種攻擊。在TCP的連線建立過程中,需要連線雙方完成3次握手,只有當3次握手都順利完成,一個CTP連線才告建立。當一個系統(稱為客戶clien)t希望與另一個提供服務的系統(稱為伺服器)建立一個TCP連線時,其首先向伺服器傳送一個SYN訊息,如果伺服器同意建立連線,則響應一個對SYN訊息的迴應(SYN一ACK),而客戶端收到伺服器的SYN一AcK以後,再向伺服器傳送一個ACK訊息,當伺服器收到此訊息以後,一個TCP的連線就告完成。

        在3次握手進行的過程中,伺服器需要保持所有未完成的的握手資訊(稱為半開連線,即收到Tcp一SYN併發送了SYN一ACK,但第三次握手資訊(ACK)未收到的狀態)直到握手完成或超時(不同的系統超時長度的設定不同,一般情況下在75秒左右,如BSD類的系統的超時設定就是75秒[025〕,有的系統的超時設定甚至達到10餘分鐘。)以後丟棄該資訊。由於半開連線的數量是有限的,如果攻擊者不停地向受害者傳送連線請求,而又不按協議規定完成握手過程,則伺服器的半開連線棧可能會用完,從而不再接受其他的連線請求。

        在實際中,攻擊者常採用地址偽造的手段,一方面可以掩蓋發出攻擊的真實地點,從而逃避追蹤;另一方面,如果攻擊者不偽造地址,在未修改攻擊機TCP協議棧的情況下,其系統會自動對SYN一ACK作出響應,無論是其以ACK迴應建立連線還是以RST(eres)t迴應取消連線都會在伺服器上釋放對應的半開連線(一般情況下戶於設有應用程式要求建立連線,所以攻擊者機器可能會返回一個RST資訊),從而既影響攻擊機的效能又由於攻擊機發出的響應使得受害者較早地釋放對應的半開連線進而減少佔用半開連線的時間,降低攻擊效果:如果攻擊者將攻擊資料包的源PI地址偽造成那些主機不存在或主機沒有執行的P1地址,則受害者必須等待超時才能釋放相應的半開連線,從而對攻擊者而言達到最佳效果。

(3)TCP連線耗盡攻擊
        在TCP連線中,作業系統的核心會維持每一個TCP連線的資訊。但如有太多的連線,則需要佔用很多的記憶體和CPU時間。因此,只要擁有足夠的RAM、高速的處理器和適當的比較容易操作的05,只需簡單地使用TELNET之類的程式就可耗盡一個安全性不太強的系統的TCP連線。不過,採用這種笨拙的方法也會耗費攻擊者很多的資源,因此,如此簡單的方法不會對受害者構成太大的威脅。

        與SYN風暴攻擊不同,連線耗盡攻擊不需要不停地向受害者發起連線,只要連線數達到一定水平以後,攻擊者就可以停止而受害者系統仍不能使用,但在SYN風暴攻擊中,一般情況下只要攻擊一旦停止,受害者系統就可提供服務。

(4)UDP風暴
        UDP是一無連線的協議,在傳輸資料之前不需要如TCP那樣建立連線。當一個系統收到一個UDP包時,它會檢查何種應用程式在監聽該埠,如果有應用程式監聽,則把資料交該應用程式處理,如果沒有應用程式監聽該埠,則迴應一個ICMP包說明目標不可達。UDP風暴通常的主要目的是佔用網路頻寬,達到阻塞網路的目的,因此通常UDP風暴攻擊的資料包會比較長。當然,UDP風暴也可以用來攻擊終端節點,如果處於網路終端節點的受害者收到的UDP包足夠多,則受害者系統可能崩潰。由於很多的終端節點是不需要定期收到
UDP資料包的,因此可以在高頻寬的節點如上游路由器處設定過濾某些UDP資料包以對付UDP風暴。

(5)對郵件系統的拒絕服務攻擊

        這種攻擊是通過往一個郵件地址或郵件伺服器傳送大量的相同或不同的郵件,使得該地址或伺服器的儲存空間塞滿而不能提供正常的服務。

反射攻擊

        雖然同為風暴型攻擊,與直接風暴型攻擊不同,反射攻擊多了反射器的反射環節。在這種攻擊中,攻擊者或其控制下的傀儡機(攻擊機)不是直接向受害者傳送攻擊資料包,而是向第三方的反射器傳送特定的資料包,再經由反射器向受害者傳送攻擊者所希望的資料包。其利用了反射器根據一個訊息生成另一個訊息的能力。

DoS工具分析

(1)Trinoo

       是發現最早的DDos具之一,在1999年6、7月就出現了。Trinoo的攻擊採用的是UDP風暴,其攻擊者(attacker、cilent)到控制檯(handler、master)的通訊通過TeP埠27665,控制檯到攻擊主體(agents、demaon)的通訊通過UDP埠27444進行通訊,而攻擊機到控制檯的通訊則通過UDP埠31335。

(2)TFN

        TFN是TheTribeFloodNetwo的縮寫,它的出現是在trinoo之後,TFN的控制檯和攻擊主體構成的攻擊網路能夠實施多種攻擊,如ICMP風暴、SYN風暴、UDP風暴和SMURF等。TFN與trinoo有較大的區別,其攻擊者、控制檯、攻擊主體之間的通訊採用CIMPECHO和ECHOREPLY訊息。在TFN中,攻擊者到控制檯的通訊採用的是明文方式,即沒有加密處理,容易受到標準的TCP攻擊如會話劫持(sessionhijaeking)、RsT截斷(RsTsniping)等。TFN的控制檯到攻擊機的通訊通過IPHORPLY包。由於有些協議監視工具不擷取IP包,
因此TNF不依賴於TCP和UDP進行通訊的特徵使得在某些情況下其更不易被發現。

(3)Stacheldraht

        在德語中意指帶刺的網線”barbed wire,’。出現於1999年夏天晚些時候,其集合了trinoo。和TFN的某些特徵並有一些更高階的特徵,如控制檯對攻擊者的認證需要攻擊者提供口令,這個口令在向控制檯傳送的過程中是通過Blowfihs加密的,控制檯和攻擊機之間的所有通訊都採用Blowfihs加密。攻擊機可以自動升級等。

        Stacheldrhat的攻擊者向控制檯的聯絡通過TCP埠16660,控制檯到攻擊機的聯絡通過TCP埠,反方向的聯絡則通過CIMPECHOREPLY

(4)Trinity

        其可實施多種風暴型攻擊,包括UDP、sYN、RST、ACK等。從攻擊者或控制檯到攻擊主體的通訊則是通過即時通訊(intemet Relay Chat,IRC)或美國線上(AOL)的ICQ,Trinity也是最早利用IRC進行控制的DDoS工具之一。Triniyt最早似乎用的是埠號6667,並且有一個後門程式監聽TCP埠33270。

(5)Shaft

         一個Shaft網路看起來與trinoo的類似,在控制檯和攻擊機之間的通訊採用的是UDP協議(控制檯到攻擊機的通訊用埠18753,相反方向用埠20433)。攻擊者可以控制攻擊型別、攻擊包的大小和攻擊時間的長短。Shaft的一個典型的特徵是其TCP包的序列號都是0x28374839。

(6)TFN2K

TFN2K是在TFN上發展起來的變種,有很多新的特徵使得其通訊更難以識別和過濾、命令可以遠端執行、通過地址偽造掩蓋攻擊源,並能通過多種協議如UDP、TCP和ICMP進行
通訊。TFN2K除了可以實施TFN己有的攻擊外,還可以通過傳送如Teardrop攻擊和Land攻擊那樣的異常資料包使得受害者系統不穩定或崩潰。

(7)Stream/mstream

        比較初級,其程式中有不少的錯誤,其控制功能也相對單一。然而,其也象其他的工具一樣,會給受害者帶來很大的災難。

(8)Jolt2

    jolt2.c是在一個死迴圈中不停的傳送ICMp/UDP的伊碎片,可以使windows系統的機器死鎖。經測試,沒打補丁的Wnidows2000遭到其攻擊時,CPU利用率會立即上升到100%,滑鼠無法移動。jolt2的危害較大,其通過不停的傳送IP碎片資料包,不僅死鎖未打補丁的wnidows系統,同時也大大增加了網路流量。曾經有人利用jolt2模擬網路流量,測試DIS在高負載流量下的攻擊檢測效率,就是利用這個特性。

最後歡迎大家訪問我的個人網站: 1024s