FireEye:應用程序兼容性緩存的調查
簡介
Windows應用程序兼容性緩存分析受到一限制:緩存中的數據是唯一在系統關機或重新啟動的時候序列化到注冊表。為什么這個限制會如此重要?
因為為了解析應用程序兼容性緩存如今的工具都依賴于在Windows注冊表中找到的序列化高速緩存,這意味著該數據只有在近期重新啟動系統時才是***的。包括美國麥迪安網路安全公司自身的Shim緩存解析器以及內存分析框架都依賴于在內存中找到的Windows注冊表副本。
目前的工具留給研究者只有兩個選擇:重新啟動系統強制高速緩存——這可能會破壞其他的證據,或在系統重新啟動時限制研究者數據分析。解決這個問題的方法就是直接從內核內存分析應用程序兼容性緩存。
本文將介紹應用程序兼容性緩存的內存結構,它允許對已經執行的近期最少使用算法(LRU)應用程序進行實時檢索。還將引入一個Volatility插件(ShimCacheMem)實現基于內存結構的實時應用程序兼容性緩存檢索。我們將會用一個惡意軟件生成并運行其它的惡意程序的例子來說明。
應用程序兼容性緩存
隨著Windows操作系統的升級,一些功能也在不斷改變,可是這可能會影響一些程序的執行。為了減輕這種問題,Microsoft引入了Shim Infrastructure用于應用程序的特定版本的修復,現在被稱為“shims”。
應用程序兼容性緩存或Shim緩存是Windows操作系統應用程序兼容性模塊的一部分,以快速確定由于兼容性問題需要shimming的應用程序。
它存儲在內核里并且在關機的時候序列化到注冊表。在Windows 10里,序列化也是發生在重新啟動的時候。
舉個例子
在這個例子中,一個惡意發射器軟件發出一個HTTP請求到一個網站然后下載一個可執行文件保存到磁盤并執行以檢索CNC服務器的URL。
圖1:在執行前該發射器出現在Temp文件夾中
圖2:發送HTTP請求到一個網站以獲取CNC服務器的URL
圖3顯示了可執行文件被成功下載后Temp文件夾的內容;注意下載的文件的名字——0CD8,是隨機生成的:
在執行其功能之前磁盤上的發射器被刪除然后下載好的可執行文件開始運行。
圖4:發射器軟件已被刪除:
如果沒有一個文件監控程序,這個詳細信息可能會在系統的取證調查過程中被錯過。
如前面所述,研究者可以reboot系統并使用該Shim緩存分析器工具分析注冊表中序列化的應用程序兼容性緩存。或者從內核內存獲取內存轉儲并使用ShimCacheMem插件直接分析應用程序兼容性緩存。
圖5展示了在IntelRC.exe惡意軟件執行之前ShimCacheMem Volatility插件的輸出;注意看該惡意軟件還沒有執行。
圖6展示了ShimCacheMem Volatility插件在IntelRC.exe惡意軟件執行后的輸出。列表中的順序提供了實際的執行順序,第1項是最近執行的應用程序。看第4項,IntelRC.exe,它在第1項中下載的惡意軟件是0DE9.exe。盡管實際上有些文件已經從磁盤刪除了,但是ShimCacheMem Volatility插件還是識別出了在感染的系統上執行惡意軟件。
結論
應用程序兼容性緩存提供了文件執行的有利證據。然而,因為緩存只是加載到注冊表在系統關機或重新啟動,現有的工具還沒有辦法提供查看最近的緩存數據。不過使用shimcachemem Volatility插件可以在無論何時重啟系統的情況下最快地看到緩存。