摘要:本文對網(wǎng)絡(luò)上危害比較大的特洛伊木馬病毒的入侵機制進行了詳盡剖析,分析木馬病毒進程隱藏技術(shù),特別是木馬DLL線程插入技術(shù),并提出該病毒的防范措施。
關(guān)鍵詞:特洛伊木馬; 進程隱藏; DLL線程插入
特洛伊木馬英文叫做“Trojanhorse”,其名稱取自希臘神話的特洛伊木馬記,它是一種基于遠程控制的黑客工具,具有隱蔽性和非授權(quán)性的特點。所謂隱蔽性是指木馬的設(shè)計者為了防止木馬被發(fā)現(xiàn),會采用多種手段隱藏木馬,這樣服務(wù)端即使發(fā)現(xiàn)感染了木馬,由于不能確定其具體位置,往往只能望“馬”興嘆;所謂非授權(quán)性是指一旦控制端與服務(wù)端連接后,控制端將享有服務(wù)端的大部分操作權(quán)限,包括修改文件,修改注冊表,控制鼠標,鍵盤等等,而這些權(quán)力并不是服務(wù)端賦予的,而是通過木馬程序竊取的。
一、 木馬病毒侵入機制
木馬程序技術(shù)發(fā)展至今,已經(jīng)經(jīng)歷了4代,第一代,即是簡單的密碼竊取、發(fā)送等,沒有什么特別之處。第二代木馬,在技術(shù)上有了很大的進步,冰河可以說是國內(nèi)木馬的典型代表之一。第三代木馬在數(shù)據(jù)傳遞技術(shù)上又做了不小的改進,出現(xiàn)了ICMP等類型的木馬,利用畸形報文傳遞數(shù)據(jù),增加了查殺的難度。第四代木馬在進程隱藏方面做了大的改動,采用了內(nèi)核插入式的嵌入方式,利用遠程插入線程技術(shù),嵌入DLL線程,或者掛接PSAPI,實現(xiàn)木馬程序的隱藏,甚至在Windows NT/2000下,都達到了良好的隱藏效果。
1. 木馬程序的進程隱藏技術(shù)。木馬病毒的隱藏分為兩類,一種是真隱藏另一種是偽隱藏。真隱藏則是讓程序徹底地消失,不以一個進程或者服務(wù)的方式工作;偽隱藏,就是指程序的進程仍然存在,只不過是讓它消失在進程列表里。
在WINDOWS系統(tǒng)下,可執(zhí)行文件主要是Exe和Com文件,這兩種文件在運行時都有一個共同點,會生成一個獨立的進程。尋找特定進程是我們發(fā)現(xiàn)木馬的方法之一。隨著入侵檢測軟件的不斷發(fā)展,關(guān)聯(lián)進程和SOCKET已經(jīng)成為流行的技術(shù)。假設(shè)一個木馬在運行時被檢測軟件同時查出端口和進程,在NT下正常情況用戶進程對于系統(tǒng)管理員來說都是可見的。要想做到木馬的進程偽隱藏,傳統(tǒng)的方法是把木馬服務(wù)器端的程序注冊為一個服務(wù)就可以了,程序就會從任務(wù)列表中消失了,因為系統(tǒng)不認為他是一個進程。
對于第二種木馬真隱藏,較新的技術(shù)是“DLL線程插入”。木馬的服務(wù)器部分程序運行之后,它不具備一般進程,也不應(yīng)該具備服務(wù)的,也就是說,完全地融進了系統(tǒng)的內(nèi)核。木馬程序融入或滲進Windows系統(tǒng)的核心文件——動態(tài)鏈接庫文件(DLL),DLL是Dynamic Link Library的縮寫,DLL文件是Windows的基礎(chǔ),因為所有的API函數(shù)都是在DLL中實現(xiàn)的。DLL文件沒有程序邏輯,是由多個功能函數(shù)構(gòu)成,它并不能獨立運行,一般都是由進程加載并調(diào)用的。因為DLL文件不能獨立運行,所以在進程列表中并不會出現(xiàn)DLL,假設(shè)我們編寫了一個木馬DLL,并且通過別的進程來運行它,那么無論是入侵檢測軟件還是進程列表中,都只會出現(xiàn)那個進程而并不會出現(xiàn)木馬DLL。如果那個進程是可信進程,那么我們編寫的DLL作為那個進程的一部分,也將成為被信賴的一員而為所欲為。
2. 木馬程序的自加載運行技術(shù)。讓程序自運行的方法比較多,除了最常見的方法:加載程序到啟動組,寫程序啟動路徑到注冊表的HKEY_LOCAL_MACHINE\\SOFTW的方法外,還有很多其他的辦法,如可以修改Boot.ini,或者通過注冊表里的輸入法鍵值直接掛接啟動,通過修改Explorer.exe啟動參數(shù)等等的方法。
如傳奇終結(jié)者Trojan.PSW.LMir)感染此木馬后,病毒把自身復制到系統(tǒng)目錄,命名為Svchosts.exe”,然后把自身刪除,在注冊表自啟動項HKEY_CURRENT_USER\\Software中添加“Svchosts.exe”SVCHOSTS.EXE 的鍵值使自己能夠隨系統(tǒng)自動運行,并釋放“WinSoft3.DLL”,通過遠程線程的方式注入到系統(tǒng)Explorer.exe中。
3. 木馬程序的數(shù)據(jù)連接的隱藏。木馬程序的數(shù)據(jù)傳遞方法有很多種,其中最常見的要屬TCP,UDP傳輸數(shù)據(jù)的方法了,通常是利用Winsock與目標機的指定端口建立起連接,使用send和recv等API進行數(shù)據(jù)的傳遞。由于這種方法的隱蔽性比較差,往往容易被一些工具軟件查看到,最簡單的,比如在命令行狀態(tài)下使用netstat命令,就可以查看到當前的活動TCP,UDP連接。
合并端口是木馬使用一種端口連接方法,合并端口的方法是在一個端口上同時綁定兩個TCP或者UDP連接。這聽起來不可思議,但事實上確實如此,而且已經(jīng)出現(xiàn)了使用類似方法的程序,通過把自己的木馬端口綁定于特定的服務(wù)端口之上,從而達到隱藏端口的目的。
二、 木馬攻擊的安全防范
通過對木馬入侵機制的分析,可以知道要防止木馬的攻擊,特別是木馬通過網(wǎng)絡(luò)漏洞的攻擊,最好的方法是盡力避免計算機端口被掃描和監(jiān)聽,先于攻擊者發(fā)現(xiàn)端口漏洞,并采取有效措施的主要有:
1. 及時安裝操作系統(tǒng)補丁程序。在使用網(wǎng)絡(luò)系統(tǒng)時,要設(shè)置和保管好賬號、密碼和系統(tǒng)日志文件,并對用戶設(shè)定嚴格訪問權(quán)限。
2. 關(guān)閉不用的端口。為了保證計算機和網(wǎng)絡(luò)的安全,應(yīng)把不必要端口關(guān)閉,只開放所必需的端口。
3. 安裝防火墻,建立安全屏障。防火墻可以屏蔽網(wǎng)絡(luò)的信息和結(jié)構(gòu),降低來自外部的網(wǎng)絡(luò)入侵。
參考文獻:
[1] 郭秋萍.計算機網(wǎng)絡(luò)實用教程[M].北京航空航天大學出版社,2005.
[2] 譚響柱.計算機網(wǎng)絡(luò)漏洞淺析及安全防護[J].網(wǎng)絡(luò)安全技術(shù)應(yīng)用,2006(1).
[3] 戚文靜等.網(wǎng)絡(luò)安全與管理 [M] . 北京:中國水利水電出版社,2004.