這次介紹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並搜尋“安全資料與機器學習“或者點選

http://

t。xiaomiquan。com/IIqZV7

Y

接受邀請。