曾 斯
(湖南環境生物職業技術學院,湖南 衡陽 421005)
Botnet網絡是一種采用多種傳播手段使主機感染病毒,從而在控制者與被感染主機間形成的一個可以一對多控制的網絡[1]。與木馬、蠕蟲等惡意軟件相比,其優勢是可以通過獨立命令與攻擊者進行通信,Botnet網絡可以利用各類通信協議配置通信信道,使通信信道更具隱蔽性。隨著時代發展,Botnet網絡迅速壯大,例如DDOS攻擊、竊取信息、發送垃圾郵件以及攻擊基礎設施等,給當前網絡安全帶來了巨大威脅。Snort是一種開源入侵防御系統,其適應多類平臺,具有源代碼開放、計算要求低等特點[2]。為了更好地應對Botnet網絡的威脅,該文設計了一種基于Snort的Botnet網絡檢測系統,其將流量分析方法作為識別工具,準確性較高,能夠有效檢測大規模惡意Botnet網絡流量。
系統采用C/S架構,在這種結構下,通過瀏覽器顯示工作界面,通過服務器、前端實現事物邏輯。如圖1所示,系統分為界面層、邏輯層、通信層以及數據層等4層架構。其中,界面層包括系統管理、Botnet網絡流量監測以及系統升級等,該層與用戶直接交互,用戶可以有效使用界面操作系統,并根據檢測結果評估事件對系統的威脅程度,從而采取最優的解決策略;邏輯層是系統核心部分,主要負責處理系統軟硬件的業務邏輯、數據訪問等工作,起到了數據交換的承上啟下作用;通信層主要負責客戶端與服務器之間的通信;數據層包括Snort規則和MariaDB數據庫,Snort規則是基于文本的輕量級語言描述,數據庫負責檢測流量特征、可疑行為等信息。

圖1 系統架構
系統硬件設計如圖2所示,主要包括協議分析儀、解碼器、流量識別器以及輸出管理器等部件。
協議分析儀是檢測系統最基礎的數據監視硬件設備,既可以用于合法網絡管理,也可以用于網絡數據竊取。該系統采用BEX400協議分析儀,能夠識別以太網、令牌環以及TCP/IP等高層協議,其具體工作流程如下:網絡適配卡捕獲網絡數據包,隨后以原始形態傳遞給解碼器,以對數據鏈路層中的原始數據包進行深度解碼,解碼器從不同接口獲取包后完成解碼過程。
在系統接收數據包后,無法直接將其上傳至流量識別器,必須進行部分處理,并利用環境定義描述統一采集的數據。該系統采用XL-DS1/DD1高速解碼器,該設備提供軟件開發SDK及設備管理控制通信協議,便于與第三方軟件系統集成,其具體工作流程如下:對數據進行歸類、去冗等操作,將主機數據、網絡數據、行為數據以及通信數據結合,以整體視角對各事件進行關聯分析,創建元數據與操作集間的依賴關系,配合流量識別器完成數據處理工作。
流量識別器是系統核心硬件,除使用Snort自有的監測機制外,還可以選用Cubro流量探針作為系統流量識別器,該設備根據聚類結果進行網絡流量類型識別,準確率較高,其具體工作包括加密識別、虛擬構建。其中,加密識別通過計算隨機數據來識別數據流是否被加密,虛擬構建則通過Renode模擬器來模擬Botnet運行環境,并根據其行為來判斷是否為惡意流量。
2.3.1 加密識別
Cubro流量探針能夠對加密流量進行有效識別。根據加密原理,加密后的數據與隨機數據較相似,由信息論可知,數據隨機性越大,不確定性就越高,熵值也隨之增加。因此,可以通過數據熵值來識別加密數據。
2.3.2 虛擬構建
使用Renode模擬器進行虛擬構建,按照監控配置與數據流進行邏輯分析,標記相關數據,并對可疑程序API攔截記錄、污點記錄進行深度分析[3]。將網絡中獲得的數據包解碼后,將其放于特定數據結構內,由此完成識別、過濾以及解碼數據包流,隨后將數據表流上傳至Cubro流量探針,以此探測數據包中是否存在入侵行為。
輸出管理器負責將報警與日志通過更靈活的格式、形式呈現給管理員,這些信息被記錄于文本文件與數據庫內。該系統采用MUX-10F輸出管理器,其記錄方式見表1。

表1 MUX-10F記錄方式
為了提高系統檢測性能,軟件設計主要完成的工作包括NXDomain過濾、聚類分析以及交集分析。
在特定周期內,與正常主機相比,Botnet感染主機會訪問域名,其中多為NXDomain,如果觀察到的源IP是NAT后的IP地址,那么NXDomain訪問量可能更大[4]。因此,在聚類分析前可通過限度值l過濾NXDomain訪問較少的記錄。當l為0時,被過濾掉的訪問域名數僅占總域名數的0.1%;當l為100時,被過濾掉的訪問域名數約占總域名數的5%。由此可知,l值越大,過濾掉的域名數越多,能夠降低誤檢率,但是漏檢率也會提高。作為軟件設計的輔助檢測,該步驟主要考慮降低漏檢率,因此l值為1。過濾后根據域名字符特征、行為特征進行聚類分析。
為了聚類相似域名,在過濾后通過域名字符特征、行為特征對域名進行聚類。在字符特征聚類中,提取2級域長度、2級域名數字占比、2級域名熵值、全域名熵值以及域名級別等域名字符特征組成聚類向量(見表2),隨后通過聚類算法對向量進行聚類分析。聚類算法可以根據數據自動選擇聚類數量,減少了因人為選擇聚類而出現的誤差。

