從無效的DNS流量中檢測基於DGA的惡意程序
全文請參閱 從無效的DNS流量中檢測基於DGA的惡意程序 - Kakapo
《從無效的DNS流量中檢測基於DGA的惡意程序》是一篇利用DNS數據做安全分析和建模的經典文章,它利用了惡意軟體的域名生成演算法(DGA)在DNS數據中的特性和本身的隨機性等特徵,把惡意軟體的DNS查詢和合法查詢區分,從而判斷惡意軟體的存在。這篇文章開拓了用DNS數據分析和建模檢測惡意軟體的研究方向,其思路和方法對後續諸多研究工作都有重要影響。
尋找惡意軟體C&C域名的傳統方法一般是蜜罐捕捉向外DNS流量或者二進位逆向工程,所以攻擊者一般會按照一個約定的隨機方法生成一系列可能的域名並挑選一個來使用,這有效的避開了蜜罐和逆向,而對付這種方法的逆向工程需要完整逆出DGA演算法,這對逆向要求很高。
這篇文章抓住了DGA系列方法的重要特點:惡意軟體如果需要尋找到那個特定的真實C&C必須把內置的DGA都跑一遍才能按照DNS伺服器反饋的IP找到真實C&C,所以DNS解析軟體會記錄下所有的DGA域名DNS請求,並且因為攻擊者只挑選許多DGA域名中的少數當作真實C&C其他域名反饋都是NXDOMAIN(不存在域名),只分析這些「不存在域名」的DNS請求反而清除了不少可能誤判的雜訊。
文章給出的方法是利用域名字元分布的統計特徵以及其他網路特徵(比如訪問IP的二分圖)當作模型的輸入來訓練一個分類器,這些統計特徵量化描述了安全研究員腦內的多年經驗,包括位元組的分布,TLD的分布等等,因為合法域名看起來不那麼隨機難記,也不會用五花八門的TLD等。作者用已知DGA和合法域名集合訓練分類器,在一個由真實DNS解析伺服器記錄的數據集上達到了不錯的效果。
這篇文章開拓了DNS數據分析和建模檢測惡意軟體的研究方向,其意義很重大:現今很多網路數據都被收集記錄,如果有足夠好的特徵工程和業務思路,機器可以做到自動化輔助。不過這篇文章也有自己的局限,比如他的訓練集使用的DGA並不夠全面,有很多比如suppobox之類的DGA為了掩蓋自己的隨機性使用了英語和人名字典等方法,它的特徵工程也過分依賴於人工,包括特徵提取和特徵選擇都需要人工經驗,這對一個想推到工業水平的業務系統還有很長的路。
在這個開拓性工作之後,有很多利用DNS數據做惡意軟體偵測分析的後續工作,比如最近的一篇文章 [1709.07102] Automatic Detection of Malware-Generated Domains with Recurrent Neural Models 把上面這篇文章關於域名本身字元分布的特徵利用了RNN做了自動化處理,在較大的數據集上取得了不錯的效果,也值得深入閱讀。
題圖來自於 Cat Images · Pexels · Free Stock Photos 遵循非商業使用規則。
大家好,這是「安全數據與機器學習」專欄的第一篇文章。這個專欄配合我們的小密圈/知識星球群組「安全數據與機器學習」和我們的blog專欄 Kakapo - 一個機器學習社區 ,給各位安全屆的朋友提高鍛煉數據建模和機器學習的知識。我們會不定期尋找一些優秀的文章,在這裡寫上摘要和導讀,引導大家前去深入學習。如果想參與「安全數據與機器學習」的討論,請下載「知識星球」app並搜索「安全數據與機器學習「或者點擊 http://t.xiaomiquan.com/IIqZV7Y 接受邀請。
推薦閱讀: