騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

騰訊電腦管家發表於2020-03-27

1.   背景

目前各個安全廠商都開始積極地挖掘情報資料的價值,研究威脅情報分析與共享技術。越來越多的安全廠商開始提供威脅情報服務,眾多企業的安全應急響應中心也開始接收威脅情報,威脅情報的受重視程度日益變高。根據SANS 釋出的全球企業的威脅情報調查報告(The SANS State of Cyber Threat Intelligence Survey: CTI Important and Maturing),94% 的受訪企業表示目前已有威脅情報專案,70% 企業採了用威脅情報供應商的商業源。


依託騰訊近20年的安全能力建設和安全實踐經驗,依託覆蓋全網海量安全大資料,大約每日2萬億安全日誌,通過資料歸一、清洗、建模、分類、知識圖譜化,快速的跟蹤和識別出海量資料中威脅要素,依託騰訊強大的機器學習平臺和專業的安全運營能力,將威脅要素生產運營成實時有效,具有豐富上下文資訊的威脅情報。


目前騰訊威脅情報的自產率佔整體情報的90%,跟蹤了全網超3000個黑灰產團伙,近百個APT組織。其中一系列關鍵技術就是從海量資料中進行惡意域名的挖掘及家族的識別,本文將對圖分析技術在惡意域名和家族惡意域名挖掘的應用進行詳細介紹。

2.   惡意域名挖掘簡介

上一篇文章《騰訊安全威脅情報中心“明廚亮灶”工程:自動化惡意域名檢測揭密》介紹了一種利用有監督的機器學習模型檢測惡意域名的方法。本文將介紹一種基於圖分析技術的半監督和無監督的惡意域名挖掘演算法。本方法不僅能夠識別惡意域名,進一步還能夠挖掘惡意家族域名。


圖模型能夠很好表示安全實體與實體之間的關聯關係,在圖模型中可以作相關概率推導或者圖挖掘方法。本文主要利用圖模型中的兩種方法挖掘惡意域名:概率圖模型和圖聚類演算法。概率圖模型(Probability Graphic Model,PGM)是機器學習中一個重要的分支,把變數建模成圖節點,關係建模成圖的邊。通過觀察變數(observed state)已經關係推匯出未知變數狀態的概率。概率圖模型成功應用於醫學、影像處理等領域。概率圖模型分為兩種,一種是有向圖模型,又稱為貝葉斯模型,另一種是無向圖模型,又稱為馬爾科夫網路。圖聚類是利用圖的關係對圖的節點按照節點之間緊密程度劃分成不同的類簇。


本文首先利用海量資料構造圖,把域名關係建模成圖模型:1)使用圖推導(Graph Inference)推斷惡意域名為惡意的概率;2)利用無監督的圖聚類方法挖掘家族惡意域名。


利用域名資料,構建主機與域名的訪問關係二分圖。如果蜜罐主機H發起了域名D的DNS請求,在域名-主機二分圖新增一條邊連線主機H與域名D。如果兩個域名D1和D2屬於相同家族F,那麼感染家族F的主機很高概率會同時訪問家族F的域名D1和D2。感染相同家族的主機會訪問相同家族的C2域名,相同家族的C2域名會被感染主機同時訪問。根據Guilt by association的理論,如果一個主機訪問了惡意域名,那麼這個主機訪問的域名是惡意的概率會變得更高。並且感染相同家族的主機會訪問相同家族的C2域名,相同家族的C2域名會被感染主機同時訪問。 如圖1所示,中間三個紅色域名是相同家族域名,綠色域名錶示兩個高中學校官方網站;左邊5臺紅色主機表示感染了該家族惡意軟體的主機。從概率上來說,紅色域名被5臺主機同時訪問的概率較高。而兩個綠色域名在隨機條件下同時被大量主機訪問的概率較低。因此可以用域名的共同訪問主機數量來衡量域名關係的強度。假設訪問域名d1的主機集合為S1,訪問域名d2的主機集合為S2,如果S1與S2的交集包含元素越多說明d1和d2的關係越緊密。除白名單域名以外,例如,google.com、qq.com、baidu.com、taobao.com等著名域名,通常情況下大部分主機都訪問這些著名域名,其交集包含元素非常多,而這類域名對挖掘惡意域名並沒有影響。在處理時需要對資料降噪。

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖1 域名-主機二分圖


