很不幸,你在自己的電腦里發(fā)現(xiàn)了一個(gè)惡意的可執(zhí)行程序!那么問(wèn)題來(lái)了:這個(gè)文件到底有沒(méi)有執(zhí)行過(guò)?

在這篇文章中,我們會(huì)將注意力放在Windows操作系統(tǒng)的靜態(tài)取證分析之上,并跟大家討論一些能夠幫助你回答上面那個(gè)問(wèn)題的方法以及證據(jù)源,其中涉及到的四大主要的證據(jù)源包括Windows Prefetch、注冊(cè)表、日志文件以及文件信息。
Windows Prefetch
Windows Prefetch(Windows 預(yù)讀取)是一個(gè)查找文件執(zhí)行證據(jù)的好地方。根據(jù)微軟的設(shè)計(jì)方案,Windows Prefetch的功能就是允許那些經(jīng)常需要使用到的程序打開(kāi)得更加快。默認(rèn)設(shè)置下,它會(huì)在預(yù)讀取文件(存儲(chǔ)路徑為”C:\WindowsPrefetch”)中存儲(chǔ)最近執(zhí)行的128個(gè)文件的信息。一個(gè)預(yù)讀取文件的命名規(guī)則為”可執(zhí)行文件名+文件路徑的哈希+后綴名.pf”,預(yù)讀取文件中會(huì)保存文件的第一次和最后一次運(yùn)行日期、文件路徑和執(zhí)行次數(shù)等信息。所以說(shuō),如果你的惡意軟件文件名或路徑哈希出現(xiàn)在了一個(gè)預(yù)讀取文件(例如” DABEARS.EXE-12F3B52A.pf”)之中,那就說(shuō)明這個(gè)惡意文件曾在你的電腦中執(zhí)行過(guò)了。
注:Windows Server默認(rèn)禁用了預(yù)讀取功能。
注冊(cè)表
沒(méi)錯(cuò),Windows注冊(cè)表可是一個(gè)巨大的“寶藏”,注冊(cè)表可以算是Windows系統(tǒng)能夠正常運(yùn)行的基石了。雖然注冊(cè)表非常“龐大”,但是我們接下來(lái)給出的表單卻并沒(méi)有那么復(fù)雜。因?yàn)槿绻_定一個(gè)文件是否執(zhí)行過(guò),我們只需要檢查幾個(gè)重要的注冊(cè)表鍵即可:
1. ShimCache
微軟使用了ShimCache或“AppCompatCache”來(lái)識(shí)別應(yīng)用程序的兼容性問(wèn)題。緩存數(shù)據(jù)能夠追蹤文件路徑、大小、最后修改時(shí)間和最后一次運(yùn)行的時(shí)間。如果一個(gè)文件以Windows進(jìn)程的形式執(zhí)行過(guò),那么它的信息將會(huì)被記錄到ShimCache中,但是ShimCache中記錄的文件信息并不能100%證明一個(gè)文件執(zhí)行過(guò),因?yàn)樗荒茏C明Windows曾與該文件交互過(guò)。下面這個(gè)注冊(cè)表鍵中包含了ShimCache數(shù)據(jù):
HKLMSYSTEMCurrentControlSetControlSessionManagerAppCompatibilityAppCompatCache(for XP)
HKLMSYSTEMCurrentControlSetControlSessionManagerAppCompatCacheAppCompatCache(for Non-XP)
更多關(guān)于ShimCache的內(nèi)容,請(qǐng)參考Andrew Davis的【這篇文章】以及Mandiants的【會(huì)議報(bào)告】。
2. MUICache
當(dāng)一個(gè)文件通過(guò)Windows Explorer(資源管理器)運(yùn)行,程序Shell會(huì)在MUICache中創(chuàng)建一個(gè)入口。Windows使用MUICache來(lái)存儲(chǔ)應(yīng)用程序名以及其他相關(guān)信息,獲取來(lái)的信息主要存儲(chǔ)在下面的注冊(cè)表鍵中:
HKCUSoftwareMicrosoftWindowsShellNoRoamMUICache(for XP, 2000, 2003)
HKCUSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellMuiCache(for Vista, 7, 2008)
關(guān)于MUICache的更多內(nèi)容,請(qǐng)參考windowsir的【這篇文章】。
3. UserAssist
UserAssist可以追蹤可執(zhí)行程序以及資源管理器中打開(kāi)的鏈接,UserAssist鍵能夠追蹤文件的最后一次執(zhí)行時(shí)間以及執(zhí)行次數(shù),并將信息存儲(chǔ)在下面這個(gè)注冊(cè)表鍵中:
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUserAssist
UserAssist鍵的值對(duì)應(yīng)了可執(zhí)行程序的名稱(chēng)以及文件路徑,并使用了ROT13加密。因此,如果你想直接通過(guò)搜索關(guān)鍵字來(lái)查找文件執(zhí)行的證據(jù)的話(huà),在不解碼的情況下是無(wú)法做到的。目前也有很多工具可以解密這個(gè)注冊(cè)表鍵,例如RegRipper userassist.pl插件【點(diǎn)我獲取】。
日志文件
為了確定一個(gè)文件是否執(zhí)行過(guò),我們還可以根據(jù)日志文件的分析結(jié)果來(lái)判斷。首先我們來(lái)看一看Windows System Event Log(系統(tǒng)事件日志),因?yàn)檫@個(gè)日志文件記錄了服務(wù)的啟動(dòng)信息。下圖顯示的事件(Event ID=”7035″)信息表明,一個(gè)管理員(SID=”-500″)運(yùn)行了PSEXECSVC遠(yuǎn)程執(zhí)行服務(wù):

