網域名稱生成演算法(DGA)基礎總結

2021-08-30 09:09:47 字數 2195 閱讀 4391

殭屍網路正在威脅著網際網路網民的安全。殭屍網路中受到惡意軟體感染的殭屍主機由殭屍控制者通過c&c主機進行控制。殭屍主機常常利用dns授權伺服器來解析網域名稱,目的是為了跟c&c伺服器建立通訊通道,然後獲取控制命令,從而進行網路惡意活動。

在早期,殭屍主機通產採用輪詢的方法訪問硬編碼的c&c網域名稱或ip來訪問伺服器獲取網域名稱,但是這種方式在安全人員進行逆向之後會得到有效的遮蔽。目前,黑客攻擊者為了防止惡意網域名稱被發現,會使用domain flux或者ip flux來快速生成大量的惡意網域名稱。domain flux是通過不斷變換網域名稱,指向同乙個ip,ip flux是只有乙個網域名稱,不斷變換ip,乙個網域名稱可以使用多個ip。網域名稱生成演算法(domain generation algorithm),是一種利用隨機字元來生成c&c網域名稱,從而逃避網域名稱黑名單檢測的技術手段。

攻擊者端(bot-master)

使用種子執行dga生成大量網域名稱,隨機選擇少量的網域名稱進行註冊(可能生成了5000個只註冊1-2個),攻擊者將該網域名稱註冊並指向其c&c伺服器。

受害者端(bot)

使用同樣的種子執行dga,生成大量網域名稱,逐個訪問這些網域名稱,檢測是否存在,如果該網域名稱未註冊,程式繼續檢測其他網域名稱,如果該網域名稱已註冊【如果某生成網域名稱發生了被搶註的情況該怎麼辦?不處理,因為那些網域名稱並不能發攻擊指令,看設計方案是否要繼續進行輪詢】,那麼惡意軟體將選擇使用該網域名稱聯絡c&c伺服器。

dga使用的種子有很多種類,包含日期、社交網路搜尋熱詞、隨機數或字典,生成一串字元字首,新增tld(如com、org等)後得到最終生成網域名稱agd(algorithmically generated domain) 。

【怎樣確定同樣的種子?在程式中內嵌。但是安全人員逆向了之後仍舊不能確定種子是什麼,因為並不能知道攻擊者究竟以什麼字段作為種子】

dga每天可以生成成千上萬的惡意網域名稱,但僅選擇一小部分作為後續的攻擊網域名稱,相對於傳統硬編碼的惡意網域名稱,更難檢測。

dga的優點

1、使用dga的殭屍網路有較為健壯的定址方式,可對抗網域名稱黑名單遮蔽、靜態聲望系統以及特徵碼檢測系統。

2、dga是一種理想的備用通道,可作為back up手段恢復殭屍網路控制,如zeus v3。

dga的缺點

1、需要逐一便利agd,定址效率低。

2、大量nxdomain流量導致通訊易被檢測發現。

3、如果agd數量過多,出於時間和金錢成本開銷,攻擊者難以全部註冊,防禦人員可以搶註並通過sinkhole手段測量或劫持殭屍網路。

根據種子性質分類

1、根據種子是否依賴於時間分為兩類:依賴於時間的和不依賴於時間的。

時間**於被入侵主機的系統時間,或http響應報文中的日期字段。

2、種子是否確定:確定的和不確定的。

大多數dga的種子都是確定的,即可以**該dga未來使用的種子和以此產生的網域名稱。

一些dga的種子是不確定的,

上述兩種方法將dga劃分為四個類別:

tid、tdd、tdn、tin

根據生成演算法分類

1、基於算術(arithmetic-based)的dga:

計算一系列的數值,這些值能根據ascii碼直接表示成網域名稱,或者這些值作為偏移值,指向在dga在dga中硬編碼的字元表中的乙個字元。大部分dga都屬於這一類。

2、基於雜湊(hash-based)的dga:

使用十六進製制表示的雜湊值生成agd。這dga常使用sha256和md5兩種雜湊值。

3、基於單詞表(wordlist-based)的dga:

從乙個或多個單詞表中選擇單詞並連線成乙個網域名稱,這樣的網域名稱更具有迷惑性。

4、基於置換(permutation-based)的dga:

通過對乙個網域名稱進行置換操作生成多個新的網域名稱。

對目前發現的43種dga進行分類,得到下表:

【圖】種子是什麼是乙個比較難解決的問題,dga演算法相對更容易找到。

生成大量的dga網域名稱,去做碰撞,emmm碰撞不上,是真的碰不上。

這個我讀完再整理吧。

reference

[1] 網域名稱檢測技術的ppt,張永錚,王一鵬,臧天寧,2018秋。

[2]fanci : feature-based automated nxdomain classification and intelligence, samuel schüppen, dominik teubert, patrick herrmann and ulrike meyer, usenix, 2018.

網路安全 網域名稱生成演算法(DGA)基礎總結

網域名稱生成演算法 dga 殭屍網路正在威脅著網際網路網民的安全。殭屍網路中受到惡意軟體感染的殭屍主機由殭屍控制者通過c c主機進行控制。殭屍主機常常利用dns授權伺服器來解析網域名稱,目的是為了跟c c伺服器建立通訊通道,然後獲取控制命令,從而進行網路惡意活動。在早期,殭屍主機通產採用輪詢的方法訪...

CART生成演算法

輸入 訓練資料集 d 停止計算的條件 輸出 cart 決策樹。根據訓練資料集,從根結點開始,遞迴地對每個結點進行以下操作,構造二叉決策樹 1 設結點的訓練資料集為 d 計算現有特徵對該資料集的基尼指數。此時,對每乙個特徵 a,對其可能取得每個值 a 根據樣本點對 a a的測試為 是 或 否 將 d ...

子集生成演算法

劉汝佳書上的內容 下文提到的集合 其元素預設為0 n 1 n 個 意思就是一次選乙個 放到 裡 include include include include include include include include include include include include includ...