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