當(dāng)一個(gè)服務(wù)啟動(dòng)時(shí),它通常會(huì)執(zhí)行ImagePath中定義的文件或一個(gè)已加載的服務(wù)DLL。比如說(shuō),”Netman”服務(wù)在執(zhí)行時(shí)使用了一個(gè)合法文件”netman.dll”。但是,如果注冊(cè)表中的ServiceDll(例如”tabcteng.dll”)包含一條指向后門(mén)的路徑,那么”Netman”服務(wù)將會(huì)執(zhí)行”tabcteng.dll”。所以,你可以通過(guò)分析ImagePath和ServiceDll的有效性來(lái)判斷是否有惡意服務(wù)啟動(dòng)過(guò)。
如果Windows Event Log(事件日志)的審計(jì)設(shè)置開(kāi)啟了Audit Process Tracking(審計(jì)進(jìn)程追蹤)功能,那么Windows Security Event Log(安全事件日志)中將會(huì)記錄大量關(guān)于進(jìn)程的信息,而這些信息絕對(duì)能夠證明一個(gè)文件是否執(zhí)行過(guò)。下面這兩張圖片顯示了惡意文件、相關(guān)進(jìn)程ID、父進(jìn)程ID和用戶(hù)名,這些信息可以幫助我們進(jìn)行進(jìn)一步分析:
XP EventID 592 – 進(jìn)程創(chuàng)建:

Windows Vista+記錄下了類(lèi)似的進(jìn)程創(chuàng)建事件,EventID為4688:

在更新版本的Windows中,審計(jì)功能所能記錄的信息將更加精確化,并且微軟從Windows Server 2008 R2以及Windows 7中將這個(gè)功能整合到了Group Policy(組策略)中。關(guān)于審計(jì)策略設(shè)置的更多信息請(qǐng)參考微軟給出的【這份文檔】。
除此之外,基于主機(jī)的IPS或反病毒產(chǎn)品日志同樣可以表明一個(gè)文件是否執(zhí)行過(guò),或者曾經(jīng)嘗試執(zhí)行過(guò)。下圖給出的是McAfee Access Protection日志中記錄下的一次訪(fǎng)問(wèn)事件樣本:
Windows Scheduled Task Log(計(jì)劃任務(wù)日志)可以幫助我們判斷攻擊者是否使用了Windows的計(jì)劃任務(wù)功能來(lái)運(yùn)行惡意軟件。計(jì)劃任務(wù)的信息會(huì)被記錄在一個(gè)名叫”SchedLgU.txt”的日志文件中:

在Windows Vista+平臺(tái)中,計(jì)劃任務(wù)的執(zhí)行信息還會(huì)記錄在”Microsoft-Windows-TaskScheduler/Operational”日志中:

最后,如果一個(gè)程序崩潰了,那么Dr.Watson日志可以記錄下惡意任務(wù)的運(yùn)行信息:

文件功能
另一種判斷文件是否運(yùn)行過(guò)的方法就是尋找可疑的輸出文件。當(dāng)你在分析一個(gè)惡意文件時(shí),它是否會(huì)創(chuàng)建任何的數(shù)據(jù)呢?比如說(shuō),如果你發(fā)現(xiàn)的這個(gè)惡意文件是一個(gè)鍵盤(pán)記錄器,然后你又在系統(tǒng)中發(fā)現(xiàn)了鍵盤(pán)記錄文件,則說(shuō)明攻擊者已經(jīng)執(zhí)行過(guò)這個(gè)keylogger了。如果惡意軟件能夠與特定的域名進(jìn)行鏈接,那么瀏覽器的歷史記錄中肯定也會(huì)記錄下相關(guān)域名。下表中顯示的是我們?cè)跒g覽器歷史紀(jì)錄中捕捉到的樣本,這個(gè)后門(mén)樣本使用了兩種通訊機(jī)制:

想要判斷惡意文件是否執(zhí)行過(guò),我們可以分析文件的功能并在磁盤(pán)中尋找相應(yīng)功能的運(yùn)行結(jié)果/證據(jù)。分析惡意軟件的功能不僅可以幫助我們了解攻擊者的動(dòng)機(jī)和最終目標(biāo),而且還有可能幫我們找出其他相關(guān)的惡意文件。

注:如果你在自己的系統(tǒng)中發(fā)現(xiàn)了惡意的可執(zhí)行文件,別忘了先將當(dāng)前系統(tǒng)內(nèi)存中的數(shù)據(jù)導(dǎo)出,你可以使用MandiantRedline服務(wù)捕捉并分析內(nèi)存數(shù)據(jù)。
|