處理域名與域名關係時,使用交集包含的元素數量並不十分合理。如果使用交集,域名關係強度會被域名訪問頻次佔主導,惡意域名訪問頻次並不總是高頻次,此外,如果交集,在計算時必須兩兩計算,計算開銷巨大。因此本文使用Jaccard Similarity更為合理,這樣能夠把不同廣度域名用一種方式衡量。集合A與集合B的Jaccard Similarity定義為:

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

那麼域名d1和d2的關係,可以定義為:
騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

其中S1是訪問域名d1的主機集合,S2是訪問域名d2的主機集合。

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖2 方法的整體流程圖(圖片來自[1])


域名數量有千萬級別,如果要計算所有域名對的Jaccard相似度,計算複雜度是百萬億級,且可擴充套件性比較差。如果非要計算所有域名兩兩之間的Jaccard相似度,則沒有任何辦法去提升計算效率。但如果只關心那些Jaccard相似度較高的域名對,而jaccard相似度很低的域名對沒有必要關聯起來。那麼區域性敏感雜湊(Local Sensitive Hashing,LSH)演算法可以大幅提升計算效率並保留域名的關聯性。


使用區域性敏感雜湊演算法把域名對映到雜湊桶,在同一個雜湊桶的域名,它們的Jaccard相似度較高。把域名-主機訪問關係二分圖通過LSH演算法轉換成domain-bucket二分圖。根據LSH演算法的特點,域名與域名的Jaccard相似度越高,它們會以高概率落到更多的雜湊桶,域名關係可以通過bucket的數量來衡量。方法流程如圖2所示,利用少量已知的惡意域名和正常域名,使用Belief propagation演算法推導domain-bucket二分圖上未知域名為惡意的概率。除了對domain-bucket二分圖做概率推導,還可以對domain-bucket做無監督的圖聚類方法,聚類結果可以作為相同家族的惡意域名。無監督聚類方法流程如圖3所示。

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖3 無監督的圖聚類示意圖

3.  方法詳細描述

二分圖轉換——MinHashing與LSH演算法

域名-主機二分圖非常稀疏,域名與域名的關係如果不經過主機的“好壞”資訊,惡意域名的標籤很難通過稀疏二分圖傳播到未知域名。此外,要根據少量已知的惡意域名和白名單域名,在稀疏圖中推導未知惡意域名為惡意概率非常困難。


因此把域名-主機二分圖轉換成domain-bucket二分圖。


A.   MinHashing

有四個集合,分別有S1、S2、S3、S4,這裡可以看做是四個域名,集合有5個元素,這裡可以認為是5個域名a、b、c、d、e。域名a和d訪問了S1域名,依次類推。domain-host的關係可以用矩陣來表示,如圖4所示,4個域名5臺主機的關係矩陣,在真實環境中domain-host關係矩陣大約為千萬級*億級的矩陣。

MinHashing的目的是找到集合的簽名,但是又得保持集合兩兩之間的相似性。

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖4 集合的矩陣表示方法(圖片來自[2])


對行重新排列(repermutation),得到一個新的矩陣關係,重排後的關係矩陣與原始關係矩陣表示的內容完全一致。如圖5所示

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖5 重排後的關係矩陣


Minhashing對重排的關係矩陣做一個簡單的雜湊,雜湊值是排列的第一個“出現的”域名。h(S1) = a, h(S2) = c, h(S3) = b, h(S4) = a。可以證明任意兩個集合的雜湊值相同的概率等於這兩個集合的Jaccard相似度(證明參考Mining of Massive Datasets[2])。因此使用多個排列並取其雜湊值則可以作為集合的簽名。

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖6 把域名轉換為編號,使用兩個雜湊(圖片來自[2])


騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖7 兩個雜湊的簽名(圖片來自[2])


通常情況下使用幾百個雜湊表示集合的簽名,簽名保持了集合的Jaccard相似度的特性。如果域名相似度越高,簽名相同元素越多。

集合使用minhashing簽名表示雖然更簡單,但是如果使用暴力演算法計算集合之間的Jaccard相似度還是需要平方級別複雜度。因此,為了能夠較大概率把相似度較高的集合找到,需要用到LSH演算法。


B.   區域性敏感雜湊演算法

區域性敏感雜湊演算法能夠把Jaccard相似度較高的域名對映到一個bucket中,獲取相似域名只需要在同一個bucket中尋找即可,不需要對所有集合兩兩計算,大幅降低了相似域名的計算負責度。

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕


如表1所示,包含3個域名d1,d2,d3,包含6個Minhashing的簽名,表中出現了8臺主機h1, …, h8,把6個minhashing值分成3個band,每個band包含兩個hash值。每一個band中,該band裡所有的minhashing值相同(也可以用雜湊函式替代)則放到同一個bucket中。


如表1所示,band3中d2和d3的兩個minhashing都是h7與h6,因此d2和d3在相同的bucket中,d1則單獨在一個bucket中。需要說明,不同的band中計算雜湊可以用相同的雜湊演算法,但是需要不同的bucket,即不同band,如果minhashing相同也不會對映到同一個bucket。如果存在一個bucket包含兩個域名,那麼這兩個域名的相似度則不會漏掉。


只要域名相似度概率大於一定閾值,則這兩個域名至少會落在某個bucket中,被取出來,為什麼?


騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

因此可以調整r和b來調整期望的召回率(期望Jaccard相似度大於多少的時候能夠捕獲到這樣的域名對)

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖8存在一個bucket雜湊相同的概率與Jaccard相似度、r、b的關係(圖片來自[1])


詳細的minhashing與LSH演算法參考Mining of Massive Datasets[2]


C.   構建domain-bucket二分圖

通過區域性敏感雜湊演算法把域名對映到相同的bucket中,如何構建域名與域名的關係圖呢?兩種選擇,一種是域名與域名直接相連的圖,只要存在兩個域名存在於某一個bucket中,則新增一條邊。構成一個域名與域名相互連線的圖;另一種是構建二分圖,一邊為域名,另一邊為bucket。如果域名存在於某個bucket,則相應域名和bucket新增一條邊。構造的domain-bucket二分圖有兩方面特點:1)相似度大的域名通過bucket關聯(同家族高概率關聯);2)相似度小的域名無關聯(不同家族低概率關聯)


本方法選擇第二種方式構建二分圖,如圖3所示。因為第一種構建方法複雜度高;第二種方法能夠通過bucket間接關聯相似度高的域名。能夠間接從已知域名推導未知域名。也能夠通過圖聚類方法挖掘家族惡意域名。


D.   執行度傳播演算法(Belief Propagation)

置信度傳播演算法是一種近似計算非觀察變數概率的演算法。domain-bucket二分圖是無向圖,域名有兩個狀態(malicious或者benign),bucket也有兩個狀態。如果域名為惡意,那麼這個域名所在的bucket為惡意的概率會相應增加;如果bucket的狀態為“惡意”,那麼bucket所連線的域名為惡意的概率相應增加。

置信度傳播演算法線上性時間複雜度內近似估計了未觀察變數(未知域名)的邊緣概率分佈。能夠有效計算未知域名為惡意的概率。

具體置信度傳播演算法參考[3]


E.   圖聚類演算法

Fast unfolding演算法是一種層次貪心演算法優化圖的模組度。模組度也稱模組化度量值,是目前常用的一種衡量網路社群結構強度的方法。模組度定義如下:

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖9 Fast unfolding演算法步驟[4]


該演算法包括兩個階段並不停重複這兩個階段直到演算法收斂:

