在好萊塢間諜電影里,那些特工們往往以神奇莫測的化妝來欺騙別人,甚至變換成另一個身份,國內對于這種偽裝行為有個通俗的說法——"穿馬甲"。而這種正與邪的爭斗已經延伸到了病毒領域,很多病毒作者通過給病毒"穿馬甲" 、甚至穿多個"馬甲" 的方式,躲避殺毒軟件的查殺,這種技術就是" 加殼"。
病毒作者可以通過給老病毒加殼,大批量制造出殺毒軟件無法識別的新病毒,從而給殺毒廠商造成技術上的困擾。如何徹底解決這個問題,也成為國際信息安全界關注的焦點。來自中國的瑞星公司,通過在虛擬機技術上的深入研究,干凈徹底的解決了這個世界級難題。
"虛擬機脫殼引擎(VUE-Virtual machine Unpack Engine)" 技術已經應用在了瑞星殺毒軟件2007版中,從而使得殺毒更快更徹底,病毒庫比傳統殺毒軟件減小了1/3 ,資源占用也更少,電腦運行速度將明顯加快。
什么是加殼?
所謂加殼,是一種通過一系列數學運算,將可執行程序文件或動態鏈接庫文件的編碼進行改變(目前還有一些加殼軟件可以壓縮、加密驅動程序),以達到縮小文件體積或加密程序編碼的目的。
當被加殼的程序運行時,外殼程序先被執行,然后由這個外殼程序負責將用戶原有的程序在內存中解壓縮,并把控制權交還給脫殼后的真正程序。一切操作自動完成,用戶不知道也無需知道殼程序是如何運行的。一般情況下,加殼程序和未加殼程序的運行結果是一樣的。
如何判斷一個可執行文件是否被加了殼呢?有一個簡單的方法(對中文軟件效果較明顯)。用記事本打開一個可執行文件,如果能看到軟件的提示信息則一般是未加殼的,如果完全是亂碼,則多半是被加殼的。
我們還可以使用一款叫做Fileinfo的工具來查看文件具體加的是什么殼。目前,較常見到的殼"UPX" 、"ASPack"、"PePack"、"PECompact" 、"UPack" 、"NsPack"、"免疫007"、" 木馬彩衣" 等等。
"加殼" 病毒已經成為傳統殺毒軟件無法克服的難題
為什么黑客能夠利用加殼技術來對抗反病毒軟件呢?眾所周知,目前殺毒軟件主要依靠特征碼技術查殺病毒。由于加殼軟件會對源文件進行壓縮、變形,使加密前后的特征碼完全不同。
脫殼能力不強的殺毒軟件,對付" 加殼" 后病毒就需要添加兩條不同的特征記錄。如果黑客換一種加殼工具加殼,則對于這些殺毒軟件來說又是一種新的病毒,必須添加新的特征記錄才能夠查殺。
如果殺毒軟件的脫殼能力較強,則可以先將病毒文件脫殼,再進行查殺,這樣只需要一條記錄就可以對這些病毒通殺,不僅減小殺毒軟件對系統資源的占用,同時大大提升了其查殺病毒的能力
根據瑞星2006年1月到10月截獲的病毒樣本統計,約有90%以上的病毒文件進行過"加殼" 處理。而國內較為流行的" 灰鴿子" 木馬,加殼率幾乎達到100 %。
對付加殼病毒常見的解決方法
"馬甲" 能穿也能脫。相應的,有加殼也一定會有解殼(也叫脫殼)。目前,脫殼主要有兩種方法:硬脫殼和動態脫殼。
第一種,是硬脫殼,這是指找出加殼軟件的加殼算法,寫出逆向算法,就像壓縮和解壓縮一樣。由于,目前很多" 殼" 均帶有加密、變形的特點,每次加殼生成的代碼都不一樣。硬脫殼對此無能為力,但由于其技術門檻較低,仍然被一些殺毒軟件所使用。
第二種,是動態脫殼。由于加殼的程序運行時必須還原成原始形態,即加殼程序會在運行時自行脫掉"馬甲"。目前,有一種脫殼方式是抓取(Dump)內存中的鏡像,再重構成標準的執行文件。相比硬脫殼方法,這種脫殼方法對自行加密、變形的殼處理效果更好。
虛擬機脫殼引擎(VUE)技術
對于病毒,如果讓其運行,則用戶計算機就會被病毒感染。因此,一種新的思路被提出,即給病毒構造一個仿真的環境,誘騙病毒自己脫掉"馬甲"。并且,"虛擬環境" 和用戶的計算機隔離,病毒在虛擬機的操作不會對用戶計算機有任何的影響。
"虛擬機脫殼" 技術已經成為近年來全球安全業界公認的、解決這一問題的最有效利器。但由于編寫虛擬機系統需要解決虛擬CPU、虛擬周邊硬件設備、虛擬驅動程序等多個方面的困難,即使有雄厚的研發實力,也未必能在短時間內達到實用的程度。
經過四年多的技術創新和積累,瑞星"虛擬機" 研發團隊攻克了多項技術難題,在虛擬CPU 、計算機周邊設備的仿真模擬等方面取得了突破性的進展,在虛擬環境中可以同時運行數個完整的操作系統,成為繼微軟、VMWare之后全球第三家擁有自主知識產權的商用" 虛擬機" 技術的軟件廠商。
通過將商用虛擬機的核心技術應用到反病毒引擎當中,瑞星"虛擬機脫殼"引擎可以將各種"加殼" 病毒還原為原始狀態,從而干凈徹底的將其清除。


