DDoS攻擊工具HOIC分析

gnaw0725發表於2014-11-27

本文是綠盟科技安全+技術刊物中的文章,文章對拒絕服務攻擊工具—"High Orbit Ion Cannon" 的技術性分析。HOIC 是一款用RealBasic 開發可移植的多平臺拒絕服務攻擊工具,該工具雖然對使用者的水平有較高要求,需要了解HTTP 協議本身,但由於在DDoS 攻擊來源中具有一定代表性,有必要對其分析並加以防範。本文嘗試透過技術性分析,探討相應的防範措施。

目前針對企業的網際網路攻擊日趨頻繁,且攻擊形式不斷更新,但最常見的形式還是DDoS。綠盟科技威脅響應中心,透過對安全事件的分析瞭解到,很多攻擊者都採用了一種稱為“High Orbit Ion Cannon”的工具,這種工具可以引發拒絕服務攻擊。

作為應對措施之一,行業中常見的形式是建立威脅響應機制,以提供及時且行之有效的攻擊防護分析及建議。本文著重分析了這個工具,並探討了防範措施,從而避免或降低危害及損失。



概述

HOIC(The high orbit ion cannon)是一款基於HTTP 協議開源的DDOS 攻擊工具,可用於內部網路或者外部伺服器的安全性和穩定性的測試等等。HOIC 具有以下特點:


  • 高速多執行緒的HTTP 洪水攻擊。
  • 一次可同時洪水攻擊高達256 個網站。
  • 內建指令碼系統,允許自行修改設定指令碼,用來阻撓DDoS 攻
  • 擊的防禦措施,並增加DOS 輸出。
  • 簡單且易於使用的介面。
  • 可移植到Linux/ Mac。
  • 能夠選擇攻擊的執行緒數。
  • 可設定三種攻擊強度:低,中,高。
  • 用REALbasic 這種極其書面的語言寫成,簡單易修改。

關鍵功能介面

TARGETS 這裡是引數的設定,包括強度和指令碼的選擇。實際上URL 這裡可以不輸入任何東西,直接在副檔名為.hoic 的攻擊指令碼中指定多個目標URL,這樣更靈活。如果URL 處保持為空,在後續操作中會有一個警示資訊出現,直接確定,不必理會它。

列表為已經新增的攻擊目標URL 資訊、強度等級、指令碼資訊和狀態。“THREADS”為執行緒數量,“可以在THREADS”處點選左右鍵頭調整併發執行緒數,建議有幾個CPU 或有幾個核,就設幾個併發執行緒數,多了沒有意義。此處程式實現上有BUG,沒有檢查執行緒數的下限,比如可以下調至-1,此時沒有任何攻擊報文傳送出去,因為流程根本不會到達下面那個for 迴圈內部:
表1

Dim i as integer

for i = 0 to Val( edtThreads.Text )-1

threads.Append( New attackThread )

threads( threads.Ubound ).Run

Next


目標列表顯示攻擊目標資訊,“OUTPUT”顯示攻擊流量資料,OUTPUT 處的位元組數對應全域性變數TotalBytesSent,是動態遞增的。

關鍵功能對應原始碼

點選”FIRE THE LAZER”之後,程式會啟動執行緒框指定個數的執行緒用來攻擊伺服器,並且啟動tmTurbo 控制器,用來不斷透過指令碼來更新Headers。
表2 程式碼段省略

attackThread // 迴圈遍歷列表中的所有目標主機,然後根據全域性變數powerFactor( 對應LOW、MEDIUM 和HIGH) 的不同以不同的兩次攻擊報文之間的休眠時間傳送攻擊資料包,並且不斷在主介面同步顯示傳送的流量。

表3 程式碼段省略


HOIC 本身只是一個DoS 框架程式,真正的DoS 攻擊行為透過副檔名為.hoic 的攻擊指令碼指定,離開這些.hoic 檔案,HOIC本身什麼也幹不了。.hoic 指令碼檔案必須與
HOIC 主程式位於同一目錄,否則會找不到。指令碼也是用RealBasic 寫成,透過Generic函式可以看到程式會以RbScript 類來執行指令碼檔案,指令碼檔案可以影響到程式內的變
量值。例如程式呼叫下面指令碼後,所傳送的攻擊資料包就會根據我們自定義的指令碼中需要構建的HTTP 請求資料塊配置上附帶的資訊,進行攻擊。伺服器會根據自定義的數
據塊資訊把程式傳送的資料包識別為正常的資料包。


下面這些都是HOIC 主程式預定義並使用的全域性變數,可以在.hoic 指令碼中直接使用: Headers 、PostBuffer、powerFactor、URL、UsePost