第一階段合併社群,演算法將每個結點當作一個社群,基於模組度增量最大化標準決定你哪些鄰居社群應該被合併。經過一輪掃描後開始第二階段,演算法將第一階段發現的所有社群重新看成結點,構建新的網路,在新網路上重複進行第一階段,這兩個階段重複執行,直到網路社群劃分的模組度不再增長,得到網路的社群近似最優劃分。


這個簡單演算法具有一下兩方面優點:

1) 演算法的步驟比較直觀並且易於實現,時間複雜度低

2) 演算法不需要提前設定網路的社群數,並且該演算法可以呈現網路的完整的分層社群結構,能夠發現線上社交網路的分層的虛擬社群結構,獲得不同解析度的虛擬社群;不需要提前設定社群數這一點在比較重,因為我們根本無法提前知道所抽取的子圖有多少個社團


F.   引數選擇

區域性敏感雜湊演算法需要確定Jaccard相似度大於多少位相似的域名。由於主機訪問域名的稀疏性,大部分主機除了共同域名會訪問較大量其他的域名。因此Jaccard similarity不會非常高,因此設定jaccard similarity大於0.25左右的時候就認為是相似的域名。根據jaccard similarity閾值選擇相應的band數目以及每個band的minhashing數量。選擇band b數為150,每個band數r為4。jaccard相似度s與至少存在同一個bucket的概率的關係如圖10所示。

騰訊安全威脅情報中心“明廚亮灶”工程:圖分析技術在惡意域名挖掘和家族識別中的應用揭祕

圖10r=4,b=150,jaccard相似度與“碰撞概率”


G.   過濾domain-bucket圖

因為置信度傳播演算法需要從已知域名(觀察變數,observed variable)推導(計算邊緣概率,marginal probability)未知域名(未觀察變數,unobserved variable)為惡意的概率。在domain-bucket二分圖中,如果一個連通分量僅僅包含未知域名或者僅僅包含已知域名,那麼這個連通分量不會推匯出任何有意義的資料,過濾掉這樣的節點。

4.   發現的惡意域名

本方法主要能夠發現以下幾類:

A.   Mykings的dga家族,mykings家族的dga大約1個月生成一次,一次大約100個左右,tld包括pw等。

B.   多種已知殭屍網路家族,如dorkbot、virut、chinad、conficker等

C.   色情、菠菜網站,動態域名。由於色情和菠菜網站使用者基本固定,並且色情網站為了逃逸黑名單檢測,經常更換站點域名

D.   通過概率圖模型的方法,把御見威脅情報中的域名,作為種子,每天推導發現與這些相關聯的惡意域名。

E.    噪聲,由於隨機訪問的關係,聚類不總是聚類出來都是同一個家族或者強關聯的,這一部分資料需要進一步通過安全規則進行去噪,例如訪問檔案、解析域名等關係進一步確認。

5.  方法優缺點及其改進方向

方案優缺點:

通過概率圖模型建模域名與域名的關係,通過已知域名的“好壞”推導未知域名“好壞”的概率。這種方法能夠有效地從資料集中通過少量已知域名推導關聯域名的“好壞”。能夠有效地識別惡意軟體連線控制伺服器域名的變種。

但是這種方法也存在一定缺陷,如果一個連通分量沒有標記域名,則這個連通分量裡的所有未知域名演算法不能夠感知到。


未來惡意域名分析點:

domain-host轉為為domain-bucket的方法是通過共同訪問主機比例衡量域名與域名之間的關係。此外,還可以通過域名解析到的IP地址來衡量域名與域名的關係。


[1]Guilt by Association: Large Scale Malware Detection by Mining File-relation Graphs

[2]http://www.mmds.org

[3]Factor Graphs and the sum-product Algorithm

[4]Blondel V D, Guillaume J L, Lambiotte R;. Fast unfolding of communities in large networks[J]. Journal of Statistical Mechanics: Theory and Experiment. 2008

相關文章