蘭高志
(重慶工商大學(xué) 計算機學(xué)院,重慶 400067)
縱觀天下,計算機病毒和黑客程序的查殺工具很多。目前使用比較廣泛的就有江民殺毒軟件、瑞星殺毒軟件、金山毒霸、安全衛(wèi)士360、卡巴斯基、諾頓賽門鐵克等,另外還有各種各樣的安全防火墻。雖然這些工具深受廣大網(wǎng)民的青睞,也起到了不錯的效果。但就最近的情況來看,病毒和黑客程序越殺越多,越防越多,殺而不滅,防不勝防,可以說病毒與反病毒,黑客與反黑客的形勢十分嚴峻。究其原因,主要是這類工具都屬于一種被動式查殺技術(shù)。也就是說當(dāng)計算機病毒和黑客程序已經(jīng)鉆到計算機內(nèi)部之后才去進行處理,包括掃描、分析、隔離、殺滅等一系列步驟,這明顯滯后于病毒和黑客程序的制作過程,而且對新生的病毒和黑客程序更是無能為力,還必須等到下一次升級病毒庫或者黑客程序庫后才有相應(yīng)的解決方法[1],到那時已經(jīng)是“水漫金山”了,以至于當(dāng)前全世界的病毒和黑客程序十分猖獗,這給網(wǎng)絡(luò)的安全造成了深重的災(zāi)難,給人民的財產(chǎn)造成了重大的損失。為此,下面介紹一種新技術(shù)新方法,即在網(wǎng)絡(luò)的端口前設(shè)置一道安全門,將病毒和黑客程序殺滅在這道安全門之外,使病毒或者黑客程序不能進入計算機的內(nèi)部,從而在根本上解決病毒和黑客程序隨心所欲大肆泛濫這一棘手問題。
病毒和黑客程序的主要特點不言而喻,網(wǎng)民皆知,其中最為突出的特點就在于它的隱蔽性。為了不讓別人發(fā)現(xiàn),它們事先都會絞盡腦汁、采取各種手段去隱藏自己,常常匿于一個很不起眼的位置,甚至在給你造成了重大損失后你仍然不知道它在什么地方,往往使人們感到束手無策,捶胸頓足。尤其是特洛伊木馬一類的黑客程序,它們都有著非常相似的三部曲[2]。其一是寄生在正常程序之中,隨著正常程序的下載而一起進入別人的計算機;其二是在計算機啟動時被某個條件觸發(fā)后靜悄悄地調(diào)入內(nèi)存并以進程的方式來實施搗亂和破壞;其三是在目標機器中暗地里打開一個或幾個特殊端口與遠方的黑客電腦進行連接,遙相呼應(yīng),里應(yīng)外合,瘋狂進行罪惡的黑客勾當(dāng)。
眾所周知,所謂的進程其實就是一個正在執(zhí)行著的程序,而且是一個后綴名為.exe的文件[3]。通俗地說,當(dāng)一個程序從硬盤加載到內(nèi)存時,系統(tǒng)就創(chuàng)建了一個進程,一旦該程序執(zhí)行完畢,剛才所創(chuàng)建的這個進程也就消亡了。另一方面,黑客植入別人電腦中的進程,幾乎采用的全是服務(wù)器/客戶端模式,所以它都毫無疑問地包含著兩個模塊,即服務(wù)器端模塊和客戶端模塊。而且這種具有破壞作用的進程總是由客戶端模塊發(fā)起的,服務(wù)器端模塊則予以響應(yīng),也就是說服務(wù)器端在收到客戶端的進程請求時向客戶端提供相應(yīng)的進程服務(wù),釋放端口,打開后門,讓客戶端的黑客程序從這里順利進入。有的時候盡管客戶端沒有發(fā)起攻擊,但被種植了木馬的機器在不經(jīng)意間運行了寄生有惡性進程代碼的正常程序時也會產(chǎn)生同樣的后果。在這種情況下,黑客就可以肆無忌憚地在他自己的機器上進行遙控操作,為所欲為,尋找漏洞,復(fù)制文件,修改配置,刪除資料,獲取非法訪問權(quán)限,盜竊QQ賬號、游戲賬號、銀行賬號和個人密碼等。
既然病毒和黑客程序是在網(wǎng)絡(luò)上經(jīng)過端口傳播的,以后又是以進程的方式運行從而實施破壞活動的,所以只要設(shè)計一道安全大門,在網(wǎng)卡的前級電路中對病毒和黑客程序進行檢測,把守住進入網(wǎng)絡(luò)的端口,一旦有病毒和黑客程序從網(wǎng)線上傳過來就對其進程代碼展開捕獲,并毫不留情就地加以徹底清除。
在互聯(lián)網(wǎng)上的TCP/IP 4層標準體系結(jié)構(gòu)框架之下,網(wǎng)絡(luò)上傳送的所有數(shù)據(jù)均分為4個部分:幀頭、報頭、段頭和有效數(shù)據(jù)。不同的組成部分遵循不同的網(wǎng)絡(luò)協(xié)議,實現(xiàn)不同的網(wǎng)絡(luò)功能[4]。其中,有效數(shù)據(jù)就是甲乙雙方進行數(shù)據(jù)交換時的原始數(shù)據(jù),而幀頭、報頭和段頭都是按照TCP/IP協(xié)議逐層封裝出來的附加信息,具體的封裝情況如圖1所示。
圖1 數(shù)據(jù)包封裝格式Fig.1 Encapsulation format for data package
在圖1中,有效數(shù)據(jù)作為TCP/IP標準體系結(jié)構(gòu)的應(yīng)用層,按照原始文件的存儲順序排列成一個整體,在通信過程中通常稱之為數(shù)據(jù)片 (如果數(shù)據(jù)過長時則可以切分成多個片)。這是甲乙雙方彼此交換數(shù)據(jù)時的核心部分,從而構(gòu)成屬于應(yīng)用層中真正意義上的通信實體。接下來要做的事情便是對這個核心部分進行第一次封裝,也就是要在有效數(shù)據(jù)的前面加上包含有16位源端口和16位目標端口以及其他控制信息總共192位的TCP段頭[5],從而構(gòu)成屬于傳送層的數(shù)據(jù)段(Segment)。然后要對有效數(shù)據(jù)進行第二次封裝,也就是要在數(shù)據(jù)段的前面加上包含有32位源IP地址和32位目標IP地址以及其他控制信息總共192位的IP報頭,從而構(gòu)成屬于網(wǎng)絡(luò)層的數(shù)據(jù)報(Datagram)。最后還要對有效數(shù)據(jù)進行第三次封裝,也就是在數(shù)據(jù)報的前面加上包含有48位源MAC地址和48位目標MAC地址以及其他控制信息的幀頭,從而構(gòu)成屬于接口鏈路層的數(shù)據(jù)幀(Data Frame)。這里的幀頭大小取決于當(dāng)時的網(wǎng)絡(luò)技術(shù),幀的大小取決于當(dāng)時的網(wǎng)絡(luò)類型。這樣,有效數(shù)據(jù)被封裝完畢后便通過甲方計算機網(wǎng)卡上的數(shù)據(jù)發(fā)送器向乙方計算機網(wǎng)卡上的數(shù)據(jù)接收器傳送過去[6]。這批數(shù)據(jù)在網(wǎng)上傳送的過程中,網(wǎng)絡(luò)上的路由器要對本次傳輸?shù)臄?shù)據(jù)進行第一次解封裝,換句話說就是要在路由器的網(wǎng)絡(luò)管理系統(tǒng)中自動剝離掉幀頭,只將數(shù)據(jù)報的內(nèi)容從路由器的輸出口往下傳,并送達到該路由器所轄區(qū)域內(nèi)的所有主機上。此時,轄區(qū)內(nèi)的所有主機均能“偵聽”到網(wǎng)絡(luò)上所通過的流量,并將報頭的相關(guān)信息與自己的IP地址相比較,如果比較后兩者相同,則將該數(shù)據(jù)報接收下來;如果不相同,則丟棄該數(shù)據(jù)報。根據(jù)這種傳輸原理,如果在網(wǎng)卡的前級電路中設(shè)置一道防止病毒和黑客程序入侵的安全大門,對所接收到的數(shù)據(jù)報中的所有代碼一個不漏地依次進行嚴格排查,那么一定能收到立竿見影、藥到病除的良好效果。安全門硬件邏輯電路如圖2所示。
圖2 安全門硬件邏輯電路Fig.2 Hardware circuit of safery gate
在圖2中,起著重要作用的是74LS273鎖存器,它是一種由八D觸發(fā)器構(gòu)成的自帶清除功能的專用芯片[7],它除了有8條數(shù)據(jù)輸入線和8條數(shù)據(jù)輸出線外,還有一條系統(tǒng)時鐘線CLK和一條數(shù)據(jù)清除線CLR。通常情況下74LS273鎖存器用來鎖存或清除地址,在這里用來鎖存或清除數(shù)據(jù),兩者的作用完全相同。當(dāng)CLR=1時,74LS273就將數(shù)據(jù)鎖存起來并在系統(tǒng)時鐘脈沖CLK的控制下傳向下一級電路,此時,D端輸入的是什么值,Q端輸出的就是什么值;當(dāng)CLR=0時,數(shù)據(jù)不予鎖存,下一級電路就無數(shù)據(jù)可接收,這種狀態(tài)就是通常所說的74LS273的清除功能[8]。圖2中的非門、八輸入與非門以及四輸入或門則不受時鐘脈沖的控制,當(dāng)輸入端的數(shù)據(jù)到齊后它們會輸出相應(yīng)的信號傳向下一級電路。進一步分析圖2可知,安全門電路其實構(gòu)成了一個真正意義上的檢測電路,專門用來檢測寄生在正常程序中的病毒或黑客程序的進程代碼.exe。 現(xiàn)在假設(shè)某文件內(nèi)嵌入有寄生的.exe代碼,那么它所對應(yīng)的ASCII代碼就為657865H,相應(yīng)的二進制代碼分別為 01100101(B)、01111000(B)、01100101(B),這樣,在時鐘脈沖的控制下,這3個字節(jié)會按照先后順序依次進入到74LS273(1)、74LS273(2)、74LS273(3)中。 如果在這一瞬間,讓3個字節(jié)中的高電平維持不變而其中的低電平經(jīng)非門轉(zhuǎn)換后共產(chǎn)生24個高電平同時傳到3個與非門74LS30之中并在定時計數(shù)器輸出信號CNT=0的作用下使得CLR=0,那么就能夠立刻清除嵌入到正常程序中的寄生代碼 “exe”。因此,這種方法相當(dāng)于掐去了病毒或黑客程序的頭部,清除了該嵌入文件的后綴名,使得剩余的尾部自然不能構(gòu)成一個計算機待執(zhí)行的進程。而另一方面,該電路對于正常程序來說則會順利通過,絲毫不會受到任何影響。當(dāng)然這里的定時計數(shù)信號CNT=0是一個需要通過計算當(dāng)前系統(tǒng)時鐘的脈沖次數(shù)才能解決的問題,實際上關(guān)鍵的核心就在于要如何保證正常程序代碼通過而寄生代碼被清除。其實,現(xiàn)在的定時/計數(shù)器類型很多很成熟,比如常用的555時基芯片或者普通的RC定時電路就能實現(xiàn)這一功能[9]。如果再通過精確地計算就可以將甲乙雙方進行通信前的定時計數(shù)輸出信號CNT預(yù)置為高電平,并且在甲方的數(shù)據(jù)報剛傳到乙方網(wǎng)卡的數(shù)據(jù)接收器的那一時刻就開始進行計數(shù),當(dāng)計數(shù)器計到192b(IP報頭)+192b(TCP段頭)+88b(正常文件名8個字節(jié)及其后綴名3個字節(jié)合計11個字節(jié))=472b時就使CNT高電平立刻轉(zhuǎn)換為低電平,然后將這個低電平一直保持到數(shù)據(jù)報傳送完畢為止,那么,所有寄生在正常程序中的進程后綴名“.exe”都將毫無保留地被掃地出門了。
分析上面的邏輯電路可以知道,這種用來檢測并清除病毒和黑客程序的安全大門具有許多優(yōu)點,一是安全性能非常好,它對于正常程序一點也不造成任何損傷,只對嵌入到正常程序中的寄生代碼予以清除;二是執(zhí)行速度極快,整個電路只占3個時鐘周期,以現(xiàn)在常見的微機系統(tǒng)時鐘4 GHz進行計算,則延時約為0.75 ns,也就是說一個納秒都不到,對于正常人的肉眼來說,在程序的下載過程中壓根兒感覺不到有任何時間上的滯后;三是效果特別顯著,比起傳統(tǒng)的軟件查殺技術(shù)來可謂是簡單方便,新穎獨特,易于實現(xiàn),成本低廉,為凈化Internet環(huán)境、保障網(wǎng)絡(luò)安全、反病毒反黑客開辟了一條嶄新的途徑。
[1]龔兵.計算機維護技術(shù)[M].2版.廣州:華南理工大學(xué)出版社,2003.
[2]Comer D E.Internetworking with TCP/IP principles,protocol and architecture[M].America:Prentice Hall.2000.
[3]FOROUZAN B A.TCP/IP protocol suite[M].2nd ed.New York,NY,USA:McGraw-Hill,Inc.,2002.
[4]SEBASTIAN M S.Application-specific integrated circuits[M].America:Addison-Wesley Professional,2008:25-64.
[5]于文強.計算機網(wǎng)絡(luò)實用技術(shù)[M].北京:清華大學(xué)出版社.2006:19-28.
[6]蘭高志.網(wǎng)卡中硬盤保護功能的增設(shè)[J].計算機工程,2004,30(6):133-134.
LAN Gao-zhi.Increasing hard-disk protection function on netcards[J].Computer Engineering,2004,30(6):133-134.
[7]中國集成電路大全.TTL集成電路[M].北京:國防工業(yè)出版社,1985:30-78.
[8]何立民.單片機應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,1995:69-78.
[9]楊全勝,胡友彬.現(xiàn)代微機原理與接口技術(shù)[M].北京:電子工業(yè)出版社,2002:243-291.