DNS異常檢測在安全方向的多個應用
這次介紹的blog文章還是來自於我們團隊,「The Many Security Usages of Anomaly Detection」。在DNS這個基礎架構上,看見數據的能力決定了看見安全事件並作出機動反應的能力,而對DNS數據的異常檢測是裡面的重要技術之一。這篇文章介紹了一些和安全事件有關聯的異常檢測,包含隨機二級域名DDoS攻擊(PRSD),DNS反射放大攻擊,DNS隧道以及實時新核心域名。文中提到的數據僅包含DNS查詢數據,即用戶客戶端向DNS緩存/遞歸伺服器發送的查詢請求。
1。 PRSD 隨機二級域名DDoS攻擊
這是從2013年年末開始我們在DNS查詢數據里檢測並阻斷的一種DDoS攻擊模式。它的攻擊方法是通過發送大量的 {random}.http://target-name.com 這樣的DNS查詢請求耗盡DNS伺服器的緩存資源來逼迫DNS伺服器做遞歸查詢從而擊垮該域名所在的auth server從而阻斷該域名的訪問達到DDoS攻擊的目的。它在2013-2015年的初期攻擊效果很好,因為當時對DNS伺服器的防護是各家軟肋,這些攻擊也連帶其他流量攻擊方式一併出擊,幾乎可以有效打掉很多服務,更討厭的是每次攻擊都會連帶損失運營商DNS查詢資源。2014年後半段隨著 Cloudflare 等公司的防護服務加入,這種攻擊方式更加升級到更高的強度,我們觀測到多個500 Gbps或以上的攻擊。
我們團隊從全球多個國家地區的緩存/遞歸DNS獲得實時查詢數據,可以在數據里清楚的看到這些攻擊開始的時間和攻擊目標並作細粒度封禁和過濾。檢測這種攻擊的方法是對於每個核心域名的獨立二級域名數做異常檢測,包含長時間平均以及短時間的滑動平均等作為基線,如果在實時數據里檢測有超越基線若干sigma,即觸發異常並自動分析該域名當前的行為和生成細粒度過濾規則判別攻擊流量,保證合法查詢通過而攻擊流量被丟棄。其實這裡的工程挑戰比檢測異常更難,對於若干百萬級QPS的實時數據流做到穩定實時監控十億級別的域名的獨立二級域名數並計算異常和生成策略還是不太容易的,所以我們把它放在第一位談談。
2。DNS反射放大攻擊
這是一個比較傳統的攻擊方法,幾乎是反射放大攻擊里流量最高的,最近有一些新的變化。它的基本原理是設置或選取一些查詢結果比較大比如接近4000位元組的域名,在DNS查詢的udp包里偽造IP指向攻擊目標伺服器,通過肉雞耗費較小帶寬向查詢伺服器發送大量查詢請求,這樣查詢伺服器把這些海量的巨大查詢結果返回給目標伺服器,達成DDoS的目的。這種攻擊主要目的是消耗帶寬,常見的方法利用DNS的ANY(255)請求,把該域名所有信息全部返回從而最大化攻擊效果,達到同樣效果的查詢請求也有TXT等。
作為一個常規武器的防護,很多DNS查詢伺服器都內置了一些規則,比如對於可能產生攻擊的ANY請求,DNS伺服器會要求trunc並要求客戶端切換為TCP模式以確認真實IP。不過這樣的做法對於大規模攻擊效果並不好,因為TCP模式會消耗DNS伺服器很多其他計算資源,相當於DNS伺服器把鍋扣到自己頭上。通過異常檢測,我們觀測到對於ANY和TXT兩種DNS查詢里出現了若干峰位,這些峰的高度有時可以達到整個區域DNS查詢帶寬的五到十倍。通過異常檢測,我們可以給我們的智能DNS提供威脅情報供進一步自動策略。
3。DNS隧道
與PRSD和反射放大不同的是,DNS隧道不構成DDoS攻擊卻和一些APT攻擊相關。DNS隧道利用一些包含信息量的編碼字元串和一個/若干域名,把這些編碼字元串當做這些設定域名的二級域名發送查詢,這樣接收查詢的DNS伺服器即可收到這些二級域名,再根據一定規則比如時間規則等解碼鏈接達到信息隧道的目的。在我們的數據里觀察到的DNS隧道流量遠小於其他DDoS攻擊流量,但是它可以被用來躲避運營商收費,該技巧常用於利用機場等收費Wi-Fi或者其他安全目的,更可怕的是,DNS隧道也被發現應用於從企業內部盜取信息,比如編碼傳輸某些較小的文檔,以躲開企業網路的流量監管。
對於DNS隧道的檢測,我們利用了它的信息特徵。這些二級域名請求並非像其他DDoS攻擊一樣完全隨機,而是包含一定信息,其量化表示為香農熵和其他相關特徵。通過這些特徵我們訓練了隧道流量異常檢測,只需要極少的查詢就可以快速有效的自動甄別。
4。實時新核心域名
這是我們定義的一種異常,應用於廣義的安全事件。它基於安全研究員的知識,即很多惡意行為的DNS查詢例如C&C例如釣魚等都並不是長期存在的,而這些惡意域名有強烈的時效性,所以一個域名是「新的」即是異常。注意,這裡的的新域名指的是核心域名,比如 http://google.com 並不是一個新核心域名。
這種異常的意義在於提供了其他數據模型做深入分析的入口,比如上一篇專欄提到的關聯模型就可以對這些新核心域名聚類利用惡意域名相似性做非監督的發現。同時這種異常捨棄了一些已存在的惡意行為換取了計算量的降低,其他複雜模型工作比如釣魚欺詐識別等也可以在新域名上快速進行。在我們工作中觀察到,現在的惡意軟體行為時效性越來越強,有些域名只會使用幾個小時就丟棄,實時新核心域名的異常檢測有很重要的意義。
對於新域名發現有諸多實現,市場上有比如OpenDNS的Newly seen domains,Farsight的Newly observed domains(授權給Infoblox)等實現。這些實現的問題在於實時性太低,最快也至少是小時級別的更新,而我們的新核心域名發現和其他實現不同體現在我們的方法是毫秒級實時發現,在這裡有一個demo演示實時數據流和發現數據流(需要youtube鏈接),這個實時系統的工程實現挑戰可以等以後有機會單獨寫一篇文章說明。
總結一下。在數據里「看見的能力」之一是異常檢測的能力,當今的安全威脅快速變化,它要求安全公司有更快速更實時的異常檢測,以提供威脅情報和為其他深入分析模型提供輸入。在異常檢測里,規則和模型都各有用武之地,組合起來做好異常檢測大有可為。
題圖來自於Free Images 遵循非商業使用原則。
大家好,這是「安全數據與機器學習」專欄的第七篇文章。這個專欄配合我們的小密圈/知識星球群組「安全數據與機器學習」和我們的blog專欄 Kakapo - 一個機器學習社區 ,給各位安全屆的朋友提高鍛煉數據建模和機器學習的知識。我們會不定期尋找一些優秀的文章,在這裡寫上摘要和導讀,引導大家前去深入學習。如果想參與「安全數據與機器學習」的討論,請下載「知識星球」app並搜索「安全數據與機器學習「或者點擊 http://t.xiaomiquan.com/IIqZV7Y 接受邀請。
推薦閱讀:
※評價一下h2o.ai 的開源機器學習平台?
※吳恩達深度學習課程課後習題(第一課第三周)
※深度學習一行一行敲faster rcnn-keras版(目錄)
※[Practical ML] Factorization Machine
※如何入門深度學習?