釋放檔案到臨時資料夾中所引發的安全問題

qq_27446553發表於2016-02-29

近期,McAfee的高階漏洞檢測系統(AEDS)檢測到了一些有趣的RTF檔案,這些RTF檔案在文件中執行“額外”的內容。而通常情況下,這些word文件會讓使用者信任並執行這些“額外”的內容,如下圖展示的是當使用者點選額外的內容時的畫面。

 圖片1.png

可以看到當使用者嘗試去執行文件中附帶的惡意程式時出現了警告。

由於這裡word會有提示,所以可以預見對使用者不會造成威脅。但我們還是強烈建議使用者不要執行任何有附件的文件,因為故事到這裡並沒有結束。就像我們使用AEDS發現PDF中潛在的安全問題一樣,我們已經檢測到當開啟這類RTF檔案的一系列可疑(或是“有趣”)的表現:附加的檔案會被釋放到當前使用者的臨時資料夾中(比如在C:\Users\<username>\AppData\Local\Temp)。如下圖就是一個特別的RTF樣本檔案釋放reader.exe到了臨時資料夾中。

圖片2.png 

當RTF檔案開啟時,reader.exe會被釋放到使用者的臨時資料夾中。

我們發現這種情況會出現在Windows7和8中,無需安裝Office軟體(使用WordPad開啟RTF檔案同樣能觸發這類漏洞)。但是在XP中不能看到這種現象。

檔案釋放通過“Package”Activex控制元件。格式類似如下:

圖片3.png 

“Package”控制元件是被RTF所引用的。

登錄檔中的“Package”ActiveX控制元件資訊如下:

CLSID: {F20DA720-C02F-11CE-927B-0800095AE340}

ProgID: Package

InProcServer32: %SystemRoot%\system32\packager.dll

測試中,我們觀察到如下表現:

檔名以及釋放的檔案內容受控於RTF檔案

開啟RTF文件即可觸發這類情況,無需額外的操作。

如果在臨時資料夾中已經存在相同的檔名,惡意軟體就會釋放<檔案>(2).<副檔名>。當前檔案不會被重寫。

當檔案關閉時,釋放的檔案就會被刪除。

這種行為允許任何人開啟RTF文件時以任意檔名釋放一個任意檔案到臨時資料夾,這個毫無疑問增加了安全顧慮。最好的方法就是在臨時資料夾中建立一個獨一無二的檔名,例如使用隨機檔名或者建立一個程式—在臨時資料夾下的指定目錄。例如,Adobe Reader 11的使用目錄acrord32_sbx(C:\Users\<username>\AppData\Local\Temp\acrord32_sbx)來指定不同的臨時檔案操作。

攻擊者如何濫用這一行為?

由於大多數的應用程式和作業系統經常使用臨時資料夾,而我們不知道每個程式如何使用每個臨時檔案,回答這個問題顯然是困難的。但下面列了一些我們的想法:

在某些情況下,只要該檔案存在,應用程式從臨時資料夾中執行一個可執行檔案。當然,在這種情況下,開啟RTF檔案將會很危險,這個也可以應用於DLL。在真實的環境中,我們希望這種情況儘量少一些。但事實上,大多數程式將會首先建立可執行程式或者DLL(或者如果該檔案存在則重寫),然後執行之。

DLL預載入問題。一些應用程式可能會在臨時資料夾中建立一個可執行檔案並且執行它。在這種情況下,當.exe檔案存在DLL預載入問題,就會在臨時資料夾中尋找那個DLL。如果具有相同檔名的DLL被放置在臨時資料夾中,DLL將會被馬上載入。

應用程式可能會依賴一些特殊的不存在或者不可執行的檔案來執行。當這樣一個檔案放在臨時資料夾中,它可以改變應用程式的表現或者程式的流程,帶來不可預知的安全問題。

我們將其稱之為臨時資料夾訪問漏洞。通過其他應用程式的臨時資料夾訪問的漏洞,攻擊者可以在受害者的系統上執行額外的程式碼。

此類攻擊方案一般包括如下幾個步驟:

攻擊者傳送一個RTF檔案給受害者。

受害者開啟它,一個或者多個特別的檔案釋放到臨時資料夾中。

如果其他程式通過我們所討論的漏洞方式正在訪問臨時資料夾,此時惡意程式碼將會自動執行。文件可能包含一些社會工程的文字來讓受害者信任接下來的一些列操作,例如執行合法的程式。

如果受害者都執行這些步驟,漏洞就會成功觸發。

因此,要攻擊成功,另一個程式存在臨時檔案訪問漏洞是必須的。而有時攻擊者可能還會需要和使用者互動,有時不會。

任何攻擊者都想要進行這種攻擊嗎?

這很難說。成功利用該漏洞要求攻擊者在攻擊前不斷的去學習嘗試,無論目標是否存在臨時資料夾訪問漏洞。一個分析的觀點認為,通過測試RTF樣本的方法通常不足以去理解攻擊者的企圖。例如,一個RTF檔案釋放reader.exe至臨時資料夾中可能僅僅是一個”點選-執行”的把戲,或者是一個漏洞利用的嘗試,如果攻擊者知道這個目標正在通過漏洞的方式執行一些程式來訪問臨時資料夾中的reader.exe。

我們已經發現了一些惡意RTF釋放的有趣的檔名:

CEH.exe

du.sfx.exe

FINCEN~2.EXE

inicio.bat

inv_875867001426_74653003.cpl

pastelyearendguidedm (3).exe

QUICKSHIPPINGDUEINVOICE.exe

Reader.exe

test.vir

高階持續性威脅通常在攻擊前會先了解目標。我們建議一些組織注意這個問題,尤其是複雜的有針對性的攻擊。

安全建議

如果使用者通過MS Word開啟RTF檔案,在工作區通過Office Kill bit可以禁用”Package”ActiveX控制元件。我們發現通過設定如下注冊表值可以解決Office的這個問題。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Common\COM Compatibility\{F20DA720-C02F-11CE-927B-0800095AE340}]
"Compatibility Flags"=dword:00000400

但是如果用WordPad開啟RTF檔案,那麼之前的工作區將不會工作。我們之前談論過很多基於文件的攻擊,最好的防護方法就是不要開啟不明來源的文件。當你發覺任何可疑的時候,儘快關閉文件,不要聽信文件的任何操作。這些步驟可以降低潛在攻擊成功的機率。

調查顯示,在Windows和Office平臺下處理這些RTF檔案時,漏洞不僅僅包括記憶體破壞或者單一的應用程式,系統;它所包含的內容還有很多,其開發的廣度無疑給一些組織和安全公司帶來了挑戰。

*原文地址:blogs.mcafee,東二門陳冠希/編譯,部分內容有修改,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)

相關文章