表2 域名字符聚類特征
在域名訪問行為特征聚類中,利用感染相同Botnet的主機也會有相似的訪問模式特性,以小時為周期對域名進行統計,得出每日訪問序列,從而對域名進行序列聚類[5]。域名行為聚類仍采用聚類算法,但是其無法有效處理時間序列的維度特征,因此應先進行特征提取,得到訪問總量、均值、方差以及訪問最大值等特征(見表3),隨后再對特征進行聚類。

表3 域名行為聚類特征
對上述軟件設計結果進行交集分析,能夠檢測出高度可疑域名。具體方法如下:設置集合x={x1、x2,…,xn}為字符聚類結果,集合y={y1、y2,…,yn}為行為聚類結果,那么交集集合為Sxy,如果Sxy內域名數量過少,就認為該集合內域名是可疑域名的可能性較小,不考慮該分組,反之則將其作為高度可疑域名。
為了驗證Snort檢測Botnet網絡性能,采用誤差矩陣、正確率、精確率以及誤報率等指標進行系統性能評估,誤差矩陣見表4。

表4 誤差矩陣
正確率Acy是指流量被正確檢測出來的概率,如公式(1)所示。
精確率Pon是指Botnet網絡被正確檢測與被檢測成Botnet網絡的比值,如公式(2)所示。
誤報率Fpr是指正常流量被錯誤檢測為Botnet流量的概率,如公式(3)所示。
綜上所述,一個良好的Botnet網絡檢測系統應具有較高的檢測精度和極低的誤報率。
試驗采用深度學習框架,架構靈活,不僅支持各類網絡類型、結構,而且也支持學習率(Constant Warmup,CW)功能。試驗計算機CPU為I5-13400F,內存為XPG 8G*23200 DDR4,顯卡為RTX4070,未使用GPU加速。
以Botnet網絡數據集為基準,分別評估基于Snort的Botnet網絡檢測系統和傳統Botnet網絡檢測系統的性能。為了訓練較高的性能,選定隱藏節點分別為10、20、30、40和50,基于Snort的Botnet網絡檢測系統、傳統Botnet網絡檢測系統分別在訓練集和測試集上的正確率,結果見表5。

表5 正確率比較
由表5可知,當選擇相同隱藏節點時,基于Snort的Botnet網絡檢測系統在訓練集上的檢測正確率比傳統檢測系統高。當隱藏節點數量為10~40時,基于Snort的Botnet網絡檢測系統在測試集上的檢測正確率比傳統檢測系統該,表明Snort在高維特征模型方面具備更強的建模能力。隨著隱藏節點數量不斷增加,當隱藏節點數量為50時,基于Snort的Botnet網絡檢測系統在訓練集上保持了較高的檢測正確率,但是在測試集上的檢測正確率開始降低。當隱藏節點數量為10時,基于Snort的Botnet網絡檢測系統在訓練集、測試集上檢測正確率最高,分別為81.15%、75.52%,此時誤差矩陣見表6。

表6 基于Snort的Botnet網絡檢測系統在訓練集、測試集上的誤差矩陣
當隱藏節點數量為20時,傳統檢測系統在訓練集、測試集上的檢測正確率最高,分別為73.75%、71.97%。基于Snort的Botnet網絡檢測系統(隱藏節點數量為10個)和傳統檢測系統(隱藏節點數量為20個)在訓練集上檢測正確率的變化情況如圖3所示。由試驗可知,基于Snort的Botnet網絡檢測系統的檢測正確率比傳統檢測系統高。
在精確率方面,處于不同隱藏節點條件下,基于Snort的Botnet網絡檢測系統和傳統檢測系統在訓練集、測試集上的精確率見表7。結果表明,當選擇相同隱藏節點時,基于Snort的Botnet網絡檢測系統在訓練集、測試集上的檢測精確率比傳統檢測系統高。

表7 精確率比較
在誤報率方面,處于不同隱藏節點條件下,基于Snort的Botnet網絡檢測系統和傳統檢測系統在訓練集、測試集上的誤報率見表8。結果表明,當選擇不同隱藏節點時,基于Snort的Botnet網絡檢測系統在測試集上的誤報率比同等條件下傳統檢測系統的誤報率低。在訓練集上,當隱藏節點為20時,基于Snort的Botnet網絡檢測系統的誤報率比同等條件下傳統檢測系統的誤報率高。

表8 誤報率比較
綜上所述,Botnet網絡會對互聯網安全造成嚴重威脅,關于其檢測系統的研究也是當今網絡安全領域的核心課題。Botnet網絡通過多種傳播手段使大量主機感染病毒,需要有效的檢測方法對其進行防御,因此該文設計了一種基于Snort的Botnet網絡檢測系統。試驗結果表明,與傳統檢測系統相比,該系統具有較高的檢測率和較低的誤報率,可以提高Botnet網絡檢測的正確率,能夠實時檢測惡意網絡流量、攻擊行為。在后續研究中,應改進系統的匹配算法,從而進一步提高檢測精度。