觀點

新的惡意攻擊程式 讓防軟體捉襟見肘?(上)

2004 / 06 / 08
Ed Skoudis
新的惡意攻擊程式 讓防軟體捉襟見肘?(上)

自從二十年前出現第一隻電腦病毒以來,絕大多數的防毒軟體公司使用的都是同一種特徵值比對的防毒技術,雖然亦持續改良了許多功能與特色,卻始終跟不上病毒與蠕蟲快速進化的能力。
正因如此,我們著重於防毒產品所需的關鍵功能、經常被忽略的項目進行測試,捨棄過於籠統的方式,來測試廠商病毒碼的內容包容度與效力,包括:設計專門用來愚弄或使防毒產品保護功能失效的攻擊手法、防毒軟體對於與日漸增多的間諜軟體、後門等惡意程式的偵測能力,以及其管理機制是否能夠涵蓋整個企業層面。
我們發現,每個防毒軟體在這些測試項目中,測試結果大不相同,而且還有部分產品竟無法提供多數使用者所認為該有的保護措施。測試的項目包括:避開防毒軟體、隱身功能、關閉防毒軟體、壓縮隱藏、修改過的惡意程式碼、後門程式、Unix惡意程式、間諜軟體、整體管理功能、企業整體報告、使用者介面、網路通訊協定、整合VPN等功能。

避開防毒軟體
為了順利取得受害者電腦的控制權,惡意程式的作者通常會針對特定的防毒做規避的動作,使惡意程式可以避開防毒軟體的偵測。當惡意程式能夠巧妙地避開偵測,這種以特徵值作為判斷依據的方式便行不通了。為了測試防毒軟體的靈活度,我們準備了各產品都具備其特徵值的惡意程式進行測試,然後由攻擊者運用不同的技術干擾防毒軟體,使其失效。結果顯示,並不是所有產品皆能達成任務,有些產品甚至輕易就被擊潰。

隱身術
攻擊者有可能將惡意程式隱藏於目錄或檔案的可變動資料串流(ADS、alternate data stream)中,可變動資料串流是Windows NTFS分割區中特有的資料結構,秘密地藏在檔案系統中,在檔案總管中無法直接看到其內容。攻擊者可透過簡單的指令,例如:type”,輕易地將惡意程式碼收納其中。
在2000年時曾引起不小的騷動,因為絕大部分的防毒軟體,並沒有掃瞄藏匿於此的惡意程式。許多廠商宣稱他們可以關掉這個可供藏匿的功能,但是測試發現問題並沒有真正因此消失。我們不僅可以將惡意程式植入執行檔、文字檔及目錄的可變動資料串流中,在接受測試的產品中,大部分產品手動掃描(on-demand scans)的預設值,會將這一部份忽略掉。更令人詫異的是,在即時掃描(real-time scans)的項目裡,竟然有許多產品根本就忽略了這項功能。
測試結果顯示,只有Network Associates的產品在預設狀態下,能夠提供堅實的安全防護,不論手動掃瞄或即時掃描模式,均偵測到可變動資料串流中的惡意程式。在預設狀態下,能夠在即時掃描項目中偵測到惡意程式的有Computer Associates (CA)、F-Secure、 Grisoft、Panda Software、Sophos的產品。此外 Kaspersky與 PestPatrol 的產品在預設狀態下,並未提供即時掃描此類惡意程式的功能。
在手動掃描的項目中,除非使用者刻意將此功能關閉,不然都可以掃到此類的惡意程式。
值得注意的是,雖然Symantec與Trend Micro均針對可變動資料串流提供偵測功能。但是Symantec在預設狀態並沒有開啟此功能,必須由使用者自行啟動。而Trend Micro僅針對附檔名為 exe的執行檔,作可變動資料串流的掃描,卻忽略了其他檔案類型同樣也有可能成為惡意程式的宿主。這樣的預設狀態會造成風險,因為大多數的用戶是不會主動去調整防毒軟體的設定組態。
惡意程式包括:病毒(virus)、蠕蟲(worm)、木馬(Trojan)、後門(backdoor)、邏輯炸彈(logic bomb)。


