美國前賽博安全主管Richard Clarke曾說:“如果你在咖啡上的開銷比IT安全方面還要多,你將受到黑客的攻擊,而且是咎由自取。”本文講述惡意軟件的歷史和應對的基本措施,希望能提高大家的安全意識。
惡意軟件的歷史
到20世紀80年代晚期與90年代早期,PC病毒已經是個大問題,并直接促使了反病毒軟件編寫與咨詢行業的誕生。很多人都認為這種情況不能持續太久,從DOS變遷到“更正確的”操作系統(比如Windows)將會解決這一問題。
然而,DOS到32位操作系統的變遷也只是讓人們短暫地緩了口氣。很快,解釋性語言的傳播給惡意軟件的滋生提供了更加肥沃的土壤。20世紀90年代后期流行的惡意Java小程序(Java applet)導致了新的攻擊方法,因為人們發現了在瀏覽器中滲透Java實現的方法。到了21世紀初,主要的病毒感染源是像Word這樣的產品中的宏語言,而主要的傳輸機制已經變成了Internet;到2000年時,宏病毒成為幾乎所有移動惡意代碼的感染源。實際上,有內部人士聲稱網絡“挽救”了反病毒產業。另一種帶有嘲諷意味的觀點是反病毒產業并未受到威脅,因為用戶總是希望共享他們的程序代碼和數據,而且在缺少可靠的計算平臺時,用戶期望惡意代碼之類的東西可以用來開發它們使用的共享機制。還存在一種觀點是微軟應該負責任,因為它們不顧后果地在諸如Word這類文字處理應用程序中引入了強大的腳本功能。正如他們所說的那樣,每個人的想法不同。
惡意數據也是一個值得關注的問題。一個有趣的實例是關于David Mazieres和Frans Kaashoek的,他們在MIT開設了一個匿名郵件重郵器。這個設備破譯從網上任何地方發來的消息,對其進行解壓操作,之后再進行其他處理。有些人發給他們一連串25Mb的消息,而內容僅是不斷重復的單行文本,這些消息壓縮率很高,因此雖然輸入只是很小的密文,但解壓后會迅速地填滿緩沖池,并導致系統崩潰。還有針對其他執行解壓功能程序(比如MPEG解碼器)的類似攻擊。然而,最嚴重的案例中涉及的不是惡意數據,而是惡意代碼。
不管怎么說,惡意軟件演化的下一階段是2000年的“愛蟲”病毒,實際上這是一種自傳播的蠕蟲,其傳播方式是將其自身發送給目標計算機地址簿中的每個聯系人,主題詞“I love you”則是為了誘使人們打開郵件。理論上,公司可以通過過濾微軟的可執行程序來進行防御,但在實踐中不可能這么簡單。一個有85 000名員工的加拿大公司采用了這種策略,但很多員工都有基于Web的電子郵件服務的私人賬號,因此,愛蟲病毒還是可以進入公司,并且沒有經過防火墻中郵件過濾器的過濾。公司對員工的郵件客戶端進行了配置,以便每個員工在其個人地址簿中都有完整的公司通訊地址目錄。其結果是系統徹底崩潰,因為85 000個郵件客戶端每個都試圖向所有的85 000個地址發送郵件。愛蟲之后還有很多類似的蠕蟲,這些蠕蟲都是引導用戶進行單擊操作,主要是通過提供一些名人圖片,比如Anna Kournikova、Britney Spears與Paris Hilton等。還有一種“閃存蠕蟲”,這種蠕蟲通過掃描整個Internet來尋找存在某種漏洞的計算機進行傳播,并控制這些計算機;這種類型的蠕蟲,比如紅色代碼與沖擊波,會在數小時甚至數分鐘之內感染所有存在漏洞的計算機,并會導致發出指示哪些防御可能會予以及時反應的警報。
幾乎與此同時,21世紀早期,我們看到了間諜軟件與廣告軟件的迅速增長。間諜軟件采用的技術是在未經計算機所有者授權的情況下收集并轉發計算機使用情況的相關信息,或者至多有一個彈出框請求用戶允許執行某些隱晦的操作,即便這樣那些沒有隨便就點擊的人也不會真正知道他們同意的是什么。雖然這并不符合歐洲數據保護與不公平條約法,但該法律沒有得到強有力的實施。廣告軟件以不斷彈出的廣告來轟炸用戶,并可以與間諜軟件綁定在一起。這種軟件的銷售商甚至會與將其產品列入黑名單的公司打官司,這使得很多事情都復雜化了。
大概在2004年前后,情況發生了很大的改變。在此之前,我們看到了大量不同的病毒與攻擊載荷,大多數病毒編寫者的目的是為了搞笑、炫耀,以便打動他們的女朋友—— 基本上都是業余的。但此后,有組織的信息產品犯罪經濟學開始涌現,使得整個行業變得更加專業,惡意軟件編寫者的目的是獲取可以賣給用于僵尸網絡或其他攻擊意圖的計算機。
上世紀80年代與90年代的大多數病毒都是非常容易解決的;盡管報道有數萬種不同的病毒,但實際上只有極少數真正廣泛傳播。編寫一個可以正確傳播的病毒實際上是非常困難的,如果傳染性不是足夠強,就不會傳播,而如果傳染性太強,就會很快被發現并處理。然而,那些真正能傳播的病毒通常都會廣泛傳播,并感染數百萬臺計算機。
對十幾歲的程序員來說,編寫一個可以自我復制并廣泛傳播的蠕蟲會帶來巨大的自我滿足感,但對于犯罪組織來說這并非是最優的選擇。這樣的蠕蟲會變成頭條新聞,并導致在幾個小時之內,世界范圍內的反病毒廠商都會對其產品進行升級,以便檢測并清除這種病毒。媒體也一再向公眾強調不要點擊各種郵件中的任何鏈接。既然病毒編寫者關注的是金錢而非炫耀,他們公開發布的都是危害有限的攻擊方式。并且,他們不使用自我復制蠕蟲—— 這會導致Internet阻塞而引起關注—— 現代的趨勢是手工控制攻擊活動。
2007年9月,最大的僵尸網絡或許是Storm網絡,包含大約100萬臺計算機,其擁有者還在通過各種手段不斷地將更多計算機納入其中。隨著9月6號國家足球聯賽的啟動,他們在9月9號發送垃圾郵件,其內容只是簡單聲稱
“Football … Need we say more? Know all the games, what time, what channel and all the stats. Never be in the dark again with this online game tracker”
其中包含一個到指定URL的鏈接,點擊鏈接后,受害者將會下載一個名為tracker.exe的文件,該文件會在用戶的計算機中安裝一個rootkit。使用類似這樣的技術——實質上是專業的在線營銷—— 就可以不斷擴大僵尸網絡的規模。
盡管媒體將Storm作為一個“蠕蟲”進行宣傳,但實際上它并不算是蠕蟲,而是一個木馬與rootkit,受害者在安裝之前必須點擊一些警告信息,Windows會報警聲稱該軟件沒有經過簽名,并詢問是否確實要安裝該軟件。然而,Windows經常會彈出一些讓人厭煩的對話框,大多數人都已經習慣于關閉了事。
在Storm案例中,9月11日時微軟的惡意軟件刪除工具可以對該病毒進行定位,Redmond報告稱有25萬臺以上的計算機中該病毒已被清除;他們還估計,Storm包括50萬臺活躍計算機,還可能有幾十萬臺計算機處于非活躍使用狀態,該網絡—— 這個星球上最強大的超級計算機—— 被出租給哄抬股價的操作員和制藥業騙子以牟利。還有另外兩個包含50萬臺左右計算機的網絡也被識別出來,分別是Gozi與Nugache,使用的是與Storm一樣的點對點體系結構,到2007年年末時,這些僵尸網絡變得日益高級和復雜,使用了很多新的犯罪模式。
因此,惡意軟件行業目前以產業化的模式運作,頂級的僵尸網絡擁有者控制的計算機數量幾乎與Google的計算機數量差不多。大的產業是建立在這樣一個事實之上的,即用戶還是會點擊來路不明的鏈接。隨著惡意軟件走向產業化,木馬變得比病毒更加常見,病毒通過電子郵件將自身從被感染的計算機向別處傳播,會引起更多的關注并更有可能被清除,而木馬則將感染數據流直接發送,并能施加更好的控制。安裝軟件時,并不能確定這是否是一個rootkit,或者是使用鍵盤記錄程序盜取銀行密碼的惡意間諜軟件,或者是簡單地收集個人數據以便賣給出價最高買主的間諜軟件。說實話,清晰地進行惡意軟件種類區分是困難的。
應對措施
1987年,在第一個PC病毒出現之后的幾個月之內,就已經有公司成立并銷售反病毒軟件,并導致了一場競賽,每一家公司都試圖戰勝其他廠商。早期的防病毒軟件有兩種基本形態,掃描器(scanners)與校驗和檢查器(checksummers)。
掃描器是一種用于對可執行文件進行搜索的程序,目的是尋找已識別病毒中已知的字符串。病毒編寫者采用了多種方法來防止被掃描出來,比如對流行的防病毒程序的特定反擊,最常用的技術是多態化(polymorphism)。多態化的思想是,病毒或蠕蟲每次復制自身時都改變代碼,這會增加編寫有效的掃描器的難度。常用的技術是使用簡單的加密器對代碼進行加密,并包含一個簡短的頭部,其中含有解密代碼。每次復制時,病毒都在一個不同的密鑰下對自身進行重新加密,并通過替換等價的指令序列對解密代碼進行調整。
校驗和檢查器將系統中所有授權的可執行程序及其原始版本的校驗和信息保存至一個列表,通常校驗和是使用哈希函數計算得出的。病毒對此主要的應對措施是隱蔽(stealth),在這里的含義是病毒對校驗和檢查器使用的所有系統調用進行監測,并在檢測時隱藏自身。
研究者還對惡意軟件復制的理論進行了研究。要使得病毒的傳染行為能有效持續,就必須超過流行病閾值(epidemic threshold)—— 也即傳染的速度超過被清除的速度。這不僅取決于病毒本身的傳染性,還取決于聯網計算機中存在漏洞計算機的數量。醫學中的傳染病模型在這里具有一定的適用性,但由于受軟件交互(軟件共享是高度本地化的)的不同拓撲結構影響,預測到的高傳染率要高于實際觀察到的(后面會對拓撲結構進行討論)。人們還嘗試使用免疫系統模型來改進分布式的惡意軟件檢測策略。來自醫學領域的一個似乎可借鑒的教訓是,最有效的組織級的應對措施是集中式報告和響應(使用精選的接種疫苗)。
在實踐層面上,反病毒軟件和管理策略在一定程度上可以互相替代。但想要真正有效,就必須將工具、動機與管理等各種因素結合起來。在基于DOS的文件病毒時代,這意味著提供一個面向所有事件的集中式報告點,并對組織內計算機上的所有軟件進行控制。主要的風險是來自于那些同時用于工作和其他事務(比如孩子玩游戲)的PC機上的文件,以及來自于其他組織的計算機上的文件。但是,怎樣才能讓員工對所有到來的郵件進行過濾并阻擋病毒呢?倫敦一家律師事務所采用了一種有效的策略,是給每個發現病毒的人獎勵一盒巧克力—— 之后會將發票開給發送該被感染文件的公司。
惡意軟件大部分都是通過電子郵件附件或網頁引入的,通常的解決方案就是技術手段,包括自動過濾與集中報告等。公司可以在防火墻處對可執行程序進行過濾,并要求用戶對系統采用謹慎的默認設置—— 比如禁用瀏覽器中的活動內容以及Word文檔處理中的宏。當然,這與可用性的要求會有一些沖突。人們還會創建各種類型的未授權通信通道,因此,過濾機制不可能盡善盡美,還必須對員工進行培訓,讓他們不要打開可疑的電子郵件附件,還要對員工進行恢復過程培訓,使其可以處理感染的備份文件。簡而言之,問題很復雜、很麻煩。但正如機體的疾病一樣,預防勝于治療;軟件“保健”還涉及對非法軟件復制、未授權私人使用等問題的控制。
最近,反病毒軟件的有效性持續下降。僵尸網絡與計算機滲透攻擊的商業化意味著惡意軟件編寫者有更好的工具與更好的培訓機會。幾乎所有木馬與其他攻擊工具在初次使用時都不會被當前的反病毒軟件產品識別出來—— 因為編寫者對其進行了完全的測試—— 針對目標計算機特性進行測試使其不會被防毒軟件檢測。從效果上看,在21世紀頭幾年,防毒軟件可以檢測幾乎所有病毒,而到了2007年,典型的防毒軟件產品只能檢測三分之一的病毒與其他攻擊工具。
甚至像rootkit,編寫技巧也比幾年前有所提高,很少會引起目標計算機所有者的警覺。有些rootkit甚至會安裝及時更新的防毒軟件,以便防止有競爭性的僵尸網絡接管目標計算機。他們還使用各種隱蔽技術來逃避檢測器。并且,rootkit的銷售者還提供售后服務,如果有清除工具出現,銷售者會很快推出反制措施。
技術防御措施是否跟上了惡意軟件的步伐,并不明確。在全球范圍內,針對大型犯罪團伙的警察行動是必要的,盡管剛開始加強,但還有很長的路要走。運營良好的公司可以使用管理策略來對威脅進行管理和容納,但對個人Windows用戶而言,前景卻不容樂觀。一項調查表明,新PC銷售中的8%是賣給了那些因為原有計算機上遍布廣告軟件和其他垃圾軟件而變得不可用的人。并且,來自于按鍵記錄器(keylogger)的威脅也日益增長,這種軟件可以捕獲用戶在其計算機上的一切操作。有些這種軟件就是將個人信息出售給市場商人的間諜軟件,其他一些軟件則致力于尋找銀行密碼和其他可用于詐騙犯罪的關鍵數據。
