釋放檔案到臨時資料夾中所引發的安全問題
近期,McAfee的高階漏洞檢測系統(AEDS)檢測到了一些有趣的RTF檔案,這些RTF檔案在文件中執行“額外”的內容。而通常情況下,這些word文件會讓使用者信任並執行這些“額外”的內容,如下圖展示的是當使用者點選額外的內容時的畫面。
可以看到當使用者嘗試去執行文件中附帶的惡意程式時出現了警告。
由於這裡word會有提示,所以可以預見對使用者不會造成威脅。但我們還是強烈建議使用者不要執行任何有附件的文件,因為故事到這裡並沒有結束。就像我們使用AEDS發現PDF中潛在的安全問題一樣,我們已經檢測到當開啟這類RTF檔案的一系列可疑(或是“有趣”)的表現:附加的檔案會被釋放到當前使用者的臨時資料夾中(比如在C:\Users\<username>\AppData\Local\Temp)。如下圖就是一個特別的RTF樣本檔案釋放reader.exe到了臨時資料夾中。
當RTF檔案開啟時,reader.exe會被釋放到使用者的臨時資料夾中。
我們發現這種情況會出現在Windows7和8中,無需安裝Office軟體(使用WordPad開啟RTF檔案同樣能觸發這類漏洞)。但是在XP中不能看到這種現象。
檔案釋放通過“Package”Activex控制元件。格式類似如下:
“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)
相關文章
- 怎麼清理temp資料夾的臨時檔案?Win7系統電腦temp臨時檔案的清理方法Win7
- Oracle資料檔案和臨時檔案的管理Oracle
- Win10臨時資料夾的路徑在哪 win10系統臨時檔案如何找到Win10
- PHP 上傳檔案找不到 tmp_name 臨時檔案的問題PHP
- [20190410]dg建立臨時表檔案資料檔案.txt
- C# 將資料夾中檔案複製到另一個資料夾C#
- 畸形檔案 資料夾
- 踩坑PHP複製檔案到另外資料夾PHP
- Python求取資料夾內的檔案數量、子資料夾內的檔案數量Python
- git的gitignore檔案排除資料夾和檔案Git
- Linux檔案刪除但空間不釋放問題篇Linux
- R語言遍歷資料夾求取其中所有柵格檔案的平均值R語言
- 處理Linux刪除檔案後空間未釋放的問題Linux
- (轉載)刪除檔案後硬碟空間不釋放的問題硬碟
- 讀取資料夾檔案
- Sublime Text 查詢時排除指定的資料夾或檔案
- ASP.NET Core 上傳檔案到共享資料夾ASP.NET
- 用不安全的授權建立臨時檔案漏洞
- TF卡資料夾右擊檢視屬性時它說“資料夾變檔案”
- Qt 選擇資料夾、建立資料夾以及建立檔案QT
- 大資料的不斷積累,網路面臨哪些安全問題?大資料
- ftp複製檔案或資料夾時出錯,操作超時FTP
- [Git命令]上傳單個檔案到GitHub專案已有資料夾Github
- python 如何刪除資料夾下的所有檔案和子資料夾?Python
- 資料夾裡的檔案怎麼設定跟外資料夾同名
- 把多個資料夾中的檔案批量放到一個資料夾
- 解決表格檔案上傳無法刪除臨時檔案的問題Failed to perform cleanup of multipart itemsAIORM
- SQLServer如何釋放tempdb臨時表空間SQLServer
- QFileDialog實現同時選擇檔案和資料夾,確認取消按鈕英文問題解決方法
- Maven專案META-INF資料夾不存在的問題Maven
- dotnet C# 簡單的追加資料夾到 ZipArchive 壓縮檔案的方法C#Hive
- .gitignore 在已忽略資料夾中不忽略指定檔案、資料夾...Git
- 解決刪除檔案後 WSL2 磁碟空間不釋放的問題
- linux 檔案、資料夾許可權Linux
- Window資料夾,檔案命名規則
- 修改檔案、資料夾許可權
- macOS鎖定檔案和資料夾Mac
- Linux加密壓縮檔案/資料夾Linux加密
- 利用java建立檔案或者資料夾Java