加密妙招:讓逆向工程毫無用武之地
軟件逆向工程,解構程序分析其運作機制的藝術,高端黑客得以徹底探索代碼查找可供利用漏洞的利器。同時,它也是這些黑客的惡意軟件被破解和無害化的不二法門。而現(xiàn)在,一個新的加密小妙招就能使黑帽子和白帽子雙方的逆向工程工作都很難開展。
將于下個月在新加坡舉行的SyScan安全大會上,安全研究員Jacob Torrey計劃展示他稱之為“反逆向工程系統(tǒng)”(HARES)的一種新的機制。Torrey的方法在于加密軟件代碼,并且只在代碼即將被執(zhí)行的最后一秒才在處理器中解密代碼。這將阻止逆向工程工具在程序運行時讀取被解密的真實代碼。結果就是:想盜版軟件的黑客難以破解軟件,無法找出安全漏洞,甚至,在某些情況下連弄清軟件的基本功能都做不到。
“這將使應用程序完全不透明。軟件算法無法被逆向工程解析,脆弱點無法被找到。”
像Adobe和歐特克(AutoCAD、3dsMax、Maya等設計軟件的娘家)這樣的公司可以將HARES當作一種高端的新型數(shù)字版權管理(DRM)形式,保護他們超貴的軟件免遭不法復制。另一方面,這種機制也意味著難以破解的犯罪或間諜惡意軟件的新紀元。白帽子們將難以摸清這些惡意軟件的意圖,分辨不出誰是作者,也無法有效開發(fā)防御機制。就像知名黑客Grugq在Torrey的摘要提交到SyScan日程表時在推特上寫的:HARES可能意味著“惡意軟件分析簡單易行時代的終結”。
為使逆向工程工具失效,HARES采用了一個在英特爾和AMD芯片上都可以做到的硬件小花招:轉換后備緩沖器(TLB)分割。TLB分割在計算機內存上將程序的數(shù)據(jù)段和代碼指令段分離。HARES保持指令段內存中的所有東西都在加密狀態(tài),只有用處理器中存有的密鑰才可以解密。(這意味著即使高端如“冷啟動”把數(shù)據(jù)封存到RAM中這樣的攻擊手段,也不能將密鑰從內存中抽出來。)普通逆向工程工具如IDA Pro讀取計算機內存找尋程序指令段代碼,TLB分割就重定向逆向工程工具到內存中充填了加密的不可讀指令的區(qū)段,讓逆向工程工具無法從中找到可用代碼。
簡而言之,被加密的內存無法從其他未經加密的內存中進行訪問。
很多黑客開始逆向工程的第一步是用一種叫“Fussing”的技術,向程序中輸入隨機數(shù)據(jù)以期導致程序崩潰,然后分析這些崩潰情況以定位到更嚴重的可供利用的漏洞。但是Torrey聲稱,fuzz一個由HARES加密過的程序只會將這些崩潰現(xiàn)場渲染得完全不可讀。
“你可以fuzz一個程序,但即使你成功讓它崩潰了,你也無法知道是什么引發(fā)的崩潰。你就像在盲人摸象或者醉鬼開車,完全理不清頭緒。”
Torrey說他設計HARES是為了將其用于抵御黑客的防護機制,而不是用來制造不能被解析的神秘惡意軟件。但他也承認,如果HARES真的有效,也會被用于攻擊性的黑客目的。
“想象一下如果你不能看到震網病毒的代碼,你該怎樣搞清它是個什么東西。我想這將改變對國家級惡意軟件的反應。”
HARES的保護機制也不是那么牢不可破。應用軟件想使用這一加密小花招就必須在軟件安裝時在CPU中放置一個用于解密的密鑰。某些情況下,超有經驗的逆向工程師也可能會攔截到這個密鑰并使用它讀取到程序的隱藏指令。不過,為取得密鑰,他得提前準備,使用一些用于找尋密鑰的軟件。而有時候軟件會被預裝到計算機上,密鑰有可能被操作系統(tǒng)制造商(如蘋果或微軟)提前置于CPU中以防被黑。“從技術觀點看,這種做法尚待商榷,但已比我們現(xiàn)有的辦法好太多。”
破解HARES加密的另一種方法,是利用某些芯片的調試功能。調試功能允許芯片和主板間的一個硬件設備讀取處理器執(zhí)行的每一條指令。不過,要使用這個功能,得添置一個售價高達5位數(shù)的JTAG調試器,這可不是大多數(shù)反向工程師消受得起的。“這絕對是高端貨。很明顯,國家地區(qū)級別的機構會有這些東西,但其他人就可能不會有太多能玩得起了。”
Torrey提到:也許有一天,程序代碼加密的方式將發(fā)生改變,指令不加密也能運行——這樣軟件就真的破解不能了。不過,這種“完全同態(tài)加密”系統(tǒng)現(xiàn)在基本還只處于理論階段,實際用起來會導致處理器花費數(shù)百萬倍的時間來處理指令(相對于不采用此加密系統(tǒng)而言)。而HARES僅僅使受它保護的程序運行變慢2%。“完全同態(tài)加密就是代碼保護界的圣杯,但它是個學術上的數(shù)學問題。HARES則能裝入你當前的系統(tǒng),保護你現(xiàn)在在用的軟件。”
Torrey開發(fā)HARES的TLB分割技術受到了美國國防部高級計劃研究局“網絡快速通道”項目的資金支持。他不準備在今年3月的SyScan安全會議上發(fā)布HARES項目的代碼,而是打算于下個月在邁阿密舉行的潛入安全會議上公開。
Torrey說,如果他3月份的演講過后有程序員決定用HARES的方法去寫超難破解的惡意軟件,他也不會感到意外。只要給黑客們一兩點沒加密的提示,他們就會找到挖掘出你秘密的方法。