趙新偉
摘要:近年來,網(wǎng)絡(luò)安全問題日益嚴(yán)重,針對網(wǎng)絡(luò)攻擊方與防御方存在著不對稱的技術(shù)博弈問題,提出一種利用sebek技術(shù)實現(xiàn)數(shù)據(jù)捕獲的改進(jìn)方案。該文首先詳細(xì)分析了sebek的特點﹑工作原理和實現(xiàn)機(jī)制,通過調(diào)試發(fā)現(xiàn)運行中的缺陷并給出解決方法,然后進(jìn)行驗證,對sebek在windows下的運行流暢性進(jìn)一步優(yōu)化,在此基礎(chǔ)上,實現(xiàn)了利用sebek在蜜網(wǎng)中進(jìn)行數(shù)據(jù)捕獲的方案。實驗結(jié)果表明,該方案能夠有效的捕獲網(wǎng)絡(luò)中的入侵行為,實現(xiàn)了數(shù)據(jù)捕獲功能,為下一步的數(shù)據(jù)分析提供依據(jù)。
關(guān)鍵詞:sebek;數(shù)據(jù)捕獲;蜜罐;入侵檢測;網(wǎng)絡(luò)安全
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)34-0072-04
Abstract: In recent years ,network security problem becomes more and more serious,for the question of the network attack side and defense side existing asymmetric technology game ,the paper proposes a modified solution of realizing data capture by sebek technology. At first this paper tries to analyse the characteristics, working principle and the implementation mechanism of sebek in detail,through debugging finds out defects and gives the solution in operation, and then verifies the solution, by optimizing further, sebek can run smoothly under windows system.Based on that, the paper implements the proposal of data capture by sebek technology in honeynet .The experimental results show that the proposal can effectively capture the invasion behavior in network,realizes the function of data capturing, and provides the basis for next data analysis.
Key words: sebek ; data capture ; honeypot ; intrusion detection ; network security
1 概述
近年來,網(wǎng)絡(luò)安全形勢日益嚴(yán)峻,平均每20秒就發(fā)生一次入侵計算機(jī)網(wǎng)絡(luò)的事件。網(wǎng)絡(luò)攻擊方與防御方存在著不對稱的技術(shù)博弈問題[1],攻擊方只要在任何時間找到目標(biāo)的一個漏洞就能攻破系統(tǒng),而防御方必須確保系統(tǒng)不存在任何可被攻擊者利用的漏洞,并擁有全天候的監(jiān)控機(jī)制,才能確保系統(tǒng)的安全。
為了解決這個問題,蜜網(wǎng)項目組[2](the Honeynet Project)提出了誘騙的概念,即在一個可控的網(wǎng)絡(luò)環(huán)境中,誘騙入侵者進(jìn)行入侵,在入侵者沒有察覺的情況下對入侵行為進(jìn)行捕獲,分析入侵者的意圖,并讓入侵者一無所獲,從而避免損失。
2 相關(guān)工作
利用sebek在蜜網(wǎng)中實現(xiàn)數(shù)據(jù)捕獲是蜜網(wǎng)項目組提出的一種關(guān)鍵的數(shù)據(jù)捕獲方案,sebek是由蜜網(wǎng)項目組(the Honeynet Project)在2001年至2003年間開發(fā)的用于數(shù)據(jù)捕獲的內(nèi)核模塊,該模塊常被用于蜜網(wǎng)中實現(xiàn)數(shù)據(jù)捕獲功能,也可以單獨使用,國內(nèi)對其研究較少,大多數(shù)是針對蜜網(wǎng)的研究,如由北京大學(xué)諸葛建偉博士主持的狩獵女神項目組[3],多年來一直專注于蜜網(wǎng)技術(shù)及其應(yīng)用研究,取得了很多成果,但是針對sebek的特點﹑工作原理和實現(xiàn)機(jī)制研究較少。
本文詳細(xì)分析了sebek的特點﹑工作原理和實現(xiàn)機(jī)制,進(jìn)而通過調(diào)試發(fā)現(xiàn)了源碼中的缺陷并給出解決方法,然后進(jìn)行驗證,在此基礎(chǔ)上,實現(xiàn)了利用sebek在蜜網(wǎng)中進(jìn)行數(shù)據(jù)捕獲的解決方案并進(jìn)行了測試。
3 sebek關(guān)鍵技術(shù)分析
sebek是運行在內(nèi)核空間的一段代碼,它能記錄系統(tǒng)用戶存取的一些或者全部數(shù)據(jù),具體包括:記錄加密會話中的擊鍵,恢復(fù)使用SCP拷貝的文件,捕獲遠(yuǎn)程系統(tǒng)被記錄的口令,恢復(fù)使用 Burneye保護(hù)的二進(jìn)制程序的口令等。
3.1 數(shù)據(jù)封包模塊
sebek體系結(jié)構(gòu)如圖1所示,客戶端部署在蜜網(wǎng)體系結(jié)構(gòu)的蜜罐中,服務(wù)端部署在蜜網(wǎng)網(wǎng)關(guān)上,數(shù)據(jù)捕獲并且封裝成數(shù)據(jù)包是在客戶端實現(xiàn)的,當(dāng)外部入侵者通過internet連接入侵了裝有sebek客戶端的蜜罐A主機(jī)時,蜜罐A主機(jī)中的sebek會在入侵者沒有察覺的情況下捕獲外部入侵行為,然后把捕獲的入侵?jǐn)?shù)據(jù)封裝成數(shù)據(jù)包通過局域網(wǎng)傳給蜜網(wǎng)網(wǎng)關(guān),在蜜網(wǎng)網(wǎng)關(guān)中裝有sebek的服務(wù)端程序,它截獲客戶端發(fā)來的數(shù)據(jù)包并對外部入侵行為進(jìn)行分析。
通過分析發(fā)現(xiàn),sebek重定向了系統(tǒng)調(diào)用,把原有的系統(tǒng)調(diào)用函數(shù)替換成自定義的函數(shù),這個新的函數(shù)再來調(diào)用原有的系統(tǒng)調(diào)用函數(shù),并把原有系統(tǒng)調(diào)用函數(shù)讀取的數(shù)據(jù)記錄下來,然后在WritePacket函數(shù)中實現(xiàn)數(shù)據(jù)的封包,圖2為sebek數(shù)據(jù)包的包頭結(jié)構(gòu)[4],關(guān)鍵字段的數(shù)據(jù)類型和功能如表1所示。
sebek數(shù)據(jù)包的包頭部分除了上述結(jié)構(gòu)以外還要再添加上IP/UDP頭,因為傳輸?shù)倪^程中采用的是無連接的udp傳輸,包頭的后面跟的是捕獲的入侵行為數(shù)據(jù),數(shù)據(jù)包的捕獲的實現(xiàn)方法采用的是經(jīng)典的hook技術(shù),它修改了系統(tǒng)的函數(shù)調(diào)用入口點,把函數(shù)調(diào)用地址替換成自己的函數(shù)地址,從而使系統(tǒng)執(zhí)行自定義的函數(shù),完成數(shù)據(jù)捕獲的功能。
3.2 數(shù)據(jù)包的傳輸
在捕獲入侵行為數(shù)據(jù)后,還要以隱蔽的方式把數(shù)據(jù)傳輸?shù)椒?wù)器端以供分析使用,sebek沒有采用套接字傳輸,因為套接字傳輸是在應(yīng)用層實現(xiàn)的,很容易被外部入侵者察覺,它采用的是協(xié)議驅(qū)動的形式實現(xiàn)傳輸?shù)?,圖3為windows網(wǎng)絡(luò)架構(gòu)圖,從下到上依次為網(wǎng)卡硬件﹑總線﹑NDIS(網(wǎng)絡(luò)驅(qū)動接口標(biāo)準(zhǔn))﹑protocol drivers(協(xié)議驅(qū)動)﹑Tdi clients(傳輸驅(qū)動接口客服端)﹑Network application(網(wǎng)絡(luò)應(yīng)用層)。
圖3中NDIS[5]為1989年由Microsoft和3Com聯(lián)合開發(fā)的網(wǎng)絡(luò)驅(qū)動接口標(biāo)準(zhǔn),使得協(xié)議驅(qū)動程序可以以一種與設(shè)備無關(guān)的方式來跟網(wǎng)絡(luò)適配器驅(qū)動程序進(jìn)行通信,極大地方便了網(wǎng)絡(luò)驅(qū)動程序的編寫,遵從NDIS的網(wǎng)絡(luò)適配器驅(qū)動程序稱為NDIS minport driver,NDIS支持三種類型的網(wǎng)絡(luò)驅(qū)動程序:
網(wǎng)卡驅(qū)動程序(NIC drivers):網(wǎng)卡驅(qū)動程序是網(wǎng)卡與上層驅(qū)動程序通信的接口, 它負(fù)責(zé)接收來自上層的數(shù)據(jù)包,或?qū)?shù)據(jù)包發(fā)送到上層相應(yīng)的驅(qū)動程序, 同時它還完成處理中斷等工作。
中間驅(qū)動程序(Intermediate protocol dirvers):中間驅(qū)動程位于網(wǎng)卡驅(qū)動程序和協(xié)議驅(qū)動程序之間,它向上提供小端口(Miniport)函數(shù)集, 向下提供協(xié)議 (protocol)函數(shù)集,因此對于上層驅(qū)動程序而言,它是小端口驅(qū)動程序。對于底層的驅(qū)動程序,它是協(xié)議驅(qū)動程序。
協(xié)議驅(qū)動程序(Upper level protocol drivers):協(xié)議驅(qū)動程序執(zhí)行具體的網(wǎng)絡(luò)協(xié)議,如IPX/SPX、TCP/IP等。協(xié)議驅(qū)動程序為應(yīng)用層客戶程序提供服務(wù),接收來自網(wǎng)卡或中間驅(qū)動的信息。
sebek的數(shù)據(jù)傳輸采用的就是協(xié)議驅(qū)動的形式,這種傳輸是在內(nèi)核層實現(xiàn)的,因而相對于socket傳輸而言,隱蔽性和安全性更好。通過分析還可以發(fā)現(xiàn),在數(shù)據(jù)傳輸前,sebek要判斷數(shù)據(jù)包的長度是否超過最大數(shù)據(jù)傳輸單元(MTU),如果超過了就自動進(jìn)行截斷處理,每一部分再加上包頭,分別進(jìn)行傳輸,所有的準(zhǔn)備工作就緒后,調(diào)用NdisSendPackets函數(shù)實現(xiàn)數(shù)據(jù)包的發(fā)送。
3.3 服務(wù)端數(shù)據(jù)接收
當(dāng)把數(shù)據(jù)包傳到局域網(wǎng)中以后,為了實現(xiàn)更好的隱蔽性,sebek采用一種機(jī)制使得同一蜜網(wǎng)體系中其它裝有sebek蜜罐的主機(jī)不能檢測到該數(shù)據(jù)包,只有服務(wù)器端能檢測到,而且數(shù)據(jù)包的傳輸只能是單向的,即只能從客服端傳輸?shù)椒?wù)器端,反之則不能傳輸,實現(xiàn)這一機(jī)制的方法是sebek定義了一個通用的協(xié)議,客戶端和服務(wù)端的通信通道是單向的,這個通道使用udp協(xié)議,每個數(shù)據(jù)包除包含udp頭以外還有一個sebek頭部數(shù)據(jù),在sebek頭中定義了一個Magic成員,具體的數(shù)據(jù)包傳輸過程中的算法為:
while(蜜罐A的sebek數(shù)據(jù)包傳輸?shù)矫酃轇時)
if ( 蜜罐B的Magic值=數(shù)據(jù)包中的Magic值)
蜜罐B主機(jī)丟棄該數(shù)據(jù)包
while(蜜罐A的sebek數(shù)據(jù)包傳輸?shù)矫劬W(wǎng)網(wǎng)關(guān)時)
if(數(shù)據(jù)包中端口號=網(wǎng)關(guān)預(yù)定義的端口號&&數(shù)據(jù)包中的Magic值=預(yù)定義的
Magic值)
蜜網(wǎng)網(wǎng)關(guān)接收數(shù)據(jù)包并處理
采用這種機(jī)制的好處是即使外部入侵者攻陷蜜網(wǎng)后,企圖利用攻陷的蜜罐主機(jī)來截獲另一個蜜罐主機(jī)發(fā)送的數(shù)據(jù)包也不能實現(xiàn),并且由于除了端口號以外,又引入了Magic成員,提高了暴力檢測的難度。
當(dāng)蜜罐主機(jī)發(fā)送的數(shù)據(jù)包到達(dá)蜜網(wǎng)網(wǎng)關(guān)處時,裝有sebek服務(wù)端的蜜網(wǎng)網(wǎng)關(guān)可以直接從網(wǎng)卡捕獲該數(shù)據(jù)包,此外還可以從tcpdump日志文件中獲取,該日志文件是系統(tǒng)捕獲的所有網(wǎng)絡(luò)數(shù)據(jù)文件。
3.4 抗檢測性
sebek一個重要的特點就是在外部入侵行為不知不覺的情況下捕獲入侵行為,如果外部入侵行為攻陷了蜜罐主機(jī)后發(fā)現(xiàn)了它的存在,就會終止入侵行為從而使數(shù)據(jù)捕獲不能繼續(xù),所以抗檢測性是它非常重要的功能,為了實現(xiàn)這個功能,采取了如下措施:
1) 采用了諸如Adore等基于LKM的rootkit的技術(shù),使自身更難于被發(fā)現(xiàn)。
2) 通過安裝cleaner模塊來隱藏sebek,該模塊把sebek從安裝鏈表中刪除,刪除以后蜜罐主機(jī)中不再顯示安裝有sebek,并且不能刪除,提高了抗檢測性。
4 調(diào)試
為了驗證sebek的功能,我們對其進(jìn)行調(diào)試運行,sebek是運行在內(nèi)核空間的一段代碼,最初是在linux上運行的,后來被移植到windows等其它的操作系統(tǒng)中,我們以在windows上運行的版本為例,由于其是以驅(qū)動的形式存在的,編譯驅(qū)動有兩種方式,一種是通過集成開發(fā)環(huán)境諸如VC或visual studio和ddk配合來編譯,一種是直接通過ddk[6]來編譯,前者通過集成開發(fā)環(huán)境編譯,優(yōu)點是便于修改和發(fā)現(xiàn)錯誤,符合大多數(shù)習(xí)慣集成開發(fā)環(huán)境的人們,缺點是需要一系列的配置。后者優(yōu)點是不用安裝集成開發(fā)環(huán)境且不需要配置,可以直接編譯,缺點是脫離了集成環(huán)境后不便于調(diào)試。
這里采用的是直接使用ddk來編譯的方式,ddk有windows 2000 ddk,windows xp ddk和windows 2003 ddk,這里我們采用的是windows xp ddk。此外為了加載編譯好的驅(qū)動文件并顯示該驅(qū)動程序在內(nèi)核空間的行為,還需要借助一些工具才能實現(xiàn),因為驅(qū)動程序和普通的程序區(qū)別就是它是在內(nèi)核空間運行,這里我們采用的工具是KmdManager[7]和Dbgview[8],KmdManager是一個免費的加載驅(qū)動程序的小工具,而Dbgview能夠捕獲內(nèi)核空間的行為并且可以把捕獲的數(shù)據(jù)保存到一個日志文件中,通過對該日志文件的分析,我們可以清楚地查看到驅(qū)動程序在內(nèi)核空間的運行情況。
4.1 實驗過程
使用ddk編譯sebek客戶端程序,會生成一個sebek.sys文件,接下來,為了加載該驅(qū)動文件并查看運行后該程序在內(nèi)核空間的行為,我們使用KmdManager來進(jìn)行加載,使用Dbgview捕獲內(nèi)核空間行為,實驗如圖4所示和圖5所示,圖4顯示了被加載和運行的過程,圖5顯示了加載后該驅(qū)動在內(nèi)核空間的行為。
4.2 對藍(lán)屏的解決方法
在對sebek客服端程序進(jìn)行調(diào)試的過程中發(fā)現(xiàn)啟動程序以后總是藍(lán)屏,經(jīng)過調(diào)試發(fā)現(xiàn)問題在于抗檢測模塊Antidetection.c模塊中FindPsModuleList函數(shù)的問題,文獻(xiàn)[9]中給出了一種方法,但是并沒有徹底解決問題,客服端端程序仍不能運行,本文在此基礎(chǔ)上進(jìn)一步完善,消除了藍(lán)屏現(xiàn)象,具體算法為:
If(系統(tǒng)運行在windows2000中)
模塊列表頭指針pModuleListStart賦值為驅(qū)動對象pDriverObject在內(nèi)存中的偏移量
else if(系統(tǒng)運行在windows xp or 更高版本)
pModuleListStart賦值為驅(qū)動對象pDriverObject+0x14
If(pModuleListStart指針為空)
{
直接返回
pModuleListStart賦值給指向模塊列表的指針
}
while(pModuleListStart->lModuleList.Flink 不指向模塊列表指針時)
{
If(pModuleListStart->unk1等于0)并且pModuleListStart驅(qū)動路徑長度為0)
返回pModuleListStart指針的值
}
返回pModuleListStart指針的值
5 系統(tǒng)需求分析
要設(shè)計一個支持sebek進(jìn)行數(shù)據(jù)捕獲的應(yīng)用系統(tǒng),通過該系統(tǒng)可以捕獲蜜罐主機(jī)上的擊鍵信息,進(jìn)而分析擊鍵行為,驗證sebek的功能,從而實現(xiàn)利用sebek在蜜網(wǎng)中進(jìn)行數(shù)據(jù)捕獲的解決方案。
其次,由于sebek是在不斷的完善過程中,最新版本為sebek 2,以后還會進(jìn)一步完善,因此設(shè)計的系統(tǒng)要具有良好的可擴(kuò)展性和可維護(hù)性,Sebek的實現(xiàn)包括客服端和服務(wù)端,因此我們首先要搭建一個蜜網(wǎng)體系結(jié)構(gòu),然后在該體系結(jié)構(gòu)中部署sebek,并測試sebek的功能。
基于以上分析,提出一種采用基于vmware的虛擬蜜網(wǎng)的體系結(jié)構(gòu)來部署sebek并進(jìn)行測試的方案,如圖6所示,利用vmware虛擬了三個系統(tǒng),利用虛擬的windows 2000系統(tǒng)作為攻擊方,虛擬的windows xp作為蜜罐主機(jī),虛擬的linux系統(tǒng)作為網(wǎng)管。
6 系統(tǒng)設(shè)計
sebek是蜜網(wǎng)體系結(jié)構(gòu)中核心的數(shù)據(jù)采集模塊,因此我們把它部署在蜜網(wǎng)中來檢測其功能,Honeynet Project(蜜網(wǎng)項目組)提供了一些關(guān)于部署Gen III(第三代蜜網(wǎng))的一般性文件,對任何想使用honeywall Roo和VMware構(gòu)建虛擬蜜網(wǎng)的個人或組織提供了一個可參考的模板。
此外,北京大學(xué)諸葛建偉[10]等人提出了基于第三代蜜網(wǎng)的VNet網(wǎng)絡(luò)攻防實驗環(huán)境構(gòu)建,本文實驗參考了該方案,實驗是在一臺三星筆記本電腦上完成的,該設(shè)備只有一個網(wǎng)卡,可以利用VMware再虛擬出另外兩個網(wǎng)卡以供使用。虛擬環(huán)境搭建好以后,首先要配置蜜網(wǎng)網(wǎng)關(guān),由于篇幅關(guān)系,本文不再詳述,讀者可以參考相關(guān)資料,蜜網(wǎng)網(wǎng)關(guān)[11]配置好以后,還要在蜜罐主機(jī)上安裝sebek客服端程序代碼,由于蜜網(wǎng)網(wǎng)關(guān)上已經(jīng)裝有sebek服務(wù)器端的程序,因此不需要再單獨安裝服務(wù)器端程序。
實驗結(jié)果如圖7和圖8所示,記錄了sebek服務(wù)端捕獲的蜜罐主機(jī)上的活動信息,首先,圖7中上部紅線框內(nèi)捕獲的數(shù)據(jù)含義為在IP地址為192.168.200.124的蜜罐主機(jī)上,點擊開始菜單,在運行對話框里輸入了cmd.exe命令,并且記錄該命令的版本號,其次,中間紅線框內(nèi)的數(shù)據(jù)含義為在同一IP地址蜜罐主機(jī)上向IP地址為192.168.200.2的主機(jī)發(fā)起了ping連接,最后一個紅線框內(nèi)的數(shù)據(jù)含義為IP地址為192.168.200.2的主機(jī)向IP地址為192.168.200.124的蜜罐回復(fù)了連接信息,表示兩者之間的網(wǎng)絡(luò)是聯(lián)通的,此外從捕獲的數(shù)據(jù)中還可以看出蜜罐上每一個活動的時間信息。
圖8中紅線框內(nèi)的數(shù)據(jù)含義為在測試了連通性以后,sebek服務(wù)端捕獲了在蜜罐主機(jī)上通過dir命令搜索本地文件信息的記錄,具體為首先通過cmd.exe命令打開命令行窗口,然后通過DIR命令掃描C盤文件信息,具體掃描到的文件和文件夾分別為ASFRoot﹑Inetpub和ftpdir﹑Documents and Settings﹑Microsoft UAM﹑Program Files及WINNT,同樣服務(wù)端也捕獲到了具體的時間信息。
由此可見,通過部署sebek這一重要的數(shù)據(jù)捕獲工具,在蜜網(wǎng)網(wǎng)關(guān)上收集到了蜜罐主機(jī)上的入侵信息,從而為數(shù)據(jù)分析提供了依據(jù)。
7 總結(jié)
本文在分析sebek特點﹑工作原理和實現(xiàn)機(jī)制的基礎(chǔ)上,設(shè)計并實現(xiàn)了利用sebek在蜜網(wǎng)中進(jìn)行數(shù)據(jù)捕獲的改進(jìn)方案,針對sebek客服端程序在windows系統(tǒng)上運行時暴露出的缺陷,采取方法加以完善,使其能更好的運行在windows系統(tǒng)上,實驗結(jié)果表明,該方案能夠有效的捕獲蜜網(wǎng)中的入侵行為,從而為在蜜網(wǎng)中進(jìn)行數(shù)據(jù)分析提供了依據(jù)。
參考文獻(xiàn):
[1] 諸葛建偉,唐勇,韓心慧,等.蜜罐技術(shù)研究與應(yīng)用進(jìn)展[J].軟件學(xué)報,2013,24(4): 825-826.
[2] The Honeynet Project[EB/OL]. (2014-02-02).http://www.honeynet.org.
[3] 諸葛建偉.狩獵女神的前世今生[EB/OL]. (2014-02-02).http://netsec.ccert.edu.cn/zhugejw/2011.
[4] lance.spitzner. Know Your Enemy: Sebek[EB/OL]. (2008-12-08). http://www.honeynet.org/papers/sebek.
[5] 網(wǎng)絡(luò)驅(qū)動接口規(guī)范 baodi_z.網(wǎng)絡(luò)驅(qū)動程序接口規(guī)NDIS[EB/OL]. (2008-02-21).http://blog.csdn.net/baodi_z/article/details/2110917.
[6] speedingboy. DDK開發(fā)介紹[EB/OL]. (2013-09-17). http://blog.csdn.net/speedingboy/article/details/3035131.
[7] 灰狐. Windows驅(qū)動學(xué)習(xí)筆記[EB/OL]. (2013-03-12).http://wenku.baidu.com/view/fbcd721cfad6195f312ba63e.html.
[8] Bactq. 關(guān)于Dbgview的使用[EB/OL]. (2007-03-28).http://blog.sina.com.cn/s/blog_7359f2100100onth.html.
[9] EastCoke. Sebek源碼修正檔[EB/OL]. (2011-05-31).http://blog.csdn.net/eastcoke/article/details/6456012.
[10] 諸葛建偉解決方案.網(wǎng)絡(luò)攻防環(huán)境搭建[EB/OL]. (2012-06-24).http://www.docin.com/html.
[11] 吳智發(fā),張芳芳.第三代蜜網(wǎng)網(wǎng)關(guān)Roo介紹[EB/OL]. (2010-05-18). http://wenku.baidu.com/view/76859cf3f90f76c661371a 55.html.