一種DomainFlux數據流的檢測系統和方法
2023-06-13 06:34:41
專利名稱:一種Domain Flux數據流的檢測系統和方法
技術領域:
本發明涉及網絡安全技術領域,更具體地,涉及一種檢測Domain Flux(域名流 動)數據流的系統和方法。
背景技術:
計算機面臨的安全威脅數不勝數,近年來出現的殭屍網絡有著更為嚴重的危害 性,殭屍網絡是通過入侵網絡上的主機構建的、可被攻擊者遠程控制的並且用來發起後續 攻擊的攻擊平臺。殭屍網絡的組成部分包括殭屍程序(bot)、命令控制通道(Command & Control Channel, C & C)和控制者(botmaster)。控制者通過C & C向殭屍主機發出命 令,運行在殭屍主機上的bot程序負責執行命令。可見,殭屍網絡比傳統的惡意代碼、攻擊 行為有著更為嚴重的危害性。可控性是殭屍網絡的本質屬性,如果殭屍網絡的C & C能夠被檢測並關閉,殭屍網 絡也就土崩瓦解了。傳統的殭屍程序採用硬編碼C & C server的IP或者域名的方式來尋 找控制者,這種方式的C & C很容易被關閉。近來,一種稱為Domain Flux的技術被用作C & C server的尋址,Domain Flux技術在bot程序內硬編碼一套與控制者共享的算法,該算 法根據一些動態信息(例如當前時間)生成一個動態域名池。bot程序輪詢該域名池來找 到命令集結點,從而能夠保證無論以前的集結點是否被關閉,bot程序總是能夠找到新的集 結點ο採用Domain Flux技術的botnet通信過程如下1) Domain Flux算法生成當前可 用的域名池;2)控制者從該域名池中隨機選擇一個域名,用作本次通信的集結點;3)控制 者註冊該域名,使用該域名作為伺服器域名,並將控制命令發布於此伺服器;4)bot程序依 次訪問域名池中的域名;5)如果訪問域名成功,並且成功獲得經過驗證的控制命令,本次 通信結束;否則,重複步驟4。Domain Flux技術的優勢在於它提供了足夠的動態冗餘,即使域名生成算法被破 解,也只能得到集結點池,無法得到精確的集結點域名。而生成算法可以引入更多的隨機 性,使得域名池的規模很大,變化速度很快,生成的域名與可信的域名幾乎沒有區別,防禦 者無法關閉域名池中的所有域名,那麼破解算法對於殭屍網絡的防禦工作來講,意義不大。一般地,Domain Flux技術中的動態域名生成算法都採用隨機字符串+固定後綴 或者固定前綴+隨機字符串或者固定前綴+隨機字符串+固定後綴的形式。動態生成算法 主要負責生成隨機字符串,而固定詞綴都是硬編碼在bot程序中。因此,不難得出,Domain Flux技術具有如下特徵1)為了控制命令的快速下發,bot程序都會在短時間內發起大量 的DNS查詢請求,因此,一個時間窗口內會有大量的DNS查詢;2)所查詢的域名具有相同的 最大公共子串;3)被註冊用作C&C的域名在域名池中所佔比例很小,DNS伺服器能夠解析 出A記錄的比例很小,明顯相異於正常應用。Domain Flux技術建立在域名解析的基礎之 上,域名解析提供了從域名到IP的轉換服務,而IP才是真正的網絡通信中採用的地址。下 面描述域名解析的過程1)、客戶端發起域名解析請求,並將該請求發送給本地的域名伺服器;2)、當本地的域名伺服器收到請求後,就先查詢本地的緩存,如果有該紀錄項,則本地的 域名伺服器就直接把查詢的結果返回;3)、如果本地的緩存中沒有該紀錄,則本地域名服務 器就直接把請求發給根域名伺服器,然後根域名伺服器再返回給本地域名伺服器一個所查 詢域(根的子域)的主域名伺服器的地址;4)、本地伺服器再向上一步返回的域名伺服器發 送請求,然後接受請求的伺服器查詢自己的緩存,如果沒有該紀錄,則返回相關的下級的域 名伺服器的地址;5)、重複第四步,直到找到正確的紀錄;6)、本地域名伺服器把返回的結 果保存到緩存,以備下一次使用,同時還將結果返回給客戶機。目前,對於採用Domain Flux技術的botnet的防禦尚無良好方法,只能採用黑名 單法。黑名單法將確認作為殭屍網絡C & C使用的域名加入黑名單(malicious domain list),採取技術手段阻止殭屍主機和這些域名之間的通信,採取非技術手段關閉這些域 名。該方法的主要缺點在於被動性和滯後性。要想將一個很大的域名池中的域名按照這種 方法處理,攻擊者完全有可能在域名池中的域名被封鎖之前,升級新的算法。從而保證C & C不被切斷。該方法嚴重依賴於malicious domain list,具有較大的滯後性,無法滿足實 時需求。
發明內容
為克服上述現有技術的缺陷,本發明提出一種檢測Domain Flux數據流的方法, 該方法涉及殭屍網絡的防禦,涉及一種在網絡邊界上採用監聽數據包的方式來檢測Domain Flux數據流的方法。根據本發明的一個方面,提出了一種檢測Domain Flux數據流的系統,包括監聽模 塊、資料庫操作模塊和計算窗口最大公共子串的模塊;其中,監聽模塊用於監聽並分析出入網關的數據流,獲取DNS查詢請求數據包和 DNS應答包,並提取源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息;資料庫操作模塊,用於將監聽模塊提取的源IP位址、待查詢的DNS、時間戳、DNS對 應的A記錄信息記錄在資料庫中;計算窗口最大公共子串的模塊,用於計算時間窗口內任意兩個請求的DNS的最大 公共子串,並對最大公共子串出現的次數計數來確定窗口最大公共子串。根據本發明的另一方面,提出了一種檢測Domain Flux數據流的方法,包括步驟10)、監聽並分析出入網關的數據流,獲取DNS查詢請求數據包和DNS應答包, 並提取源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息;步驟20)、將監聽模塊提取的源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄 信息記錄在資料庫中;步驟30)、計算時間窗口內任意兩個請求的DNS的最大公共子串,並對最大公共子 串出現的次數計數來確定窗口最大公共子串。本發明可以實時地確定DNS查詢數據流是否屬於Doma in Flux數據流。一般地, botmaster為了實現控制命令的及時下發,要求Doma in Flux技術能夠較快地找到C & C, 因此,本方法中的時間窗口可以很小,從而實時地檢測Doma in Flux數據流。本方法無需malicious domain list。本方法是在分析了 Domain Flux技術的行 為特徵基礎上提出來的,具有很強的針對性。不需要黑名單,而是通過Domain Flux的行為模式來檢測Domain Flux數據流。相反地,本方法有助於建立malicious domain list 在 檢測到Domain Flux數據流之後,DNS伺服器應答的A記錄即為malicious IP。對應的DNS 和該IP即構成了 malicious domainlist的一個記錄。該方法有助於發現未知的bot程序。如果未知的bot程序採取Domain Flux技術 尋址C & C,該方法在檢測到Domain Flux數據流的同時,記錄了數據的來源,在該主機上過 濾數據包,即可得到未知bot程序的樣本。
圖1示出DNS查詢過程示意圖;圖2示出Domain Flux技術的流程圖;圖3示出檢測Domain Flux數據流的系統運行示意圖。
具體實施例方式下面結合附圖和具體實施例對本發明提供的一種檢測Domain Flux數據流的系統 和方法進行詳細描述。總的來說,本發明提出了一種在網絡邊界處檢測Domain Flux流量的方法。該方 法針對背景技術中提到的Domain Flux技術的三個特徵,偵聽並記錄區域網內所有的DNS 查詢數據流,計算同一個時間窗口內的最大公共子串出現的次數及DNS解析失敗的概率, 據此計算當前窗口內數據流是否屬於Domain Flux數據流。該方法能夠實時檢測到Domain Flux流量的存在,並能夠確定該數據流的來源,從而推測出區域網內主機感染了 bot程序。在根據本發明的一個實施例中,提供一種在網絡邊界處檢測Domain Flux流量 的系統,其中該系統包括監聽模塊S、資料庫操作模塊D和計算窗口最大公共子串的模塊 (WLCS)。其中,一個時間窗口內任意兩個DNS都包含一個最大公共子串,對這些最大公共子 串出現的次數進行計數,出現次數最多的最大公共子串稱為「窗口的最大公共子串」。監聽模塊用於監聽並分析數據流,該模塊監聽出入網關的數據流,從中分析出DNS 查詢請求數據包和DNS應答包,並提取源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄 fn息ο資料庫操作模塊,負責將監聽模塊解析出的源IP位址、待查詢的DNS、時間戳、DNS 對應的A記錄信息記錄在資料庫中。同時,負責在時間窗口結束之後清理資料庫記錄,因 為本方法是狀態獨立的,幾個時間窗口並不存在關聯性,刪除資料庫記錄可以避免資料庫 記錄越來越多。需要指出的是,該實現過程只要能夠記錄一個時間窗口內的DNS數據即可, 並不一定使用到資料庫系統,任何能夠按照發明中提到的4個欄位記錄一個時間窗口內的 DNS數據的技術手段都可採用,都屬於本方法的適用範圍。用於計算窗口最大公共子串的模塊WLCS,採用最大公共子串算法(LCS)計算時間 窗口內任意兩個請求的DNS的最大公共子串,並對最大公共子串出現的次數計數,出現次 數最多的即為窗口最大公共子串。需要指出的是,計算窗口最大公共子串的算法有很多,只 要能夠得出窗口最大公共子串及其在本時間窗口內出現的次數即可,都屬於本發明涵蓋的 範圍。進一步地,在區域網的網關處監聽區域網內所有的DNS查詢,記錄查詢的源IP、要查詢的域名、查詢時間及DNS伺服器的響應,如果在一個時間窗口之內,特定主機發起的 DNS查詢具有如下特徵1)窗口的最大公共子串出現的次數超過閾值;2)窗口的最大公共 子串對應的DNS查詢得到的DNS伺服器應答為「未找到域名對應的A記錄」的頻率超過閾 值;則認為該主機正在採用Domain Flux技術尋址C & C。 由於可以記錄發出的DNS查詢及DNS伺服器的響應,可以得到域名與IP的對應關 系,而Domain Flux尋址的結束條件是找到了經過驗證的C & C或者域名池輪詢完畢,因此 在網關處可以確定哪個DNS是malicious domain。根據Domain Flux數據流的源IP,可以 確定該主機感染了 bot程序。另外,網內其他主機如果查詢同樣的域名,網關處可以修改 DNS伺服器的返回值,從而阻止其它已感染主機獲得控制命令。
具體地,對於監聽模塊監聽數據流並對其分析的一般過程如下1)獲取網絡適配器列表;2)打開網絡適 配器;3)捕獲數據;4)根據協議特徵,分析數據流並提取信息。其中,對於捕獲數據流有幾點說明1)監聽模塊基於winpcap開發。但是,捕獲數 據流的方法有很多種,只要能夠捕獲到所有通過本地網卡的數據包即可,都屬於本發明涵 蓋的範疇;2)捕獲數據包部分不是本發明闡述的重點且資料豐富,故不加以詳細敘述,以 下從數據包的處理開始。定義結構體,以存儲從DNS數據包中提取的信息。首先判斷數據包是否是DNS請求包,若不是,返回FALSE。若是,從數據包中解析出 發起DNS查詢的源IP位址、待查詢的目的地址以及時間戳,將這些信息返回到結構體DNS Request中。如果上述操作成功,則返回TRUE,否則,返回FALSE。首先判斷數據包是否是DNS應答包,若不是,返回FALSE。若是,從數據包中解析出 該包的目的IP位址、DNS及其對應的IP位址,返回到結構體DNSResponse中。成功,則返 回 TRUE。對於資料庫操作模塊準備工作安裝MySql資料庫系統(其它資料庫系統也可),設計資料庫表的格式 如下
Source IPRequested DNSTime StampDNS A Record將監聽到的DNS請求記錄在資料庫中。如果該主機發出的DNS查詢已有記錄,則 在該主機對應的資料庫表中增加新的記錄,按欄位將主機IP、要查詢的DNS、發出查詢的時 間戳記錄在資料庫中。若該主機IP在資料庫中尚無記錄,則新建記錄。操作執行成功,返 回TRUE ;操作失敗,返回FALSE。將監聽到的DNS伺服器的應答記錄在資料庫中。首先在資料庫中按照DNS應答包 中的目的IP、查詢的DNS查找相應的記錄,然後將查詢的DNS對應的A記錄記錄在該記錄的 DNS A Record欄位中。操作執行成功,返回TRUE ;操作失敗,返回FALSE。查找資料庫的Source IP欄位,刪除該欄位對應的數據記錄。對於計算窗口最大公共子串的模塊處理單個IP —個時間窗口內的DNS查詢記錄,判定是否是Domain Flux流量。對於同一個時間窗口內的記錄,使用LCS算法(其它求最大公共子串的算法也可)計算任意兩條記錄的最大公共子串。並對所有的最大公共子串出現的次數進行計數,出現 次數做多的最大公共子串即為窗口最大公共子串,記錄窗口最大公共子串及其出現次數。如果窗口最大公共子串出現的次數小於預設的閾值,則該時間窗口內的DNS查詢 數據流並不是Domain Flux數據流;否則,統計包含有窗口最大公共子串的DNS查詢的結 果,計算資料庫中A記錄為空的概率,若該值超過預設的閾值,則認為該時間窗口內的DNS 查詢數據流屬於Domain Flux數據流。否則,該數據流不屬於Domain Flux數據流圖3為系統運行示意圖,該方法應工作在網絡邊界處,即圖中所示網關之上。表1 所示為監聽和記錄所得的數據記錄(表中DNS IP處空白表示DNS伺服器找不到該域名對 應的A記錄),以下從計算窗口最大公共子串開始說明。設定時間窗口為30秒。如果屬於正常用戶瀏覽網頁或其他合法用途引起的DNS查 詢,單個IP發起的查詢數量在30秒內不會超過5次。而且正常應用中,DNS查詢失敗的概 率也是很小的,設定為5%。對一個時間窗口內的數據首先進行窗口最大公共子串的計算, 不難得出,本次實驗中的窗口最大公共子串為dyndns.com,且其共計出現8次。其次,包含 有窗口最大公共子串dyndns. com的DNS查詢的失敗率為100% (DNS查詢返回的A記錄為 空,認為DNS查詢失敗),遠遠大於設定的失敗閾值。綜上,可以確定該時間窗口內的DNS查詢數據流屬於Domain Flux數據流。另夕卜, 由Source IP可以推知主機10. 0. 0. 11感染了一種採用domain flux技術作為C & C的 bot程序。進一步地,在主機10. 0. 0. 11上對數據包進行過濾,可以得到bot程序樣本;一 旦Domain Flux數據流中某一個查詢獲得了 DNS對應的A記錄,可以把該DNS及其IP加入 到malicious domain list中;如果檢測到區域網內其它主機也有著同樣的窗口最大公共 子串,可以在網關處修改DNS伺服器的返回,從而阻斷bot host與master的通信。
權利要求
一種檢測Domain Flux數據流的系統,包括監聽模塊、資料庫操作模塊和計算窗口最大公共子串的模塊;其中,監聽模塊用於監聽並分析出入網關的數據流,獲取DNS查詢請求數據包和DNS應答包,並提取源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息;資料庫操作模塊,用於將監聽模塊提取的源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息記錄在資料庫中;計算窗口最大公共子串的模塊,用於計算時間窗口內任意兩個請求的DNS的最大公共子串,並對最大公共子串出現的次數計數來確定窗口最大公共子串。
2.權利要求1的系統,其中,窗口的最大公共子串是一個時間窗口內DNS都包含的、出 現次數最多的最大公共子串。
3.權利要求1的系統,其中,所述資料庫操作模塊用於在時間窗口結束之後清理數據 庫記錄,並且僅需記錄一個時間窗口內的DNS數據。
4.權利要求1的系統,其中,當特定主機發起的DNS查詢獲知窗口的最大公共子串出現 的次數超過閾值並且窗口的最大公共子串對應的DNS查詢得到的DNS伺服器應答為「未找 到域名對應的A記錄」的頻率超過閾值,則該系統確定該主機正在採用Domain Flux技術尋 址 C & C。
5.權利要求1的系統,其中,所述監聽模塊還用於獲取網絡適配器列表,打開網絡適配 器,捕獲數據並且根據協議特徵來分析數據流並提取信息。
6.一種檢測Domain Flux數據流的方法,包括步驟10)、監聽並分析出入網關的數據流,獲取DNS查詢請求數據包和DNS應答包,並提 取源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息;步驟20)、將監聽模塊提取的源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息 記錄在資料庫中;步驟30)、計算時間窗口內任意兩個請求的DNS的最大公共子串,並對最大公共子串出 現的次數計數來確定窗口最大公共子串。
7.權利要求6的方法,其中,步驟30)中,窗口的最大公共子串是一個時間窗口內DNS 都包含的、出現次數最多的最大公共子串。
8.權利要求6的方法,其中,步驟20)中,在時間窗口結束之後清理資料庫記錄,並且僅 需記錄一個時間窗口內的DNS數據。
9.權利要求6的方法,其中,步驟30)還包括當特定主機發起的DNS查詢獲知窗口 的最大公共子串出現的次數超過閾值並且窗口的最大公共子串對應的DNS查詢得到的DNS 伺服器應答為「未找到域名對應的A記錄」的頻率超過閾值,則該系統確定該主機正在採用 Domain Flux 技術尋址 C & C。
10.權利要求6的方法,其中,步驟10)還包括獲取網絡適配器列表,打開網絡適配器,捕獲數據,根據協議特徵來分析數據流並提取fn息ο
11.權利要求10的方法,其中,步驟10)還包括步驟110)、確定數據包是DNS請求包,從該DNS數據包中解析出發起DNS查詢的源IP 地址、待查詢的目的地址以及時間戳並返回;步驟120)、確定數據包是DNS應答包,從該DNS數據包中解析出該包的目的IP位址、 DNS及其對應的IP位址並返回。
12.權利要求6的方法,其中,步驟30)還包括步驟310)、對於同一個時間窗口內的記錄,使用LCS算法計算任意兩條記錄的最大公 共子串;步驟320)、對所有的最大公共子串出現的次數進行計數,出現次數做多的最大公共子 串確定為窗口最大公共子串,返回窗口最大公共子串出現的次數;步驟330)、當最大公共子串出現的次數超過閾值並且窗口的最大公共子串對應的DNS 查詢得到的DNS伺服器應答為「未找到域名對應的A記錄」的頻率超過閾值時,確定該時間 窗口內的DNS查詢數據流屬於Domain Flux數據流。
全文摘要
本發明提供一種檢測Domain Flux數據流的系統和方法,監聽模塊用於監聽並分析出入網關的數據流,獲取DNS查詢請求數據包和DNS應答包,並提取源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息;資料庫操作模塊,用於將監聽模塊提取的源IP位址、待查詢的DNS、時間戳、DNS對應的A記錄信息記錄在資料庫中;計算窗口最大公共子串的模塊,用於計算時間窗口內任意兩個請求的DNS的最大公共子串,並對最大公共子串出現的次數計數來確定窗口最大公共子串。
文檔編號H04L29/06GK101986642SQ20101051777
公開日2011年3月16日 申請日期2010年10月18日 優先權日2010年10月18日
發明者劉潮歌, 崔翔, 廖鵬, 張治起, 郭莉 申請人:中國科學院計算技術研究所