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