查看單個文章
舊 2004-09-20, 03:28 PM   #4 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

殺毒引擎目前主流有兩種實現方式:

1.虛擬機技術

2.既時監控技術

3.智能碼標幟技術


4.行為攔截技術

3.4.為最近兩年搞出來的技術。

3的目的是提高殺毒速度並且預防未知病毒,但就現實而言,除了東方衛士試驗了一下(並且不成功),其餘廠商未開發完全關於該技術的引擎,諾頓的開發人員認為:

「沒有足夠的技術手段來實現文中所提出的殺毒理念(翻譯的可能有不準確之處。『文中』是指智能碼標示技術的理論基礎:


IBM :Another way to the end (實現目的的另一種方式),在該文中提出了關於預定規則的智能殺毒技術)」。

行為攔截技術(或者別的什麼智能殺毒技術)也是一種預防未知病毒的方法,與虛擬機技術相似,通過對程序行為的分析來判斷其是否為病毒。


對於未知病毒的判斷實際上代表著殺毒軟體廠商在引擎研究方面的最高能力。業界公認,防止未知病毒是「代表研究水準的」。

平心而論,非美國廠商在這方面能力較差。業界對於防止未知病毒能力是按照如下方法衡量的:

以評測當日的殺毒軟體最新版本為該廠商的供測試版本,未知病毒由如下而來:
1.病毒作者提供。


有些病毒作者在將自己的病毒發佈以前總愛送給一些業界的安全雜誌供其評測(最佩服這種人)2.大部分真正的業界安全雜誌都有自己的研究實驗室,他們自己的研究人員會根據最新的趨勢和技術手段及工具寫一些病毒。


一般情況下,這些病毒是不會流到網上去的。3.假病毒。

一些很類似於病毒行為的文件,程序等。

測試的時候病毒庫被置空(就是殺毒軟體試突使用病毒庫時採用程序方法向其返回一個空結果),在這種情況下進行測試。

如果有人有興趣,可以到病毒論壇上搞點新手寫的小病毒(一般也就100-200行),弄上幾十個拿自己的殺毒軟體試一試,就會發現在平均狀態下諾頓病毒庫被置空時起對未知病毒判斷能力還是挺強的,怎麼著也到了x%,(x為兩位數),很多殺毒軟體結果挺慘的,尤其在對付比較複雜的蠕蟲病毒時,某廠商的產品近乎全軍覆沒。


下面對虛擬機和既時監控進行介紹。由於大家認為在文中加入程序程式碼看著很累,因此不再指出技術實現程式碼,其實根據原理你自己也可以寫出來。



虛擬機,在反病毒界也被稱為通用解密器,已經成為反病毒軟體中最重要的部分之一虛擬機的概念和它與諸如Vmware和WIN9X下的VDM(DOS虛擬機,它用來在32位保護模式環境中執行16真實模式程式碼)是有區別的。其實這些虛擬機的設計思想是有淵源可尋的,都來自於IBM的一批研究人員搞的一套東西。


Vmware作為原操作系統下的一個應用程式可以為執行於其上的目標操作系統新增出一部虛擬的機器,目標操作系統就像執行在單獨一台真正電腦上,絲毫察覺不到自己處於Vmware的控制之下。


當在Vmware中按下電源鍵(Power On)時,視窗裡出現了機器自我檢驗畫面,接著是操作系統的載入,一切都和真的一樣。


而WIN9X為了讓多個程序共享CPU和其它硬體資源決定使用VMs(所有Win32應用程式執行在一部系統虛擬機上;而每個16位DOS程序擁有一部DOS虛擬機),winxp是採用區域記憶體訪問來實現16位程序支持的。

VM是一個完全由軟體虛構出來的東西,以和真實電腦完全相同的方式來回應應用程式所提出的需求。從某種角度來看,你可以將一部標準的PC的結構視為一套 API。



這套API的元素包括硬體I/O系統,和以中斷為基礎的BIOS和MS-DOS。WIN9X常常以它自己的軟體來代理這些傳統的API元素,以便能夠對珍貴的硬體多重發訊。


在VM上執行的應用程式認為自己獨佔整個機器,它們相信自己是從真正的鍵盤和滑鼠獲得輸入,並從真正的螢幕上輸出。稍被加一點限制,它們甚至可以認為自己完全擁有CPU和全部記憶體。



查毒的虛擬機並不是象某些人想像的:如Vmware一樣為待查可執行程序新增一個虛擬的執行環境,提供它可能用到的一切元素,包括硬碟,連接阜等,讓它在其上自由發揮,最後根據其行為來判定是否為病毒。


當然這是個不錯的構想,但考慮到其設計難度過大(需模擬元素過多且行為分析要借助人工智能理論),因而只能作為以後發展的方向。


