該技術(shù)不會破壞原文件的簽名,可以讓惡意軟件繞過反病毒檢測。
一項新技術(shù)能夠讓攻擊者在數(shù)字簽名過的文件中隱藏惡意代碼,而不需要破壞其簽名,并進而能夠?qū)⒃撐募苯虞d入進另一個進程的內(nèi)存中。
該攻擊方法由網(wǎng)絡安全公司 Deep Instinct 的一位研究人員 Tom Nipravsky 發(fā)現(xiàn)。它可能將成為罪犯和間諜小組在未來的有用工具,讓他們能夠使惡意軟件溜過反病毒掃描器和其它安全產(chǎn)品。
Nipravsky研究的第一部分已經(jīng)在近日于拉斯維加斯召開的黑帽安全大會上得到展示。它與速記式加密 (Steganography) 有關(guān),可以將數(shù)據(jù)藏在合法的文件中。
惡意軟件作者在以前曾經(jīng)將惡意代碼或惡意軟件配置文件數(shù)據(jù)藏在照片里,Nipravsky的技術(shù)則與此有所不同,因為該技術(shù)能夠讓攻擊者對數(shù)字簽名過的文件如法炮制。這對黑客而言意義非凡,因為數(shù)字簽名的唯一作用就是確保文件來自某個特定的開發(fā)者,而且在傳輸過程中沒有遭到篡改。
如果對某可執(zhí)行文件進行簽名,其簽名的文件就會被存儲在header的某區(qū)域中,該區(qū)域的名稱是屬性證書表 (Attribute Certificate Table, ACT) ,計算文件的哈希值時系統(tǒng)會將它排除出去。ACT中存儲的特定字符串作為文件內(nèi)容的加密代表值。
該方法能夠奏效的原因是數(shù)字證書的信息在簽名時并不被算作源文件的一部分。它時候來被加上的,以證明文件是按照創(chuàng)建者的意愿配置的,并且擁有某個特定的哈希值。
然而,這意味著攻擊者能夠增加數(shù)據(jù),包括在ACT區(qū)域內(nèi)增加單獨的完整文件,而不需要改變文件哈希值、破壞簽名。這種增添會導致文件存儲體積變大。操作系統(tǒng)在進行文件體積檢查的時候會將header區(qū)域計算在內(nèi),比如微軟的Authenticode技術(shù)就會在檢驗文件簽名時進行體積檢查。
然而,文件體積是在文件header中的三個位置上進行聲明的,而其中兩個可以被攻擊者篡改,而不需要破壞簽名。問題在于,Authenticode只會檢查這兩個能夠被篡改的文件體積記錄,而不會檢查第三個。
Nipravsky表示,這是Authenticode設計中的邏輯失誤。如果該技術(shù)檢查了第三項記錄,也即那個無法篡改的值,攻擊者就無法在實現(xiàn)這一技術(shù)的同時確保文件簽名合法。
增加到ACT的惡意數(shù)據(jù)并不會在遭篡改的文件執(zhí)行時同時執(zhí)行,因為它屬于header的一部分,而不是文件body。不過,ACT能夠作為一個惡意軟件的藏身之處,助其繞過反病毒防御。
比如,攻擊者可以將惡意代碼增添至各種微軟簽名的Windows系統(tǒng)文件或者微軟Office文件上。簽名將仍舊有效,文件也仍將能夠執(zhí)行。
此外,大多數(shù)安全應用對這些文件都添加了白名單策略,因為它們得到了可信發(fā)布方微軟的認證。這樣做是為了避免假陽性出現(xiàn),導致刪除關(guān)鍵文件或者系統(tǒng)崩潰。
Nipravsky研究的第二部分是開發(fā)一種能夠秘密將惡意可執(zhí)行文件隱藏進簽名過的文件,而不會被檢測出來的方法。他對Windows在將PE文件加載進內(nèi)存時的整個幕后操作過程進行了反向工程。該步驟并不是公開的,因為開發(fā)者一般而言不需要親自執(zhí)行這一過程,而是依賴操作系統(tǒng)進行文件執(zhí)行。
這部分花費了Nipravsky四個月的全天工作時間,但其成果能夠讓他創(chuàng)建所謂的反射式PE加載器:一個能夠直接將外來可執(zhí)行文件加載入系統(tǒng)內(nèi)存,而不會在硬盤上留下任何痕跡的應用。由于加載器與Windows操作系統(tǒng)使用了完全一樣的操作流程,安全解決方案極難將其活動認定為可疑的。
Nipravsky的加載器可以被用作秘密攻擊鏈條中的一環(huán),使用路過下載的漏洞利用,在內(nèi)存中執(zhí)行一個惡意軟件投放器。該過程之后會從服務器上下載一個數(shù)字簽名過的文件,但其ACT區(qū)域中有惡意代碼,并將代碼直接加載進內(nèi)存中。
研究人員沒有公開放出此加載器的打算,因為它可能遭到濫用。不過,有技術(shù)的黑客如果愿意花費時間,就能夠創(chuàng)建他們自己的加載器。
Nipravsky針對反病毒產(chǎn)品測試了自己的反射式PE加載器,并成功執(zhí)行了一些原本會被檢測到的惡意軟件。
在演示中,他使用了一個通常會被反病毒產(chǎn)品檢測并攔截的勒索軟件,將其加入到數(shù)字簽名文件的ACT區(qū)域中,并使用反射式PE加載器執(zhí)行。
反病毒軟件在勒索軟件已經(jīng)加密了所有用戶文件之后,才檢測到了它創(chuàng)建的勒索文本文檔。太遲了。
即使是攻擊者并不具備Nipravsky的反射式PE加載器,他們?nèi)耘f能夠使用速記式加密技術(shù)在合法的文件中隱藏惡意軟件配置數(shù)據(jù),甚至是通過它來傳遞從機構(gòu)處竊取的數(shù)據(jù)。在數(shù)字簽名文件中隱藏的數(shù)據(jù)一般而言能夠通過網(wǎng)絡層的流量監(jiān)測系統(tǒng),而不會遇到任何障礙。