|
揭秘殺毒軟件20年潛規則:窮則思變
|
來源:CSDN 2009-09-16 17:48:44
|
導語:現在互聯網上最強的黑勢力是難以盡數的盜號工作室,比較出名的有赤兔馬、老A、樂意馬、鐵血等等,這些都是木馬可執行文件上帶有品牌的,還有更多神秘低調的木馬團伙,它們變種之快讓人們難以想像,殺毒軟件終于日益力不從心。 第一章 與病毒奮戰20年的殺毒引擎和特征庫 很多人都把殺毒技術看得很神秘,其實無論殺毒軟件的版本怎么升級、概念如何變化,基本的原理就是“殺毒引擎 特征碼匹配”,殺毒引擎是槍,特征碼是子彈,子彈越多,能殺的病毒就越多。很多人用盜版的殺軟,不能升級特征庫也就對付不了新的病毒。 特征庫是由殺毒廠商收集到的病毒樣本的特征碼組成,而特征碼則是病毒分析工程師從病毒程序中找到和正當軟件的不同之處,截取一段類似于“搜索關鍵詞”的程序代碼。 當用殺毒引擎掃描硬盤、或者監控一個文件的動作時(比如下載、修改注冊表等等),它會讀取文件并且與特征庫中的所有特征碼“關鍵詞”進行匹配,如果發現文件程序代碼被“關鍵詞”命中,就把那個文件判定為病毒——就像搜索引擎用關鍵詞去精確匹配網頁,定義足夠多的關鍵詞才能找到需要的結果。 總體來說,殺毒軟件的工作流程是:采集樣本(用戶舉報、殺毒廠商共享)—>病毒分析工程師截取特征碼—>特征碼加入特征庫—>用戶升級特征庫。 特征庫匹配是查殺已知病毒很有效的一項技術,也是殺毒引擎賴以工作的基礎(掃描、監控都需要調用特征庫),一直被殺毒軟件沿用下來,國內外無數反病毒工作者為截取病毒特征碼付出了巨大努力,所有特征碼都需要嚴格的測試和比對,否則極易造成誤傷。 在殺毒軟件走過20年歷史、互聯網高速普及的今天,殺毒引擎和特征庫匹配技術也受到越來越多質疑:木馬數量急劇增加,人工截取特征碼的效率有限。即使假設所有樣本都能及時處理,特征庫變大也會帶來資源占用過大的問題,特別是殺毒引擎隨系統啟動時都要把特征庫寫入內存,這是殺毒軟件遭到詬病的一大原因。 從殺毒軟件的演變來看,殺毒軟件為網絡安全行業積累了寶貴的經驗,也面臨著不少問題: 1、1989年,第一款殺毒軟件Mcafee誕生,開啟殺毒軟件的特征庫時代 要了解Mcafee的工作原理,需要先看看人類最早的計算機病毒,是由美國一個著名黑客莫里斯編寫的“蟲子”,其實本來只是一個游戲產物,卻爬出實驗室弄癱了幾千臺連網的電腦。 早期的病毒相對簡單、技術含量現在來看完全小兒科,Mcafee等殺毒先驅使用了特征碼匹配的方法,也就是分析病毒程序代碼的“與眾不同”,通過利用特征字符串(又稱特征碼)查出病毒。當時可能誰都沒想到,這個思路會一直沿用到20年后的今天。 2、上世紀90年代,防毒卡曇花一現,病毒的多樣化催化廣譜特征碼 國內有記載的計算機病毒出現在1988年,就是一個小球不停地在屏幕上轉悠。當時國內還沒有殺毒軟件,在1990年深圳一家公司做出了最早的防毒卡,隨后瑞星跟進,并因此聲名大噪,不過由于防毒卡不能解決新的病毒,很快就退出了市場。 到90年代中后期,Windows視窗操作系統一統天下,病毒也開始進化,呈現出多樣化發展的趨勢,比如多形幽靈、生成器、變體機、網絡蠕蟲等等,簡單提取特征碼已經沒法應付花樣繁多的病毒,一種更復雜的廣譜特征碼就此出現了。從本質上說,廣譜特征碼是一類病毒程序中通用的特征字符串。 比如,有10種病毒都使用了一段相同的破壞硬盤的程序,那么把這段程序代碼提取出來作特征碼,就能達到用一個特征碼查10個病毒的功效。一些廠商把這種做法稱為“廣譜特征碼”,是為了增加殺毒技術的神秘色彩。病毒分析工程師的技術和經驗成為殺毒軟件表現的決定性因素。 3、加殼技術興起,特征庫迎來第一道難關 鑒于殺毒軟件運用特征庫查殺的原理,黑客們從上世紀末開始將加殼作為逃避查殺的主要手段。加殼其實就是把木馬病毒文件用加密算法壓縮,讓殺毒引擎無法讀取這個文件,從而不能和特征庫匹配。 加殼技術早在DOS時代就出現了,從上世紀末到2008年以來,特別是學做木馬盜號的人同網游市場規模一樣急速擴大,加殼被木馬作者普及采用,給殺毒軟件制造了不小的麻煩: 首先脫殼(解壓縮)的難度很高,即便是相對簡單的殼,一個反病毒高手逆向分析至少需要3天,再加上編寫脫殼代碼和測試,整個周期至少1周。也就是說,一個木馬作者稍微修改一下加殼工具,再把木馬加殼后傳播出去,一周之內都不需要擔心會被殺毒軟件查到。 殺毒引擎查殺病毒一定要進行特征庫匹配,木馬加殼后就不得不先脫殼,這對殺毒軟件造成了極大的困難,只能不斷積累對各種加殼工具的脫殼經驗。目前比較基本的加殼工具有50多種,一些技術相對高明的黑客自己修改而成的加殼工具更是數不勝數,其中個別加殼工具直到現在仍沒有殺毒軟件能夠破解。不過,黑客們也發現,加殼并不是對抗殺毒軟件最好的方式,因為一旦一類加殼工具被破解,大批木馬就會被殺毒引擎用特征碼檢出。于是,一個更瘋狂的疲勞戰術出現了。 4、2008年至今,網頁掛馬成就木馬的疲勞戰術 互聯網上有大量安全性薄弱的網站,黑客通過SQL注入或跨站腳本漏洞攻擊就能輕易實現大面積的網頁掛馬,這是當前木馬最常用的傳播手段,成本也很低廉。既然掛馬網頁可以不斷發布新的木馬,黑客們很自然地想到了沖垮殺毒軟件特征庫的辦法,也就是定位殺毒軟件特征庫的截取方式,加快發布木馬變種的頻率,讓殺毒廠商的分析工程師們疲于奔命。 無殼的木馬雖然易于截取特征碼,但制作簡單,可以用工具針對殺軟的特點批量修改,殺毒廠商則需要調配大量人手逐個分析,基本上只能跟在木馬身后疲于奔命。 第二章 殺毒軟件之惑 現在互聯網上最強的黑勢力是難以盡數的盜號工作室,比較出名的有赤兔馬、老A、樂意馬、鐵血等等,這些都是木馬可執行文件上帶有品牌的,還有更多神秘低調的木馬團伙,它們變種之快讓人們難以想像,殺毒軟件終于日益力不從心: 1、樣本采集問題 為了盡快抓到木馬樣本,不少殺軟開始嘗試云安全的思路,一方面是讓用戶自動舉報行為可疑的軟件,另一方面是在用戶訪問到掛馬網頁時從網馬中捕獲。前者的問題在于木馬作者在編寫時通常早有對策,至于后者,就需要殺毒軟件對掛馬網頁足夠靈敏,而且用戶量足夠大。 2、樣本分析問題 木馬的疲勞戰術是殺毒廠商最為頭疼的問題,殺毒引擎要工作,就要把新木馬的特征碼人工分析截取出來,還得嚴格測試保證不出現嚴重誤殺。對一家大型殺軟廠商來說,每天分析成百上千個新樣本是沒問題的,但如果每天有數十萬個甚至上百萬個新樣本,沒有哪家廠商能夠有這樣的人力。 3、特征庫升級問題 即便木馬的特征碼都能被提取入庫,升級特征庫也不容易。一方面是時效性,比如很多殺毒軟件租用CDN服務器來發布特征庫的更新,最快也得3個小時用戶才能開始升級,更何況之前還需要分析編碼,按照現在木馬的變種速度,等到升級完特征庫,比較有組織有實力的木馬早就自動重新免殺了,這也是人們一直抱怨殺毒軟件滯后查殺的重要原因。 4、系統資源占用問題 特征庫無限制增大對用戶的影響也非常明顯,首先殺毒軟件只要開著,特征庫就需要寫入內存,定期升級特征庫也要耗費不小的流量;殺毒引擎的特征碼匹配式查殺、而且是全庫匹配造成掃描速度很慢,很多用戶因此只在電腦發生問題時才進行掃描,留下不小的安全隱患。 第三章 殺毒軟件窮則思變 上述四個問題讓殺毒軟件在互聯網時代極為尷尬,一些新的技術和想法開始出現:
1、啟發式掃描的利弊 啟發式掃描指的“運用某種方式去判定事物的知識和技能”,是讓殺毒軟件具有學習能力的一項技術,通過行為判斷、文件結構分析等手段,在較少依賴特征庫的情況下能夠查殺未知的木馬病毒。 在各殺毒軟件中,小紅傘的啟發是公認最牛的,在安全論壇上的查毒測試總是無比強悍,但在國內小紅傘的用戶卻非常少,一方面小紅傘的知名度在國內較低,另一方面啟發式掃描也有著無法回避的問題,就是動輒高達30~40%的誤報率。 在實驗性樣本測試和安全技術愛好者看來,啟發式掃描比特征庫優越得多,但可以肯定的是,殺毒軟件在明處,木馬作者在暗處,Windows操作系統都漏洞百出,更何況是殺毒軟件,黑客寫出的木馬要想有買家,一定是能對主流殺軟免殺的,而不是在安全論壇上用來測試的樣本。 這也是絕大多數殺毒軟件仍然堅持特征庫殺毒引擎的重要原因。 2、殺毒軟件互相“學習”的潛規則 單個殺毒廠商采集樣本和分析樣本都有著處理能力的瓶頸,于是彼此之間互相學習(更準確的說是“抄襲”)就成了業內公開的潛規則,比如說使用其它殺毒引擎檢測樣本、逆向分析其它殺毒引擎的脫殼技術等等。 這個潛規則有效地促進了安全行業的“資源共享”,當一款殺毒軟件能查殺某個新型木馬,大約在兩三天內其他殺毒軟件都能紛紛跟進,但這也造成殺毒行業陷入同質化發展的局面,區別僅在于各自代碼的編寫質量,直觀表現就是資源占用和掃描速度不同。 窮則思變,殺毒軟件需要改變,活躍了20年的特征庫殺毒引擎是否會退出歷史舞臺?用戶的需要將決定一切。 |