一了百了─關閉防毒軟體
有許多新的惡意程式在感染系統之前,會先試圖將防毒軟體關閉,最好的例子就是去年夏天爆發的 Bugbear.B 蠕蟲。它的作法就是,先發動小型的攻擊手法,將防毒軟體的執行程序(process)中止,接著再進行安裝後門的動作。就像是好奇的使用者也可能不小心或是刻意的去關閉掃描程序、中止防毒軟體的執行程序。
因此,我們設計一個中止程序的小程式,模擬惡意程式關閉防毒軟體的行為,以測試防毒軟體對自身的保護能力。值得慶幸的是,假使惡意程式或使用者,沒有取得管理者權限之前,將無法關閉或中止任何防毒軟體;反過來說,若已經取得管理者權限,再進行測試,則其結果有點複雜。
在一般企業中都會賦予使用者,可以擁有自己電腦本機的管理權限(local admin),會造成惡意程式取得管理權限的等級,這是危險且錯誤的示範,這種威脅是相當嚴重的。
在取得管理權限的情況下,只有Kaspersky 可以毫髮未傷地通過測試,持續運作,並且顯示錯誤警訊,我們並沒有辦法關閉或刪除其程序。其餘的產品不是發生異常,就是整個程序中止,測試結果分為以下幾類:
1. 在本機管理權限下,我們可以關閉 CA、F-Secure PestPatrol的產品,使其喪失即時掃描的防毒功能,赤裸裸地暴露於惡意程式之下。如果要恢復正常功能,只有等到下次重新開機或啟動掃描功能。
2. 攻擊程式暫時使防毒軟體失效,但在短時間內(約30秒內)它們又再度啟動,包括Panda與 Trend Micro的產品皆屬於此類。雖然在關閉的期間,產生了短暫的空窗期,但總比完全被關掉來的好一點。
3. 攻擊程式關閉防毒軟體之後,整個作業系統也跟著當機或強制重新開機。這雖然有點不光采,但是至少系統不會被惡意程式攻陷。這類產品有 Network Associates及Sophos。
4. 第四種情形比較特殊,當我們已經將防毒軟體相關的程序關閉,不過其防毒的功能依舊持續運作,這實在是有點詭異。這類產品有Grisoft及Symantec。


以壓縮的方式隱藏
攻擊者也會嘗試用壓縮的方式來隱藏惡意程式,我們以WinZip、Win-Zip壓縮兩次、Tar、gzip、Bzip2這些壓縮格式,將惡意程式樣本壓縮起來,用來測試防毒軟體對於壓縮檔案的偵測能力。
能夠征服以上壓縮檔案格式的有 F-Secure、Kaspersky、 Network Associates與Panda,可以完全偵測到壓縮檔案中的惡意程式。然而,在預設狀態下 CA、 PestPatrol與Sophos卻不能偵測到 Tar 壓縮過的惡意程式,Tar這種格式的檔案,是Unix常見的備份檔案,常常被用來散布惡意程式,而且可以使用WinZip 來打開其內容。
接著我們使用修改過的惡意程式碼來做測試,其他測試項目都是用未經修改的「原始」惡意程式碼,這些惡意程式都很安全地存放在實體隔離的實驗室中,不會因測試而流出擴散。在這個測試項目中,我們想要看看防毒軟體對於常見的、小型的、又惱人的後門程式的偵測能力,像是tini.exe、Ultor掇 Trojan Port、 NTbindshell.exe…等等。這些後門程式都會在受害者電腦開啟一個接受連線的 TCP 服務埠。
大部分的防毒軟體,均著重於偵測與惡意程式樣本完全相同的檔案。在測試中,我們刻意使用十六進位編輯程式做了些微的變動,僅修改了兩個位元的資料,使得該惡意程式所開放的TCP服務埠號變更。其實,這也是一般攻擊者常用的手法,依據受害者網路的特性來修改後門程式開放的服務埠號。
測試後發現,僅Network Associates、Panda與Trend Micro的產品,可以偵測到所有修改過的樣本程式。


病毒、蠕蟲,還有呢?
除了病毒與蠕蟲之外,攻擊者還喜歡植入後門程式遠端操控受害電腦,以及利用Windows平台作為跳板主機入侵Unix及Linux系統。不懷好意的網頁(Aggressive Web sites)也會在瀏覽網頁時將鍵盤記錄程式、追蹤上網習性之類的間諜軟體植入您的電腦。
因此在電腦受害事件頻傳的環境下,不禁讓人質疑防毒軟體真的有發揮作用嗎?結果證明,大多數的防毒軟體做不到這一點。這次測試的防毒軟體,幾乎清一色只能偵測到具自我複製能力的惡意程式(病毒、蠕蟲),而很少將間諜軟體與後門程式列入其偵測功能中。總體來說,這種結果實在令人感到失望。


獵殺後門程式
攻擊者會透過安裝並引誘使用者去執行惡意程式,間接取得遠端存取權限,直搗黃龍進入內部網路中。所使用的工具像是Netcat(nc),就是一種頗受歡迎的後門設置工具,可讓駭客取得一個遠端的命令列模式。VNC(Virtual Network Computing)則提供圖形化介面的遠端操控功能。
因為這種強大的功能,讓人又愛又恨,不論黑道還是白道(安全專家、駭客)都使用來做滲透測試以及保護網路安全。縱使在合法情況下使用,一旦安全人員在機器中發現被安裝這些工具,也會很快的把他們清理掉,因為也有可能是被駭客植入的。
測試結果發現,只有PestPatrol可偵測到這兩種工具,Panda僅偵測到VNC。其餘的8種防毒軟體對於這些工具則無動於衷。