PDNS數據驅動DGA分析

這次介紹360netlab團隊最近的報告《PDNS數據驅動DGA分析》,原文請參見NANOG會議日程 NANOG 71幻燈片在這裡。

這篇報告描述了他們在一個實際業務系統里用DNS查詢數據捕獲分析DGA的工作。和之前專欄文章《從無效的DNS流量中檢測基於DGA的惡意程序》介紹的偏方法和理論的論文不同,「PDNS數據驅動DGA分析「把類似方法提升到產品業務水平,講述了他們在實際工程中利用實際收集的數據捕捉DGA的演算法和方法,並在報告里列舉了一個實際業務系統需要經歷的若干技術難點。這個報告也為工業產品的數據分析流程提供了一個很好的模版,它描述了數據獲得、數據篩選和清洗、數據建模、分析和理解結果、用第三方信息組合深入探索等若干步驟,對其他數據分析工作有一定參考意義。

惡意軟體的DGA C&C流量隱藏在DNS查詢數據里,所以擁有DNS查詢數據推送是第一步,該團隊利用自己的DNS查詢伺服器以及其他渠道收集DNS查詢數據並做分析。數據的篩選和清洗也是必不可少的工作,它需要對分析課題的特性有深入的了解。作者利用了DGA的短時特性、集中感染以及快速變化的特性,在百萬QPS的全量DNS數據里篩選了符合要求的DNS查詢作為數據建模的輸入。篩選後的DNS查詢滿足長尾特性,這也和多數DGA的行為吻合:DGA為了隱藏自己會產生很多無效DNS查詢,從而平攤到每個可能C&C域名的查詢量並不多。

數據建模上,作者利用了DGA感染IP的集中特性,認為感染IP和域名的二分圖有強相關,為了量化相關度,利用感染IP和域名的鄰接矩陣和自己的轉置相乘計算域名之間關聯,並用 Louvain 演算法按關聯分數將關聯的域名聚類,這些聚類結果可能指向為某個DGA族群。基於DGA的長尾特性,作者僅對長尾聚類,這也讓這個稀疏大矩陣相乘在工程上可行。

為了理解聚類結果,作者首先利用已知DGA比如conficker等驗證聚類,如果聚類重複發現了已知DGA,可以認為該聚類可行;同時也通過第三方知識驗證聚類結果是否指向某種惡意軟體。作者列舉了聚類結果里有若干種噪音,判定噪音並分析噪音的來源,這也是學術論文因為數據量太小涉及不到但是工業系統里佔比重很大的工作。

作者並不止步於聚類的結果,他們更進一步的工作是建立維護一個惡意軟體沙盒,通過沙盒動態分析捕捉惡意軟體的DNS請求,並和聚類結果對比聯繫沙盒的二進位和DGA族群。沙盒行為分析有效補充了基於DNS的DGA分析:它提供了DGA存在的確實證據,有效支持了阻斷系統;同時它的DNS流量數據也提供給沙盒分析進一步支持,比如定義了二進位文件的感染力度和威脅程度。

這份報告描述了DNS數據應用到DGA檢測的實際工作流程,展示了實際生產環境里數據分析的艱苦情況,裡面提到的各種方法對相關工作有很多指導意義。構建工業系統也有很多壁壘,比如數據壁壘,工程技術壁壘等,這份報告也描述了克服這些壁壘把實驗室方法放到產品里的實戰經驗。

很多數據科學和分析的初學者往往有一些不切實際的幻想,覺得數據科學的工作就是拿一份清晰漂亮的數據丟給模型調調參數就可以了,而構建一個工業級的業務系統情況遠比這個複雜,作者能夠提出這些方法解決實際問題,也建築在他們對自己的課題和數據有深入了解的情況下,從數據收集到篩選到聚類的矩陣相乘,其中很多技術難點,只有對業務和數據有深入理解才可以完成。這篇報告英文標題為「A DGA Odyssey: PDNS Driven DGA Analysis「,可能描述了該團隊工作的心路歷程:從一個可行的理論成果到一個實際能用的工業級業務系統,其構造的過程就是奧德修斯歷經千難萬險和風暴、獨眼巨人等搏鬥最終回到家鄉一樣艱辛。這些艱辛在工業系統里的有效的區分了不同研究組和公司的產品競爭力,通俗點說就是,坑都要踩,誰先踩完誰就贏得競爭。

題圖來自於 Lynx cat Photo: Bobcat Kittens 遵循非商業使用準則。


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


推薦閱讀:

數據挖掘|K-means聚類
巡洋艦AI時代招你遠征
運營汪別委屈了,教你如何打一場漂亮的「翻身仗」
機器學習基石-- Learning to Answer Yes/No

TAG:信息安全 | 网络安全 | 数据挖掘 |