如今,信息系統(tǒng)對網(wǎng)絡的依賴程度日益增加。軟件日益復雜化(例如,虛擬機中的可擴展性觀念),將導致嚴重而廣泛的軟件漏洞,并勢必成為各種軟件問題的根源,同時,惡意軟件問題也會不斷增多。
惡意軟件的前世今生
惡意軟件是指計算機用戶并不需要的或有害的所有軟件類型。如同所有軟件一樣,惡意軟件隨著和其它軟件中所發(fā)現(xiàn)的新漏洞的增多而不斷演化。最初的惡意軟件不過是無聊的程序設計者用來證明其勇氣和能力的途徑,或是報復其他人,或是為了演示漏洞,或是向那些粗心大意的業(yè)內(nèi)人士示威,給他人的計算機和數(shù)據(jù)帶來損害。惡意軟件的范圍很廣,如廣告軟件、騙人的安全軟件、后門程序、漏洞利用程序、鍵盤記錄程序、rootkit(根瘤)、、等,都屬于惡意軟件。
1995年Java出現(xiàn),基于Web的軟件這個概念應運而生。雖然Java的設計目的是通過確保安全性來運行小型的Web應用程序(Java程序),但Java的虛擬機容易遭受各種常見的軟件問題,其原因在于Java存在著很多漏洞和缺陷。這暴露了一個安全問題,即對被攻擊軟件的依賴性會使得現(xiàn)代世界面臨風險。
在這個問題上,發(fā)現(xiàn)自己與各種漏洞和惡意軟件問題糾纏不清。Windows操作系統(tǒng)存在的漏洞和缺陷為攻擊者創(chuàng)造了便利條件,造成不少安全問題。利用這些漏洞成為某些惡意人員的樂事。
如今,微軟產(chǎn)品的安全狀況不斷改善,這促使攻擊者轉(zhuǎn)向其它軟件,如的產(chǎn)品。因為網(wǎng)絡連接已經(jīng)成為所有軟件的必然選項,日益復雜的框架(如J2EE)進一步強化了軟件的復雜性,可擴展性成為現(xiàn)代軟件的一種標準,這使得系統(tǒng)日益復雜,漏洞越來越多。只要這種趨勢繼續(xù)存在,惡意軟件問題就將與我們共存,其造成的危害也將日益隱密和嚴重。
由于惡意軟件大多是由專業(yè)的網(wǎng)絡間諜和網(wǎng)絡罪犯編寫的,其根本目的是為了金錢。所以,當前的惡意軟件狀況比以往更惡劣?;赪eb的應用程序很容易成為攻擊者的目標?!巴刀墒较螺d”能直接導致一系列被稱為高級持續(xù)性威脅(APT)的攻擊。此外,惡意廣告也呈現(xiàn)出有增無減的趨勢。
其中,Zeus是現(xiàn)代Web惡意軟件的一個例子。Zeus可以控制受害人的,并執(zhí)行“中間人”攻擊。在金融服務公司的合法用戶成為受害者之后,他們首當其沖會遭受這種攻擊。該木馬可以發(fā)現(xiàn)、濫用、導出合法的授權用戶的憑證。
當然,惡意軟件絕不僅限于Web。任何使用廣泛的軟件都可能成為目標。如微軟和Adobe的軟件,雖然這些公司努力改善著其軟件的安全狀況
與惡意軟件相關的經(jīng)濟利益使專業(yè)的網(wǎng)絡罪犯看到了巨大商機,惡意軟件的設計也更為精細、隱蔽。惡意軟件與安全軟件的較量是罪惡的地下商業(yè)利益集團與善意用戶、安全軟件廠商的持久戰(zhàn)爭。
揭密現(xiàn)代惡意軟件的技術
隨著惡意軟件產(chǎn)業(yè)的發(fā)展,其新版本日益強大和智能。理解現(xiàn)代惡意軟件如何“與時俱進”有助于認識惡意軟件的總體狀況。
用肉眼已經(jīng)無法完全識別現(xiàn)代惡意軟件。在多數(shù)情況下,使用常見的故障診斷工具也無法確認這種。雖然不同的惡意軟件使用不同的伎倆,但它們?nèi)跃邆洳簧傧嗤男袨樘卣鳌?/P>
1.給系統(tǒng)文件打補丁和進程感染
“打補丁”通常被認為是廠商發(fā)布新代碼來更新操作系統(tǒng)和應用程序的一個過程。但在惡意軟件環(huán)境中,打補丁的過程涉及到對著名的目標系統(tǒng)文件實施逆向工程,并將定制的代碼注入到結果中。
確認這種惡意代碼的問題在于,看不到文件系統(tǒng)添加了東西。對受感染的計算機而言,其正在運行的進程列表僅顯示出人們常常看到的進程,惡意軟件有效地將自己從普通的診斷工具面前隱藏起來。清除這種惡意軟件的唯一方法是從受感染的文件中定位并清除惡意代碼。
2、代碼復活
在感染事件期間,系統(tǒng)可能會被安裝多種惡意軟件。在其代碼開發(fā)的整合過程中,這些軟件包可以進一步增長壯大,依靠的是彼此之間的監(jiān)視。最終的惡意軟件包可以監(jiān)視系統(tǒng)上的其它惡意軟件的清除過程。如果將任何一個惡意軟件版本清除,任何剩余的版本和組件都可以重新啟動,甚至從中遺留的組件中重新安裝剩余部分,或從下載來完成安裝過程。
這種狀況會使惡意軟件的清除過程復雜化。標準的清除工具,如注冊表清除、進程清除,或任何傳統(tǒng)的診斷工具,都不足以完全同時清除每一個部分,遺漏的任何組件都將導致系統(tǒng)在短時間之內(nèi)被重新感染。
3、代碼隨機化
找到惡意軟件的一種機制是使用代碼簽名,即查找那些駐存于受感染系統(tǒng)中的惡意代碼特征。在發(fā)現(xiàn)惡意軟件的部分代碼或附加到系統(tǒng)文件中的代碼特征時,反惡意軟件工具就會確認其存在,并試圖清除。基于簽名的檢測是一種常用的工具,許多反惡意軟件工具都大量使用它。但是,這種檢測方法的廣泛使用并不能掩蓋其固有的局限性。
基于簽名的識別方法的大量使用也有其復雜性的一面,即在惡意軟件安裝過程中,內(nèi)置到惡意代碼的自我編譯過程中的隨機化元素。這些特性可以使惡意軟件使用多種可能的配置來安裝自身。因而,檢測器所看到的惡意軟件是隨時間而不斷變化的。
很明顯,這種隨機化水平要求惡意軟件實例之間有足夠的相似性,只有這樣才能完成預期的任務。然而,隨機化的影響意味著,在惡意軟件通過互聯(lián)網(wǎng)復制自身時,必須為它的實例創(chuàng)建多個簽名。這些代碼的隨機化特性在當今的多數(shù)高級的惡意軟件包中都可以發(fā)現(xiàn)。只有通過復雜的逆向工程,并由反惡意軟件和軟件公司進行“行為建?!?,才能確認這些惡意軟件的“異構體”。
4、rootkit(根瘤)和偽裝行為
這是最后一種現(xiàn)代惡意軟件特別危險的類型,因為它能夠?qū)⒆砸言诒镜夭僮飨到y(tǒng)中隱藏起來。與基于系統(tǒng)的rootkit已經(jīng)截然不同,這類Windows惡意軟件尤其擅長“隱身術”。
rootkit(根瘤)利用了前文所描述的文件補丁的功能,但其目的卻完全不同。在“常規(guī)”的惡意軟件中,其軟件補丁會將所需要的功能安裝到受害者的電腦上,而rootkit(根瘤)卻通過一個稱為“系統(tǒng)調(diào)用鉤子”的功能重定向系統(tǒng)的功能調(diào)用。
感染rootkit(根瘤)的最終結果是,rootkit會有效地在系統(tǒng)和用戶面前“隱身”。任何通過圖形用戶界面或命令行來查看文件夾內(nèi)容的企圖都會被rootkit(根瘤)截獲,并在最終結果顯示給用戶之前,惡意軟件文件存在的任何線索都被清除得干干凈凈。