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