就目前可以知道的資訊而言,卡巴斯基在這方面做得還可以,mcafee的新產品中加入了一種溢出保護技術,本質上而言也是一種所謂的虛擬技術。


查毒的虛擬機是一個軟體模擬的CPU,它可以像真正CPU一樣取指,譯碼,執行,它可以模擬一段程式碼在真正CPU上執行得到的結果。



給定一組機器碼序列,虛擬機會自動從中取出第一條指令操作碼部分,判斷操作碼檔案類型和尋址方式以確定該指令長度,然後在相應的函數中執行該指令,並根據執行後的結果確定下條指令的位置,如此循環反覆直到某個特定情況發生以結束工作,這就是虛擬機的基本工作原理和簡單流程。


設計虛擬機查毒的目的是為了對付加密變形病毒,虛擬機首先從文件中確定並讀取病毒入口處程式碼,然後以上述工作步驟解釋執行病毒頭部的解密段(decryptor),最後在執行完的結果(解密後的病毒體明文)中尋找病毒的特徵碼。



這裡所謂的「虛擬」,並非是新增了什麼虛擬環境,而是指染毒文件並沒有實際執行,只不過是虛擬機模擬了其真實執行時的效果。


這就是虛擬機查毒基本原理。


曾經跟搞殺毒的技術人員探討是否可以採用模擬實際執行的方法來搞一套殺毒軟體,回答是微軟可以,因為微軟可以在系統底層搞一套硬體虛擬層,來實現硬體虛擬。


我忽然想到,如果微軟真的搞殺毒軟體,其實無論別的殺毒軟體公司多麼強,大家都得徹底玩完。



早期病毒沒有使用任何複雜的反檢測技術,如果拿反彙編工具開啟病毒體程式碼看到的將是真正的機器碼。


因而可以由病毒體內某處一段機器程式碼和此處距離病毒入口(注意不是文件頭)偏移值來唯一確定一種病毒。查毒時只需簡單的確定病毒入口並在指定偏移處掃瞄特定程式碼串。



這種靜態掃瞄技術對付普通病毒是萬無一失的。



隨著病毒技術的發展,出現了一類加密病毒。


這類病毒的特點是:其入口處具有解密子(decryptor),而病毒主體程式碼被加了密。


執行時首先得到控制權的解密程式碼將對病毒主體進行循環解密,完成後將控制交給病毒主體執行,病毒主體感染文件時會將解密子,用隨機密鑰加密過的病毒主體,和儲存在病毒體內或嵌入解密子中的密鑰一同寫入被感染文件。


由於同一種病毒的不同傳染實例的病毒主體是用不同的密鑰進行加密,因而不可能在其中找到唯一的一段程式碼串和偏移來代表此病毒的特徵,似乎靜態掃瞄技術對此即將失效。


但仔細想想,不同傳染實例的解密子仍保持不變機器碼明文(從理論上講任何加密程序中都存在未加密的機器碼,否則程序無法執行),所以將特徵碼選於此處雖然會冒一定的誤報風險(解密子中程式碼缺少病毒特性,同樣的特徵碼也會出現在正常程序中),但仍不失為一種有效的方法。


由於加密病毒還沒有能夠完全逃脫靜態特徵碼掃瞄,所以病毒寫作者在加密病毒的基礎之上進行改進,使解密子的程式碼對不同傳染實例呈現出多樣性,這就出現了加密變形病毒。



它和加密病毒非常類似,唯一的改進在於病毒主體在感染不同文件會構造出一個功能相同但程式碼不同的解密子,也就是不同傳染實例的解密子具有相同的解密功能但程式碼卻截然不同。


比如原本一條指令完全可以拆成幾條來完成,中間可能會被插入無用的垃圾程式碼。


這樣,由於無法找到不變的特徵碼,靜態掃瞄技術就徹底失效了。


在這種情況下,虛擬機技術將會派上用場。
既時監控技術其實並非什麼新技術,早在DOS編程時代就有之。


只不過那時人們沒有給這項技術冠以這樣專業的名字而已。



在WINDOWS下要實現既時監控決非易事,普通用戶態程序是不可能監控系統的活動的,這也是出於系統安全的考慮。

病毒既時監控(For WIN9X&WINNT/2000)都使用了驅動編程技術,讓工作於系統核心態的驅動程式去攔截所有的文件訪問。

當然由於工作系統的不同,驅動程式無論從結構還是工作原理都不盡相同的,當然程序寫法和編譯環境更是千差萬別了,上面提到的病毒既時監控其實就是對文件的監控,說成是文件監控應該更為合理一些。

除了文件監控外,還有各種各樣的既時監控工具,它們也都具有各自不同的特點和功用。

現在流行的什麼網路監控,郵件監控基本上是對文件監控的改進,革命性的改動沒有。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次