偷竊軟件研究者Joanna Rutkowska講述她感興趣的一些計算機安全問題,比如rootkits的威脅,以及為什么我們沒有做好應對虛擬機技術的準備。
今年早些時候,Joanna Rutkowska在黑帽子簡報上引起了一陣騷動,她示范了用rootkit感染Windows Vista的方法,并且引入了Blue Pill這個新概念。Blue Pill使用AMD的SVM/Pacifica 虛擬技術來創建“百分之百檢測不到的惡意軟件”。
在采訪,Rutkowska談了她感興趣的計算機安全問題,偷竊軟件威脅的現狀,硬件虛擬化所帶來的風險以及為什么防毒軟件業顯露不足。
“為了方便那些不知道你的讀者了解你,你可以做個自我介紹嗎?”
我是一名專致于盜竊技術以及系統入侵檢測的安全研究者,研究的內容包括內核 rootkits,偷竊軟件以及隱秘的網絡通信。我目前供職于一家總部在新加坡的信息安全公司COSEING,居住在波蘭華沙。
“你第一次聽說rootkits是什么時候?”
我一開始關注的是漏洞的發展,之后開始考慮我們得到“殼”后該做些什么。當然我不是第一個想到這個的,所以我看到了很多基于Linux的rootkits,比如Knark或者Adore。我想那是在90年代末。之后,我開始考慮怎樣能大致檢測出那種惡意軟件。
“做一個攻擊性的rootkits有什么價值?這不是方便那些壞家伙們利用它嗎?”
把當前市場防毒軟件,尤其是防rootkit方案還遠遠不能防止或者發現系統被攻擊這樣的事實告訴人們是很重要的。換句話說,這是為了促使人們研發更好的防御措施。
我不相信談論新的攻擊技術就是幫助那些壞人。畢竟,如果地球上只有一個人或者一個組織發現某個特殊攻擊的話,那就太奇怪了。我不覺得我是唯一一個發現這種技術的人。
“你如何防止泄漏?你發布了漏洞的細節或者攻擊代碼了嗎?為什么發或者為什么不發?”
目前由于我是COMSEING的全職員工,我遵守公司的保密政策。總的來說,COSEING主要對能用于客戶保護服務的研究感興趣。當然我們也想對整個信息安全界的發展有一定影響。因此我們會通過在各種安全會議中發布我們的成果,以便跟社會各界共享我們的一些研究成果。
根據行規,我們不發布漏洞以及惡意代碼,當然,除了我們確實覺得非常有必要讓賣主修正特殊問題的那種情況。
例如,我們認為公布Blue Pill源代碼沒有什么好處,因為這對開發反Blue Pill方案沒有任何幫助(跟一些人想得不一樣)。
“最近你對基于虛擬機的rootkits很感興趣。這是一個合理的攻擊向量嗎?為什么?”
最近Intel和AMD引進的硬件虛擬化技術非常強大。我個人認為,在主要的操作系統賣主能重新設計他們的系統,并阻止對它的濫用之前引進該技術還為時過早。
為了說明該虛擬機技術將會被怎樣濫用,我開發了Blue Pill這個小程序——它創建一個硬件虛擬機然后把正在運行的本地操作系統(啟動Blue Pill的這個系統)轉移到虛擬機中,這樣它自己就成了所謂的管理程序。整個過程一眨眼就會完成(耗時少于1毫秒)而本地操作系統甚至根本沒有意識到它已經被轉移到虛擬機中了。
只有本地的操作系統意識到虛擬機技術的潛在威脅,并且擁有自己的系統管理程序,才能阻止Blue Pill以及其他此類惡意軟件的危害。實現這樣的系統管理程序并不費事,人們期望接下來出現的系統會實現它,但是我想我們還需要2,3年才可以看到此類技術。
“我曾經看到一位rootkit專家(Greg Hoglund)說虛擬機技術只不過是實驗玩具并不是實際威脅。他說的不對吧?”
我想Greg指的是基于軟件虛擬化的rootkits,例如SubVirt,它是微軟研究院和密歇根大學聯合開發的。
這跟基于硬件虛擬化的rootkits是完全不同的,比如Blue Pill或者Matasano安全公司的Dino Dai開發的Vitriol。
坦白地說,我覺得基于Blue Pill的軟件沒有什么理由不被用于發起真實的攻擊。當然我認為此類惡意軟件不會被用于蠕蟲病毒,而會是用于更精明的、有針對性的攻擊中。更進一步的,我認為我們很難檢測到它(前提是它實現了使用有強隱蔽性的渠道)。我敢打賭很多安全“專家”會斷言說這樣的惡意軟件“根本不在現實中存在”。然而事實上,它們將被悄悄地大量使用。
“微軟對你的針對Vista的攻擊作何反應?Redmond有人與你聯系嗎?在公開之前,你跟他們談過嗎?”
我們決定首次公開攻擊的細節是在七月底新加坡的SyScan會議上(由COSEINC組織的)。在那之前,我們認為沒有聯系軟件賣主(不是我們客戶的那些)的必要,因為問題是針對Beta 版的軟件,并且實現攻擊本身也需要攻擊者取得管理權限。
在針對Vista的攻擊的陳述中,我討論了3種可能的解決方案。我也指出其中的一個方案——阻止用戶模式應用程序訪問原始硬盤扇區——實際上不是個好舉措,而且我解釋了我的理由。只是為了完整性的需要,我才把它作為一項可能的解決方案列舉出來。
令人吃驚的是,在數周前發布的最新Vista RC2中,我注意到微軟實現的正是我并不推薦的這個方案,就我看來,這種方法只是暫時解決問題。
“你跟AMD討論過Blue Pill嗎?你認為應該怎樣保護系統不受此類攻擊?”
AMD從來沒有跟我討論過Blue Pill,并且,就我所知,他們也沒有跟COSEINC的任何人聯系過。
想要防御此類攻擊,有個取消虛擬化功能的很顯然的辦法,那就是在BIOS中進行相關設置。然而,不幸的是,我們現有的硬件中沒有此類選項。但我聽說基于Intel芯片的平臺上存在這樣的可能。
另一種方法,就如我上面提到的,就是在操作系統中植入系統管理程序。此種管理程序能夠阻止人們安裝另一個管理程序(比如Blue Pill)。
但是,這種方法實現起來還有很多問題。比如,有沒有可能第三方應用程序(比如VMWare)為了自己的目的而利用硬件虛擬化技術?如果可能,那么如何把想要安裝自己的系統管理程序的合法程序與惡意程序(比如Blue Pill)區分開呢?如果不可能,那是不是就意味著所有未來基于硬件的VMM,比如VMWare,將不得不和他們自己定制的操作系統一起銷售,并且我們也不能再把它們當作一種應用程序來使用了呢?
還有,我們在保護此類操作系統提供的系統管理程序時也應當十分小心,沒有一些相關技術(像TPM或者DMA防護(AMD上的DEV))的人是不可能勝任的。
因此,對我來說實現一個相對簡單的防護措施,我們還需要至少2到3年。
“你測試過目前的那些rootkit掃描/安全工具嗎?你覺得哪種比較可靠?”
我前面說過,我覺得現存的防毒措施都不是很好,尤其是那些針對Windows平臺的。它們全都致力于找出“壞的”而不是確認系統處于“好”的狀態。
因此,我們看到防毒產品使用了相當高明的技術來解決各種各樣.exe-包以及區分被調查的.exe文件是“好的”還是“壞的”。
類似的,大多數rootkit掃描程序都實現了各種各樣的檢測隱藏對象(比如隱藏的進程)的功能,而忘了還有不必創建進程的強大偷竊惡意軟件。此類軟件就沒有必要隱藏什么東西。大約一年前,我就示范過一種“stealth-by-design”的惡意軟件。
我認為比較好的措施應該是對所有系統組件進行全面檢查,從文件系統(數字證書文件),到驗證所有內存中代碼段沒有被修改(我在我的SVV掃描程序中部分實現了這些功能),并且檢查內核數據區的所有可能“動態聯系區”。
后者不可能100%實現,因為沒有人知道所有的動態聯系區,但是我們至少可以開始列舉它們。我相信聯系區的數量對所有現存系統來說都是有限的。
換句話說,只有有限種方法來編寫任何特殊的II類惡意軟件(比如,按鍵記錄程序)。
II類惡意軟件被認為是不修改內存中的任何代碼段的一種惡意軟件,只修改數據段(因此很難被發現)。不用說,II類惡意軟件確實存在。
不幸的是,即使我們開發了整體掃描程序,使它100%完善,并且我們也識別出了II類惡意軟件使用的所有的動態聯系區,還是有我們無法檢測到的惡意軟件。
我把這些稱為III類惡意軟件,Blue Pill就是一個例子。Blue Pill甚至不會修改內核或者其他內存的任一字節。因此無論我們如何徹底的檢查,我們也不會監測到它。我們只能指望檢測到些副作用,比如網絡通信或者通過適時地分析來發現一個系統管理程序。
使用強大的隱藏通道或者其他技巧,都能有效地防止它們被以上方法發現。但是即使不能監測到III類惡意軟件,我仍然認為應該有個好點的整體掃描程序,而不是使用傳統的只是試圖找到已知的“壞的東西”的反病毒產品。
“我們為什么要警惕偷竊軟件?你認為這是一個大趨勢嗎?”
偷竊軟件是暗中攪亂操作系統,使之不能再被信任的一種方法。而關鍵問題在于,理想情況下(以惡意軟件開發者的角度),沒有人能夠知道系統到底有沒有被入侵。
就我個人來說,我認為討論它是否成為大趨勢是沒有意義的。這不是關于明年攻擊者們使用II類或III類的“Stealth by Design”惡意軟件(不創建額外的系統對象)發起有針對性地攻擊,會危害100個還是100000各公司的問題。而應該是關于我們是否意識到這些危害的問題。既然已經知道有可能開發出此類惡意軟件,我們就應該做點什么來對付它。