表4  程式碼段省略

Hoic2.1(dev) 作者由於呼籲大家攻擊一個司法網站,釋出此版本時提供了新指令碼。

此指令碼在多個資料塊中隨機呼叫Array 中的資訊,可以用來降低攻擊被檢測的可能性,提高攻擊效果。

表5  程式碼段省略

HOIC 2.1(dev) 版隨包自帶了四個.hoic檔案:

  • DutchFreedom.hoic
  • GenericBoost.hoic
  • user-agent-test.hoic
  • visa_stress.hoic
DutchFreedom.hoic 是用來攻擊 司法網站的,為LOIC 出氣。GenericBoost.hoic 相當於一個.hoic模板, 駭客們可以在此基礎上編寫自己的.hoic 檔案。
user-agent-test.hoic 用來演示透過.hoic 指定"User-Agent"。
visa_stress.hoic,顧名思義,在攻擊。


駭客可以建立一個網站向外釋出各種.hoic檔案,別人只要下載駭客編寫的.hoic檔案並載入到HOIC 中,就可以進行相應的DoS 攻擊,甚至不用輸入目標URL。如果使用者設定新增的攻擊URL 與指令碼中指定的目標URL 不一樣,此時發起攻擊後,會先去訪問使用者設定新增的攻擊URL,提交6 次同樣的HTTP 請求,然後再去DoS 指令碼中設定的地址,會抑制前述對話方塊中使用者輸入的URL 從此不再攻擊使用者自己設定的URL。這個設計不知是HOIC 作者有意為之還是無心插柳,總之結果很險惡,因為DutchFreedom.hoic 正是自己指定了目標URL,並且還是隨hoic.zip 自帶的。很多小白們使用HOIC 進行DoS 攻擊,指定DutchFreedom.hoic,他們最終都參與攻擊,而不是攻擊他們自己輸入的目標URL。

HOIC 的作者水平比LOIC 的作者水平高,至少是個比較熟練的RealBasic 程式設計師,程式BUG 較少。HOIC 對使用者的水平有較高要求,需要了解HTTP 協議本身,如果不提供現成的.hoic 檔案,很多使用者可能完全無法有效使用HOIC 進行DoS 攻擊。而高水平的駭客們可以透過提供現成的.hoic 檔案利用各種小白們一起DoS 指定目標。


與同類流行工具的對比及特點

本工具與同類拒絕服務攻擊工具的區別和特點在於可允許使用者定義目標主機的URL、攻擊強度和自定義攻擊指令碼。當使用者點選TURBO 按鈕後, 程式會間隔時間不斷地呼叫使用者自定義指令碼來生成自定義Headers。當使用者點選FIRE THELAZERS 之後,程式會啟動N 個執行緒用來攻擊目標主機,在攻擊過程中會根據使用者選擇的攻擊強度的不同,以不同的時間間隔傳送資料包,並且在介面上同步傳送的資料包的流量。

可使用使用者自定義Headers 來產生偽造的Header,比如自行新增修改sessionID 或cookie 資訊可以對某些設定過濾或阻隔的站點同樣進行有效攻擊。優點是靈活多變,攻擊的資料包都是正常的資料包,攻擊請求都是有效的、無法拒絕的請求。缺點是不能攻擊其他服務埠,此軟體不支援代理,無法改變攻擊來源使用真實IP 進行攻擊,但可透過第三方軟體實現代理偽造攻擊來源。仍然需要大量、分散的主機在同一時間集中進行攻擊效果才更顯著。


軟體在網路上流量特徵

攻擊來源只有一臺主機,此主機發出大量的資料包,佔用了大量流量,非常異常。

這臺主機發包的目標主機只有一個,同時其發包的時間間隔極短,是典型的網路攻擊行為。

攻擊採用的是合法協議,均是透過HTTP 協議攻擊目標主機固定埠,80 埠。

此種攻擊和正常訪問網站是一樣的,只是瞬間訪問量增加幾十倍甚至上百倍。


軟體歷史沿革

The high orbit ion cannon Current Release: 2.1(dev)—2010/12/10
The high orbit ion cannon Current Release: 1.0—2010/12/09


相關文章請參看 DDoS HOIC分析

附錄

文中一些程式碼段不便複製,如果您需要檢視完整內容,請點選下載綠盟科技安全+技術刊物16期

DDoS攻擊工具HOIC分析DDoS攻擊工具HOIC分析

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/34549/viewspace-1348799/,如需轉載,請註明出處,否則將追究法律責任。

相關文章