域名關聯模型:讓惡意軟體自我暴露

這次介紹我自己團隊的一篇文章 「Domain Correlation: just let the malware beat itself」 。我在我的微博上寫過簡介,鑒於它是我最近自我感覺比較好的工作,我決定簡單評論一下,並藉此談談我對自動威脅發現這個方向的想法。

這篇文章介紹了我們對DNS查詢數據建模,利用某些惡意軟體的多個C&C會形成DNS查詢序列的特點,通過模型計算讓惡意軟體行為通過聚類的方式自我暴露。這個工作的思路是這樣的:

  1. 根據DNS查詢數據,對所有的域名的查詢序列做表示學習,通過最大化序列窗口內共現的概率將每個域名表示為一個空間向量,這樣向量的內積即可表示為域名的關聯打分。
  2. 利用惡意軟體的域名多數為從未出現的新域名這一特性,取得在模型時間段內從未出現的新域名列表和他們的向量表示。
  3. 通過聚類的方法將高度關聯的域名向量聚到同一類,並根據每一聚類的其他行為特徵標定惡意軟體類型,如不能標記,即列為可疑並根據業務需求做處理,比如推送到高危列表等做限流或者進一步研究。

接下來的理論討論之前先上一張t-SNE對這些聚類生成的可視化截圖,圖中 NewGOZ 這個惡意軟體DGA生成的域名被聚類方法自動找到,並高亮為淺紫色雲團。原帖里連接到了Youtube視頻,觀眾朋友如果可以連上的請選擇至少720p 60fps觀看保證最好的酷炫效果。

以上是領導喜歡看的可視化,而我們團隊更加喜歡的是這個工作本身,其主要原因在於它符合我們對自動威脅發現的想法。

完成自動化威脅發現當中若干絆腳石的之一是特徵的提取,現在很多工作在於人力的規則和一些人為定義的特徵規則,好處是容易解釋,但是壞處是掛一漏萬並且還有很多規則其實並不對,只是大家礙於某神某牛某大的面子不好說。機器智能的可愛之處不僅在於給定特徵規則可以訓練模型,也在於給定規則它可以從數據里學習特徵。2013年的word2vec這個工作以及其他的自然語言理解方向的表示學習給了我一些啟發:用於自然語言理解的表示學習建立在「單詞-文檔「的二分圖上,它通過單詞序列的學習將單詞的相似度表達為簡單的向量內積而並不需要任何預先定義的知識,那麼類似的想法放到DNS查詢序列里就是「域名-客戶端」的二分圖,它就可以同樣不需要預定義知識而學習到域名之間的關聯。至於圖的表示學習的知識,請參閱概率圖模型相關書籍和論文。

自動化威脅發現絆腳石之二在於,模型應該減少人類在推斷階段的干預。模型的建立分為訓練階段(Training)和推斷階段(inference),訓練模型階段接收數據訓練模型,推斷階段即接收數據並給出結果。比如利用「域名-客戶端」的二分圖學習域名之間的關聯並聚類已經存在多個優秀的工作,比如之前這篇專欄提到的360 netlab團隊關於DGA的工作,以及HP和Damballa團隊基於圖的置信傳播方法等等,他們的訓練階段利用定義的函數標定圖節點之間的權值,推斷部分利用louvain演算法或置信傳播公式給出聚類結果。這些工作在推斷階段的參數需要研究人員調整,其中包括比例常數和分數閾值等,而這些參數並沒有直接的物理意義,推斷的時候還是擺脫不了人為干預實現自動化,簡單說就是要跟著調。基於表示學習和聚類的工作把這些人為干預放在訓練模型階段:通過訓練一個足夠好的模型可以重複發現已知的惡意軟體行為並排除已知非惡意行為來穩定系統參數,在模型推斷過程中只需要極少參數和簡單代數計算即可完成,這些推斷過程里的參數可以長時間穩定有效,提高了模型自動化可用性。

自動化威脅發現絆腳石之三在於,模型應該儘可能普適,一模多用而不是一個問題一個模型跟著跑。這篇文章里談到的通過聚類的自動發現只是一種方式,域名關聯模型這個引擎在我們工作中給其他自動化分析系統提供關聯情報,根據已知威脅推斷未知威脅等等,套用到不同方向可以達到不同用途,有效復用了投入到模型上的工程資源,這在實際業務上有一定意義。

當然自動威脅發現這個方向有很多可以談,這個工作里其他有意思的方面也因為篇幅和現在公司政策的原因不多贅述,其中包含可疑域名的初選方法,建立模型流程的一些工程挑戰等,有機會再寫一些文章分享談談。這篇簡評只是談談這個工作的核心也就是我對自動威脅發現的一些想法,至於其他部分,還是那句話,從一個實驗室想法到一個工業級可用的系統其中需要走很多路,大家共同加油。

題圖來自於Cute Photogenic Kitten Free Stock Photo - Public Domain Pictures 遵循非商業使用原則。


大家好,這是「安全數據與機器學習」專欄的第六篇文章。這個專欄配合我們的小密圈/知識星球群組「安全數據與機器學習」和我們的blog專欄 Kakapo - 一個機器學習社區 ,給各位安全屆的朋友提高鍛煉數據建模和機器學習的知識。我們會不定期尋找一些優秀的文章,在這裡寫上摘要和導讀,引導大家前去深入學習。如果想參與「安全數據與機器學習」的討論,請下載「知識星球」app並搜索「安全數據與機器學習「或者點擊 t.xiaomiquan.com/IIqZV7 接受邀請。

推薦閱讀:

新手學機器學習一個月後,一些第一手乾貨分享
李宏毅機器學習2016 第十五講 無監督學習 生成模型之 VAE
從Nesterov的角度看:我們為什麼要研究凸優化?
想學習「機器學習」,需要學習哪些先導課程?
目標檢測(5)-Faster RCNN

TAG:网络安全 | 机器学习 | 神经网络 |