洪雙喜,雷 濤
(華北水利水電學(xué)院信息工程學(xué)院,河南鄭州 450011)
隨著社會(huì)信息化以及信息網(wǎng)絡(luò)化的迅速發(fā)展,網(wǎng)絡(luò)安全問(wèn)題日益突出且越來(lái)越復(fù)雜,已經(jīng)成為亟待解決的問(wèn)題,并引起各方的關(guān)注。目前以木馬病毒對(duì)網(wǎng)絡(luò)系統(tǒng)信息進(jìn)行的竊取、篡改行為最為突出,這對(duì)網(wǎng)絡(luò)用戶的信息安全構(gòu)成了巨大威脅。與此同時(shí),各種病毒程序,尤其是木馬程序通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)滲透到PC機(jī)中,竊取秘密信息,給信息系統(tǒng)或個(gè)人帶來(lái)嚴(yán)重威脅。比較有名的殺毒軟件如360、瑞星等殺毒軟件可以對(duì)計(jì)算機(jī)起到良好的保護(hù)作用,但對(duì)已經(jīng)潛入計(jì)算機(jī)的網(wǎng)銀型木馬病毒的通信攔截就有限。通過(guò)對(duì)基于包過(guò)濾技術(shù)網(wǎng)絡(luò)安全的研究[1],本文采用基于NDIS中間層技術(shù),對(duì)木馬工作周期中的網(wǎng)絡(luò)通信階段進(jìn)行實(shí)時(shí)監(jiān)視,通過(guò)對(duì)進(jìn)程運(yùn)行時(shí)產(chǎn)生的網(wǎng)絡(luò)通信數(shù)據(jù)進(jìn)行分析和判定,達(dá)到識(shí)別防范木馬通信的目的。
網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范(Network Driver Interface Specification,NDIS)是微軟和3Com公司在1989年制定了一套開發(fā)Windows平臺(tái)網(wǎng)絡(luò)驅(qū)動(dòng)程序的標(biāo)準(zhǔn)[2],NDIS提供了一套標(biāo)準(zhǔn)的接口,用于實(shí)現(xiàn)傳輸驅(qū)動(dòng)程序和網(wǎng)卡驅(qū)動(dòng)程序之間的相互通信,使得網(wǎng)絡(luò)驅(qū)動(dòng)程序的跨平臺(tái)性更好,所有傳輸層驅(qū)動(dòng)程序都需要調(diào)用NDIS接口來(lái)訪問(wèn)網(wǎng)絡(luò)。NDIS在Windows中的拓?fù)浣Y(jié)構(gòu)如圖1所示。一般情況NDIS包含符合NDIS規(guī)范的3種常見驅(qū)動(dòng)程序類型:(1)NDIS小端口驅(qū)動(dòng)程序(Miniport Driver)。有兩個(gè)基本功能:其一,管理一個(gè)網(wǎng)絡(luò)接口卡(NIC),包括通過(guò)NIC收發(fā)數(shù)據(jù)。其二,提供與高層驅(qū)動(dòng)程序之間的接口,例如中間層驅(qū)動(dòng)程序和傳輸協(xié)議驅(qū)動(dòng)程序。(2)NDIS協(xié)議驅(qū)動(dòng)程序(Protocol Driver)。傳輸協(xié)議在NDIS驅(qū)動(dòng)程序?qū)哟谓Y(jié)構(gòu)中屬于最高層驅(qū)動(dòng)程序,而它經(jīng)常在實(shí)現(xiàn)傳輸層協(xié)議的傳輸驅(qū)動(dòng)程序中被用作最底層驅(qū)動(dòng)程序,例如TCP/IP或IPX/SPX。傳輸協(xié)議驅(qū)動(dòng)程序分配包,從應(yīng)用程序中將數(shù)據(jù)拷貝到包中,并通過(guò)調(diào)用NDIS函數(shù)將這些包發(fā)送到低層驅(qū)動(dòng)程序中。傳輸協(xié)議驅(qū)動(dòng)程序也為從下層驅(qū)動(dòng)程序中接收包提供了接口。協(xié)議驅(qū)動(dòng)程序?qū)⒔邮盏降臄?shù)據(jù)轉(zhuǎn)換成相應(yīng)的客戶應(yīng)用數(shù)據(jù)。(3)NDIS中間層驅(qū)動(dòng)程序(Intermediate Driver)。NDIS中間驅(qū)動(dòng)位于小端口驅(qū)動(dòng)和協(xié)議驅(qū)動(dòng)之間,這樣可以在網(wǎng)卡驅(qū)動(dòng)程序和協(xié)議驅(qū)動(dòng)程序之間插入自己的NDIS過(guò)濾驅(qū)動(dòng)程序,在該層驅(qū)動(dòng)程序可以截獲所有網(wǎng)絡(luò)報(bào)文并加以處理,執(zhí)行效率較高。
圖1 NDIS拓?fù)浣Y(jié)構(gòu)
木馬的特征主要有:自動(dòng)運(yùn)行性,欺騙性,自動(dòng)恢復(fù)性,頑固性和隱蔽性。隱蔽性是木馬的首要特征。根據(jù)木馬程序?qū)τ?jì)算機(jī)的具體動(dòng)作方式,可以把現(xiàn)有的木馬程序分為:(1)遠(yuǎn)程控制型木馬。(2)密碼發(fā)送型木馬。(3)破壞型木馬。(4)鍵盤記錄型木馬。(5)即時(shí)通訊型木馬。(6)網(wǎng)銀型木馬。(7)FTP型木馬。上述類型木馬中以密碼發(fā)送型木馬和網(wǎng)銀型木馬造成的損失最大。
密碼發(fā)送型木馬是找到所有的隱藏密碼,并在受害者不知情的情況下將其發(fā)送到指定信箱。網(wǎng)銀型木馬專門針對(duì)網(wǎng)絡(luò)銀行攻擊,采用記錄鍵盤和系統(tǒng)動(dòng)作的方法盜取網(wǎng)銀賬號(hào)和密碼,并發(fā)送到作者指定的郵件,直接導(dǎo)致用戶的經(jīng)濟(jì)損失。通過(guò)對(duì)木馬病毒的特征及種類分析[3],大部分木馬病毒與主控機(jī)進(jìn)行通信,以接受主控機(jī)指令并發(fā)送所竊取的各種重要信息,是木馬病毒有別于其他病毒或蠕蟲的最大特點(diǎn)。
木馬病毒的通信方式主要有[4]:(1)傳統(tǒng)的客戶∕服務(wù)通信模式。即木馬病毒打開某個(gè)端口進(jìn)行監(jiān)聽以獲得主控機(jī)的連接消息,以便與之進(jìn)行通信交流。(2)端口寄生模式。就是木馬病毒利用目標(biāo)機(jī)上一個(gè)已經(jīng)打開的端口進(jìn)行監(jiān)聽,遇到指令就進(jìn)行解釋執(zhí)行;由于這時(shí)木馬實(shí)際上是寄生在已有的系統(tǒng)服務(wù)之上,因此無(wú)法通過(guò)系統(tǒng)端口掃描發(fā)現(xiàn)此類木馬病毒。(3)端口反彈模式。由于絕大多數(shù)防火墻都嚴(yán)格限制由外向內(nèi)的連接請(qǐng)求,故工作在傳統(tǒng)客戶∕服務(wù)通信模式下的木馬往往很難奏效。而端口反彈型木馬則恰恰相反,它利用了防火墻對(duì)由內(nèi)向外的連接請(qǐng)求通常不加限制的特點(diǎn),將主控機(jī)作為服務(wù)器,而目標(biāo)機(jī)作為客戶,主動(dòng)向外發(fā)出連接請(qǐng)求。如將主控機(jī)監(jiān)聽端口設(shè)為80,偽裝成Web服務(wù)器,則目標(biāo)機(jī)的通信請(qǐng)求都會(huì)被防火墻誤認(rèn)為是HTTP請(qǐng)求而予以通行。(4)利用應(yīng)用層協(xié)議。木馬為避開新端口以增加其隱蔽性,往往會(huì)利用現(xiàn)有的高層協(xié)議,如HTTP協(xié)議、FTP協(xié)議或SMTP協(xié)議進(jìn)行通信交流。為此木馬主控機(jī)會(huì)偽裝成一個(gè)支持CGI的HTTP服務(wù)器,在80端口監(jiān)聽連接請(qǐng)求。而目標(biāo)機(jī)則可以利用協(xié)議與主控機(jī)進(jìn)行通信交流,傳送目標(biāo)機(jī)中的重要敏感信息。(5)利用ICMP協(xié)議。木馬病毒利用ICMP協(xié)議進(jìn)行通信交流,可有效避免被端口掃描工具所察覺,增強(qiáng)其隱蔽性。但由于ICMP協(xié)議不是一個(gè)可靠的有連接傳輸,因此只能用于傳遞一些敏感信息,而不適用于進(jìn)行實(shí)時(shí)圖像傳輸和遠(yuǎn)程控制。同時(shí)由于目前基于ICMP的攻擊方式很多,有些防火墻阻塞了ICMP包,在這種情況下,利用ICMP協(xié)議的木馬病毒就失靈了。
通過(guò)對(duì)木馬病毒通信特征及方式的分析可知,大部分木馬病毒都要主動(dòng)與外界進(jìn)行聯(lián)系,并建立連接,把用戶的重要信息發(fā)送出去。如果在應(yīng)用層進(jìn)行攔截,木馬病毒可以輕松繞過(guò),從而無(wú)法進(jìn)行有效攔截。針對(duì)這些特征,本文提出利用在NDIS中間層加入一個(gè)過(guò)濾驅(qū)動(dòng),使所有進(jìn)行通信的數(shù)據(jù)包都要經(jīng)過(guò)這個(gè)過(guò)濾驅(qū)動(dòng)的過(guò)濾,并特別對(duì)主動(dòng)對(duì)外聯(lián)系的數(shù)據(jù)包進(jìn)行重點(diǎn)分析。為不影響數(shù)據(jù)包的傳輸速率,減少對(duì)數(shù)據(jù)包的處理時(shí)間,本文通過(guò)分析數(shù)據(jù)包的IP地址、相應(yīng)的端口號(hào)及進(jìn)程,對(duì)數(shù)據(jù)包進(jìn)行檢測(cè),而不對(duì)數(shù)據(jù)包的內(nèi)容進(jìn)行分析。在該層的過(guò)濾驅(qū)動(dòng)不需要關(guān)心報(bào)文的收發(fā),網(wǎng)絡(luò)報(bào)文的收發(fā)操作由NDIS中的協(xié)議驅(qū)動(dòng)和小端口驅(qū)動(dòng)負(fù)責(zé)。以發(fā)送報(bào)文為例,如圖2所示,在處理過(guò)程中,為降低丟包率,NDIS中間層驅(qū)動(dòng)在截獲完整的報(bào)文后,直接放入網(wǎng)絡(luò)報(bào)文隊(duì)列,對(duì)于分片報(bào)文,則進(jìn)入分片重組隊(duì)列,重組完成后再放入網(wǎng)絡(luò)報(bào)文隊(duì)列。
圖2 木馬防護(hù)系統(tǒng)結(jié)構(gòu)
木馬防護(hù)平臺(tái)采用多線程技術(shù),其中排隊(duì)處理線程專門負(fù)責(zé)網(wǎng)絡(luò)報(bào)文的排隊(duì),報(bào)文分析線程處理隊(duì)列中的報(bào)文。為減少對(duì)報(bào)文的處理時(shí)間,報(bào)文分析線程首先查看包的IP地址和端口號(hào),然后和IP信息庫(kù)進(jìn)行比對(duì),如果IP信息庫(kù)中存在此IP地址,并且相應(yīng)的安全標(biāo)記顯示為安全,則認(rèn)為發(fā)往此目的的IP數(shù)據(jù)包安全。如果IP信息庫(kù)中不存在此IP地址,則說(shuō)明此數(shù)據(jù)包是一個(gè)進(jìn)程主動(dòng)向外發(fā)送的,報(bào)文分析線程把端口號(hào)發(fā)送給IP信息庫(kù)管理程序,然后IP信息庫(kù)管理程序通過(guò)端口號(hào)查出該端口號(hào)屬于哪一個(gè)進(jìn)程,再判斷該進(jìn)程是否為正常進(jìn)程。如果屬于非法進(jìn)程,則把該數(shù)據(jù)包丟棄。如果是正常進(jìn)程,IP信息庫(kù)管理程序把此IP地址、相應(yīng)的端口號(hào)和進(jìn)程加入到信息庫(kù)中,設(shè)安全標(biāo)記為安全,然后把數(shù)據(jù)包向下正常發(fā)送出去。對(duì)于計(jì)算機(jī)接收到的數(shù)據(jù)包,對(duì)該數(shù)據(jù)包的IP地址和信息庫(kù)進(jìn)行匹配,如果信息庫(kù)中存在此IP地址,則把該數(shù)據(jù)包直接向上傳送,如果不存在,則把此IP地址和端口號(hào)添加到信息庫(kù)中,同時(shí)IP信息庫(kù)管理程序把擁有該端口號(hào)的進(jìn)程名也添加進(jìn)去。
IP信息庫(kù)是本文提出的木馬防護(hù)平臺(tái)的核心模塊之一,信息庫(kù)管理程序?qū)π畔?kù)進(jìn)行管理,實(shí)現(xiàn)查找、修改、刪除等功能。同時(shí)信息庫(kù)管理程序具有判斷進(jìn)程合法性的功能。它通過(guò)一個(gè)合法進(jìn)程表對(duì)一個(gè)進(jìn)程進(jìn)行判斷。如果該進(jìn)程在合法表中,則該進(jìn)程合法,否則通過(guò)下列規(guī)則進(jìn)行判斷。其所依據(jù)的判斷規(guī)則[5]如下:
(1)如果進(jìn)行網(wǎng)絡(luò)通信的進(jìn)程名與系統(tǒng)進(jìn)程名(如services.exe)相同,但其路徑不在系統(tǒng)進(jìn)程目錄(system32)下,則為不合法。
(2)如果進(jìn)行網(wǎng)絡(luò)通信的進(jìn)程名與系統(tǒng)進(jìn)程名相似,如程svch0st.exe與系統(tǒng)進(jìn)程svchost.exe相似,則為不合法。
(3)如果進(jìn)程運(yùn)行時(shí)自動(dòng)發(fā)送電子郵件,則將此進(jìn)程名進(jìn)行顯示給用戶,由用戶對(duì)此郵件的行為進(jìn)行判斷,判斷結(jié)果存入IP信息庫(kù),如果是合法進(jìn)程則同時(shí)添加到合法進(jìn)程表中。
(4)如果進(jìn)程使用ICMP協(xié)議進(jìn)行通信,則將進(jìn)程名顯示給用戶。通過(guò)和用戶交互進(jìn)行判斷。判斷結(jié)果存入IP信息庫(kù)。如果是合法進(jìn)程則同時(shí)添加到合法進(jìn)程表中。
(5)如果進(jìn)程主動(dòng)向外進(jìn)行連接,則將進(jìn)程名顯示給用戶,通過(guò)和用戶交互進(jìn)行判斷。判斷結(jié)果存入IP信息庫(kù)。同時(shí)如果是合法進(jìn)程則添加到合法進(jìn)程表中。
第(1)條規(guī)則和第(2)條規(guī)則基于木馬程序的進(jìn)程隱藏原理進(jìn)行判定;第(3)條規(guī)則基于木馬程序傳輸信息的途徑進(jìn)行判定;第(4)條規(guī)則基于木馬程序的通信隱藏原理進(jìn)行判定;第(5)條規(guī)則基于木馬程序網(wǎng)絡(luò)通信的端口及其狀態(tài)進(jìn)行判定。
IP信息庫(kù)結(jié)構(gòu)如圖3所示,其中每一條記錄顯示出一個(gè)進(jìn)程,其所用的端口號(hào)和進(jìn)行通信的目的IP地址及相應(yīng)的安全標(biāo)記。
圖3 IP信息庫(kù)記錄數(shù)據(jù)結(jié)構(gòu)
由于一臺(tái)PC機(jī)所訪問(wèn)的IP地址并不是很多,本文采用哈希方法進(jìn)行檢索,這在很大程度上提高了對(duì)記錄的檢索速度,對(duì)于一個(gè)給定的IP地址,首先計(jì)算它的哈希值,找到相應(yīng)的位置,然后進(jìn)行比對(duì),如果不是,再看該記錄的下一個(gè)記錄是否為空,如果不為空則向下查找。
中間層過(guò)濾驅(qū)動(dòng)捕獲接收和發(fā)送的數(shù)據(jù)包是NDIS_PACKET格式,通過(guò)調(diào)用NdisQueryPacket函數(shù)獲取得到NDIS_PACKET包的內(nèi)容[6],得到傳輸數(shù)據(jù)包的內(nèi)容,判斷所捕獲的是不是TCP∕UDP包或其他協(xié)議包,并取得包中所含的IP地址和端口號(hào),將得到的IP地址和端口號(hào)交給數(shù)據(jù)包分析線程。該線程通過(guò)DeviceIoControl函數(shù)和應(yīng)用層的IP信息庫(kù)管理程序進(jìn)行相互通信,通過(guò)信息庫(kù)管理程序?qū)邮盏降腎P地址和IP信息庫(kù)進(jìn)行匹配,如果匹配成功并且安全,則將數(shù)據(jù)包傳向上層驅(qū)動(dòng)繼續(xù)進(jìn)行收包,或者向下層驅(qū)動(dòng)繼續(xù)發(fā)包,完成整個(gè)數(shù)據(jù)包的發(fā)送或者接收。以發(fā)送工作流程為例,如圖4所示。
圖4 數(shù)據(jù)包發(fā)送流程
測(cè)試環(huán)境是在Windows XP系統(tǒng)下進(jìn)行,由于該機(jī)制工作在內(nèi)核層,所以在虛擬機(jī)下進(jìn)行測(cè)試。文中采用3種木馬病毒及常用的Ping命令進(jìn)行了測(cè)試,測(cè)試結(jié)果如表1所示。
表1 防護(hù)平臺(tái)測(cè)試結(jié)果
該機(jī)制開始時(shí)會(huì)對(duì)通信速率有一定的影響,并且有時(shí)需要和用戶進(jìn)行交互,但隨著IP信息庫(kù)和合法進(jìn)程表的信息增加,通信速率會(huì)迅速恢復(fù)到正常,并且和用戶交互的次數(shù)也迅速減少。
本文采用NDIS中間層過(guò)濾驅(qū)動(dòng)技術(shù)實(shí)現(xiàn)了對(duì)數(shù)據(jù)包捕獲和分析,通過(guò)分析數(shù)據(jù)包IP地址、端口號(hào)和其對(duì)應(yīng)進(jìn)程的合法性,能夠?qū)崿F(xiàn)對(duì)木馬病毒通信的攔截和木馬進(jìn)程發(fā)現(xiàn),這在很大程度上降低了對(duì)數(shù)據(jù)包的處理時(shí)間,使發(fā)送和接收數(shù)據(jù)包速率沒有明顯下降。下一步改進(jìn)方向:在基于統(tǒng)計(jì)學(xué)的基礎(chǔ)上,對(duì)一部分可疑數(shù)據(jù)包中數(shù)據(jù)進(jìn)行安全分析,以達(dá)到降低木馬病毒的漏報(bào)率和誤報(bào)率,同時(shí)結(jié)合防火墻和殺毒軟件能更好地實(shí)現(xiàn)對(duì)木馬程序的攔截和查殺。
[1]柳岸,龍雅琴,古樂野.基于包過(guò)濾技術(shù)的網(wǎng)絡(luò)安全的研究[J].計(jì)算機(jī)應(yīng)用,2006,26(9):2160 -6162.
[2]陳小愛,劉海濤.基于NDIS中間層的通信安全機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)[J].微型電腦應(yīng)用,2008,24(8):6 -8.
[3]李斯.淺析木馬程序攻擊手段及防范技術(shù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2009(8):16-18.
[4]朱明,徐騫,劉春明.木馬病毒分析及其檢測(cè)方法研究[J].計(jì)算機(jī)工程與應(yīng)用,2003(28):176 -179.
[5]鐘明全,李煥洲,唐彰國(guó),等.基于網(wǎng)絡(luò)驅(qū)動(dòng)技術(shù)的木馬通信檢測(cè)系統(tǒng)[J].計(jì)算機(jī)工程,2010,36(9):150 -152.
[6]楊志程,舒輝,董衛(wèi)宇.基于NDIS通信技術(shù)的木馬病毒分析[J].計(jì)算機(jī)工程,2008,34(10):147-149.