付博揚 嚴(yán)寒冰,2
1(北京航空航天大學(xué)計算機學(xué)院 北京 100191)
2(國家計算機網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心 北京 100094)
從1993年首次出現(xiàn)bot的概念,到1999年第1個真正意義的惡意控制程序代碼(bot程序)出現(xiàn),僵尸網(wǎng)絡(luò)已有近30年的歷史.僵尸網(wǎng)絡(luò)的最大特點是可以通過控制多臺設(shè)備實現(xiàn)大規(guī)模攻擊行為,其中最具代表性的是分布式拒絕服務(wù)(DDoS)攻擊.穩(wěn)定的僵尸網(wǎng)絡(luò)被控設(shè)備由于在線時間長、帶寬穩(wěn)定、控制簡單、對攻擊者隱蔽性好等特性,成為攻擊者構(gòu)建攻擊跳板的首選.
近年來信息化快速發(fā)展,互聯(lián)網(wǎng)設(shè)備深入滲透到生活中.據(jù)Statista網(wǎng)站的調(diào)查[1]顯示,截至2018年,中國已建立了近33億個連接的龐大網(wǎng)絡(luò),預(yù)計到2025年該數(shù)字將達到接近160億,這也導(dǎo)致僵尸網(wǎng)絡(luò)中被控設(shè)備數(shù)量大幅度增長,網(wǎng)絡(luò)上大規(guī)模攻擊越發(fā)猖獗.據(jù)安全公司Imperva的調(diào)查[2]顯示,在2019年的一起針對在線流媒體應(yīng)用的大規(guī)模僵尸網(wǎng)絡(luò)攻擊中,短短13天內(nèi)受控設(shè)備數(shù)量高達40多萬臺.
僵尸網(wǎng)絡(luò)是一組被惡意軟件攻擊并控制的連接在互聯(lián)網(wǎng)上的主機,用于執(zhí)行一系列惡意活動.通常僵尸網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,由1個主機(botmaster),1個或多個命令與控制(command&control,C&C)服務(wù)器以及大量受感染的機器人(bot)組成.主機常常隱藏在網(wǎng)絡(luò)中,通過C&C服務(wù)器發(fā)布指令,機器人定期向給定域名或通過算法生成的C&C服務(wù)器發(fā)送心跳包并接受指令,如發(fā)動DDoS攻擊等.
僵尸網(wǎng)絡(luò)的主機通常盡可能使用少量流量與C&C服務(wù)器通信,且不與僵尸網(wǎng)絡(luò)中的機器人直接連接,因此在網(wǎng)絡(luò)中常常處于隱匿狀態(tài).這就導(dǎo)致僅通過對網(wǎng)絡(luò)上的單個節(jié)點流量進行檢測以發(fā)現(xiàn)異常,從而檢測僵尸網(wǎng)絡(luò)行為是不可行的,關(guān)閉流量異常節(jié)點的處置方法難以對整個僵尸網(wǎng)絡(luò)造成打擊.對于防守者而言,如何發(fā)現(xiàn)攻擊者使用的可疑的僵尸跳板網(wǎng)絡(luò)成為建立有效防御手段的重要步驟.
本文提出僵尸網(wǎng)絡(luò)多級控制關(guān)系可視化分析系統(tǒng).該系統(tǒng)可以基于流數(shù)據(jù),判定僵尸網(wǎng)絡(luò)中哪些節(jié)點是多級控制網(wǎng)絡(luò)中的非頂層節(jié)點,從而發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備之間的多級控制關(guān)系,定位可能處于跳板位置的C&C服務(wù)器節(jié)點,為后續(xù)溯源分析并發(fā)現(xiàn)隱藏的主機節(jié)點提供幫助.
僵尸網(wǎng)絡(luò)的出現(xiàn)已有近30年的歷史,已經(jīng)發(fā)展出多種完善的檢測思路,主要分類如圖2所示.bot分析類[3]的主要思路是利用蜜罐捕獲僵尸網(wǎng)絡(luò),從靜態(tài)代碼層面或模擬環(huán)境運行層面分析僵尸網(wǎng)絡(luò)的特征和行為模式.IDS類[4]根據(jù)數(shù)據(jù)獲取方法檢測僵尸網(wǎng)絡(luò).通過主動發(fā)送請求獲得設(shè)備響應(yīng),從而查找在特定主機上運行的可疑程序和腳本的稱為主動類;通過設(shè)備獲取或嗅探獲得數(shù)據(jù),通過基于規(guī)則或異常的方法檢測僵尸網(wǎng)絡(luò)行為的稱為被動類.框架設(shè)計類[5]主要針對經(jīng)過加密等而難以有效檢測的僵尸網(wǎng)絡(luò).這類方法利用各類數(shù)據(jù)挖掘方法,包括機器學(xué)習(xí)、統(tǒng)計學(xué)和數(shù)據(jù)庫系統(tǒng)等檢測僵尸網(wǎng)絡(luò)行為,源數(shù)據(jù)大部分是現(xiàn)有數(shù)據(jù)集[6];也有部分研究者通過設(shè)置多臺設(shè)備搭建內(nèi)部網(wǎng)絡(luò),在該網(wǎng)絡(luò)中的設(shè)備上運行開源僵尸網(wǎng)絡(luò)代碼捕獲各個設(shè)備的流量,從而得到較完整的僵尸網(wǎng)絡(luò)流量數(shù)據(jù)[7].
隨著網(wǎng)絡(luò)設(shè)備的快速發(fā)展,僵尸網(wǎng)絡(luò)也在不斷發(fā)展和變化.Mirai是一種廣泛傳播的代表性僵尸網(wǎng)絡(luò)家族,自從于2016年由一個惡意軟件研究小組首次披露以來,已被多次用于世界上的危險和大規(guī)模的DDoS攻擊,包括2016年9月和10月的OVH攻擊和Dyn攻擊.目前Mirai的大量變體仍然是最活躍的家族之一,其他如Gafgyt,Mozi等家族也在不斷向著更復(fù)雜、更隱蔽的方向進化.
Abbas等人[3]對Mirai家族和Qbot家族的17個僵尸網(wǎng)絡(luò)變種進行了靜態(tài)代碼分析,挖掘出攻擊者的視角、一般行為、使用技術(shù)和實現(xiàn)技術(shù)等.Shao等人[8]使用2種不同的配置探索自適應(yīng)學(xué)習(xí)策略在僵尸網(wǎng)絡(luò)檢測中的有效性,使用真實抓取的網(wǎng)絡(luò)數(shù)據(jù)驗證所提出的自適應(yīng)在線學(xué)習(xí)策略的性能.Panda等人[9]使用3種機器學(xué)習(xí)方法驗證了所設(shè)計的特征子集選擇方法以及僵尸網(wǎng)絡(luò)檢測系統(tǒng)的有效性.
為模擬僵尸網(wǎng)絡(luò)中主機之間的連通性以及僵尸網(wǎng)絡(luò)拓撲結(jié)構(gòu),基于圖的方法被用于建立網(wǎng)絡(luò)模型,這類方法通常使用如表1所示的基于圖的特征分析節(jié)點關(guān)系[10].大部分研究者在設(shè)計基于圖的僵尸網(wǎng)絡(luò)模型時都會在表1的基礎(chǔ)上做創(chuàng)新設(shè)計.例如,Wang等人[11]提出一種基于流和基于圖的流量行為混合分析的僵尸網(wǎng)絡(luò)自動檢測模型.Daya等人[12]使用特征歸一化,盡可能降低網(wǎng)絡(luò)拓撲結(jié)構(gòu)對行為和通信模式的影響.除此以外,也有部分研究者根據(jù)僵尸網(wǎng)絡(luò)的行為特點,在特征選擇上做創(chuàng)新.例如,Lagraa等人[13]沒有使用表1中基于圖的特征建立主機之間的通信特征,而是為每個主機生成多個圖表.在該系統(tǒng)中,以2個IP在同一個時間窗口內(nèi)的端口變化情況作為分析對象,對于每對產(chǎn)生了通信行為的IP都構(gòu)造一個圖,以源端口和目的端口的二元組作為圖中節(jié)點,根據(jù)二元組的出現(xiàn)時間順序構(gòu)建有向圖,通過比對不同圖之間的編輯距離發(fā)現(xiàn)存在異常行為的IP.
表1 常用基于圖的特征及說明
本文提出的僵尸網(wǎng)絡(luò)多級控制關(guān)系可視化分析系統(tǒng)結(jié)構(gòu)圖如圖3所示.本文系統(tǒng)主要由3個模塊組成:原始數(shù)據(jù)處理、Neo4j拓撲構(gòu)建和D3可視化.
2.1.1 七元組特征提取
由于流量巨大,為了確保可分析,取用僵尸網(wǎng)絡(luò)的流數(shù)據(jù).這些流數(shù)據(jù)攜帶了從一個網(wǎng)絡(luò)節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)包到另一個網(wǎng)絡(luò)節(jié)點所需的基本IP層信息.為了篩選控制節(jié)點及其關(guān)系,從每條流數(shù)據(jù)中選擇最具代表性的7個特征組成七元組si=(s_sipi,s_dipi,s_sporti,s_dporti,s_packetsi,s_bytesi,s_end_timei).其中,s_sipi和s_dipi分別表示源/目的IP,s_sporti和s_dporti分別表示源/目的端口號,s_packetsi和s_bytesi分別表示從s_sipi到s_dipi的包數(shù)和字節(jié)數(shù),s_end_timei顯示該條流數(shù)據(jù)傳輸?shù)臅r間段.將1天以2小時為區(qū)間劃分為12個時間段,通過DAYh-t顯示該流數(shù)據(jù)出現(xiàn)在哪個時間段,其中h為第幾天,t為所屬時間段.例如,分析2022年1月的流數(shù)據(jù),若其中1條流數(shù)據(jù)時間為“20220101 00:00:01”,則其對應(yīng)的s_end_timei存儲為“DAY1-1”.多個七元組合并為集合S.
2.1.2 同源數(shù)據(jù)聚合
2.1.3 篩選控制節(jié)點
以七元組的二元組(ip,port)為分析單位,對于每個二元組bi=(ipi,porti),定義連接的IP數(shù)量(不區(qū)分向內(nèi)或向外)為該二元組的度.度既包含正向流,也包含反向流,而七元組數(shù)據(jù)集T是有向流數(shù)據(jù),因此將T中的sip與dip、sport與dport互換,就形成反向流數(shù)據(jù)集T′,與原流數(shù)據(jù)集合并,形成雙向流數(shù)據(jù)集TC.對合并后的新集合TC以二元組bi=(ipi,porti)為單位,統(tǒng)計包含bi在內(nèi)的所有七元組中不同dipi的數(shù)量di,即為該二元組bi的度.
2.1.4 梳理控制關(guān)系
2.2.1 控制關(guān)系文件導(dǎo)入
Neo4j是一種高性能的圖數(shù)據(jù)庫,通過節(jié)點和關(guān)系這種結(jié)構(gòu)化的形式對數(shù)據(jù)進行存儲.相較于關(guān)系數(shù)據(jù)庫,這種存儲和管理數(shù)據(jù)并維護數(shù)據(jù)關(guān)系的方法在數(shù)據(jù)庫查詢時開銷更低,因此很適合存儲僵尸網(wǎng)絡(luò)的節(jié)點和關(guān)系數(shù)據(jù).Neo4j通過查詢語法Cypher篩選用戶限制條件下的節(jié)點和關(guān)系,并可視化展示出來.Cypher是一個描述性的圖形查詢語言,該語言可以直觀描述圖形情況,更符合人類自然語言,且不需要編寫復(fù)雜的查詢代碼,可以極大減少篩選圖中節(jié)點操作的負擔(dān).
對于量級較大的數(shù)據(jù),Neo4j有多種導(dǎo)入方式,包括使用Cypher語言的load csv方式和使用官方的neo4j-import工具等.本文使用官方的neo4j-import工具導(dǎo)入控制關(guān)系文件,該工具需要將圖中的節(jié)點和關(guān)系分別存入2個csv文件,通過輸入指令即可導(dǎo)入.
2.2.2 生成拓撲圖及json文件
圖4為采用Neo4j的查詢結(jié)果拓撲圖示例.圖中最上方是使用的Cypher語句,語義是查詢存在向外控制關(guān)系且個數(shù)大于2的所有節(jié)點.圖中圓點為節(jié)點,帶有箭頭的連線為控制關(guān)系,從控制節(jié)點指向被控制節(jié)點.從圖4可以看出,面對節(jié)點數(shù)量上百甚至上千的僵尸網(wǎng)絡(luò)中的控制關(guān)系,Neo4j的展示效果有限.圖4是已經(jīng)將Neo4j展示界面放大到最大的效果,仍然不能看到全部的控制關(guān)系,且該關(guān)系圖中缺少后續(xù)分析需要的節(jié)點信息,所以需要考慮通過其他方法將控制關(guān)系可視化展示.
Neo4j本身具有數(shù)據(jù)導(dǎo)出功能,可以將Cypher語句的查詢結(jié)果以csv,json等多種格式導(dǎo)出,形成關(guān)系文件.本文選擇json格式將Neo4j通過Cypher查詢語句篩選出來的節(jié)點間關(guān)系導(dǎo)出.
圖5顯示了通過Neo4j導(dǎo)出的關(guān)系文件中的1條控制關(guān)系數(shù)據(jù),其中保留了節(jié)點和關(guān)系的標(biāo)簽和屬性.在圖5中,行3“p”后的大括號內(nèi)包含1條完整的控制關(guān)系,分為2部分:第1部分給出了該條控制關(guān)系中的2個節(jié)點編號及其屬性,在圖中表示為第1個“start”和“end”后括號中的內(nèi)容;第2部分給出了該條控制關(guān)系中的邊的編號及其屬性,在圖中表示為行24“segments”后括號中的內(nèi)容,因為是同一條控制關(guān)系,其中的“start”和“end”與第1部分中的“start”和“end”分別對應(yīng),行36“relationship”后括號中的內(nèi)容包含了該條控制關(guān)系的屬性.
在對導(dǎo)出的關(guān)系文件做可視化工作時,將文件中每條控制關(guān)系數(shù)據(jù)中第1部分的“start”,“end”提取去重后存儲為圖中的節(jié)點,對于第2部分中的“segments”,以起點(“start”)→控制屬性(“relationship”)→終點(“end”)的形式存儲為圖中的邊.繪制時通過查找邊文件中的起點和終點即可在圖上繪制出一條有向邊.
文獻[14]提供了使用JavaScript的函數(shù)庫D3實現(xiàn)導(dǎo)出數(shù)據(jù)可視化的思路,將導(dǎo)出的關(guān)系文件作為D3可視化模塊的輸入,可得到不同功能的節(jié)點間關(guān)系的可視化展示.本文在文獻[14]的基礎(chǔ)上根據(jù)需求分析增加了如下功能:
1) 點擊圖中某節(jié)點顯示該節(jié)點屬性并一鍵打開該節(jié)點的所有相關(guān)流數(shù)據(jù);
2) 顯示節(jié)點間的控制方向;
3) 以不同顏色顯示控制行為的出現(xiàn)天數(shù),并可以只顯示出現(xiàn)天數(shù)大于n天的結(jié)果;
4) 點擊連線后以餅圖顯示控制行為出現(xiàn)的時間段.
圖6為使用少量數(shù)據(jù)的可視化模塊的主要功能展示.在該圖中,節(jié)點及控制關(guān)系被顯示在圖的中心位置,藍色點表示節(jié)點,不同顏色的連線表示節(jié)點間的控制關(guān)系,連線上的黑色箭頭表示控制方向.圖中左下角的圖例說明了不同顏色連線的含義,由上至下分別表示1條控制關(guān)系出現(xiàn)1天至7天.當(dāng)點擊圖中的某個節(jié)點時,圖中右下角會顯示該節(jié)點的全部屬性,包括IP地址、出現(xiàn)時間、出現(xiàn)次數(shù)等.此時如果點擊圖中右側(cè)的藍色“打開該ip文檔”,即可打開只包含與該節(jié)點相關(guān)的所有控制關(guān)系數(shù)據(jù)的csv文件.
圖7為出現(xiàn)天數(shù)超過規(guī)定天數(shù)的控制行為的可視化顯示,可以看出,該圖只有從黃色至紅色的連線,即只包含控制天數(shù)為5~7天的控制關(guān)系.通過該功能可以快速找到出現(xiàn)天數(shù)較多的控制行為,并從圖中直觀看出這些控制行為之間的多級控制關(guān)系.
通過點擊任意控制關(guān)系可視化圖中的某條連線,即在圖的最下方以餅圖的形式展示該條控制關(guān)系的出現(xiàn)時間段.以圖8為例,黑色部分為出現(xiàn)時間,可以看出該條控制關(guān)系在多天相同時間段存在控制行為,因此該條控制關(guān)系中的控制節(jié)點對應(yīng)IP被標(biāo)記為高度可疑.
本文采用實驗室抓取到的明確包含僵尸網(wǎng)絡(luò)流量的1個月的流數(shù)據(jù)進行分析,圖9展示了其中某周發(fā)現(xiàn)的異常節(jié)點.從圖9可以看出,節(jié)點①以橋梁的形式連接了右下角的節(jié)點群和左側(cè)的其他節(jié)點.通過點擊該節(jié)點,可僅高亮顯示與該節(jié)點直接相連的其他節(jié)點和控制關(guān)系.點擊節(jié)點①的同時,節(jié)點①附近通過白色方框顯示出該節(jié)點對應(yīng)IP地址,本文做了模糊處理.從圖9可以看出,節(jié)點①與節(jié)點②③④直接相連,根據(jù)箭頭方向(從控制端指向被控端)可以發(fā)現(xiàn),節(jié)點①IP單方面被節(jié)點②③④IP控制,因此分別點擊這3個節(jié)點做進一步分析.
圖10展示了對圖9中的節(jié)點④的進一步分析情況.可以看出,該節(jié)點除了對節(jié)點①存在控制行為外,左側(cè)還存在多條紅色(控制天數(shù)為7天的)向外控制關(guān)系,因此將該節(jié)點對應(yīng)IP標(biāo)記為高度可疑.
采用本文系統(tǒng)對1個月的流數(shù)據(jù)進行篩選后,共發(fā)現(xiàn)3個高度可疑存在多級控制關(guān)系的跳板節(jié)點,其中1個已被確認為僵尸網(wǎng)絡(luò)控制端.由于流數(shù)據(jù)的粗糙性以及實際網(wǎng)絡(luò)流量的未知性,本文系統(tǒng)的目的是盡可能發(fā)現(xiàn)存在多級控制關(guān)系的節(jié)點,以便報文數(shù)據(jù)分析以及實際取證溯源分析等工作的開展.
本文提出一個針對僵尸網(wǎng)絡(luò)的多級控制關(guān)系可視化分析系統(tǒng),包括原始數(shù)據(jù)處理、圖數(shù)據(jù)庫拓撲構(gòu)建以及可視化分析.由于問題的復(fù)雜性,1個設(shè)備可能被多個僵尸網(wǎng)絡(luò)控制,因而僵尸網(wǎng)絡(luò)多級控制關(guān)系還需進一步分析和探索.本文系統(tǒng)可從以下2個方面作進一步優(yōu)化:
1) 引入連接次數(shù)c作為保留高價值邊的依據(jù);
2) 將單次分析發(fā)現(xiàn)的多級控制關(guān)系以圖的形式導(dǎo)出存儲,如ip1→ip2→ip3,在后續(xù)數(shù)據(jù)分析中如果出現(xiàn)相同的圖,如再次出現(xiàn)ip1→ip2→ip3,則可以判斷存在長時間穩(wěn)定多級控制行為,從而發(fā)現(xiàn)多次出現(xiàn)的相同事件.
此外,在本文系統(tǒng)的基礎(chǔ)上,可以引入基于圖的方法進一步區(qū)分節(jié)點的行為模式,劃分出不同集群,即從可疑僵尸網(wǎng)絡(luò)社區(qū)中選擇出真正的僵尸網(wǎng)絡(luò)社區(qū),并進一步判斷僵尸網(wǎng)絡(luò)社區(qū)中每個節(jié)點所扮演的角色,包括主機、C&C服務(wù)器和受感染的機器人,使分析結(jié)果達到更高的正確率.