張澤 陳順 郭雅楠 余子龍 靖闊 楊建強(qiáng)
摘? 要: 安全用戶經(jīng)常需要分析并找出系統(tǒng)中的可疑程序。利用Windows的PowerShell、WMI和內(nèi)置程序?qū)崿F(xiàn)了一個(gè)可疑程序取證工具,它能夠輔助安全用戶對(duì)可疑程序進(jìn)行分析和取證。相較于第三方工具,該工具更加方便、安全、可靠,在某些方面也更加智能。測(cè)試結(jié)果表明,該工具能夠切實(shí)地輔助安全用戶識(shí)別可疑程序,收集與可疑程序有關(guān)的重要數(shù)據(jù)。
關(guān)鍵詞: PowerShell; 可疑程序; 安全; 取證
中圖分類號(hào):TP309.5? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? 文章編號(hào):1006-8228(2022)02-23-04
Design of suspicious program forensics tool of using PowerShell
Zhang Ze, Chen Shuncai, Guo Yanan, Yu Zilong, Jing Kuo, Yang Jianqiang
(School of Computer Engineering, Hubei University of Arts and Science, Xiangyang, Hubei 441053, China)
Abstract: Security users often need to analyze suspicious programs in the system. A forensics tool for suspicious program was implemented by using Windows PowerShell, WMI and built-in programs. This tool can assist security users to analyze suspicious programs and collect the evidences. Compared with third-party tools, this tool is more convenient, safe, reliable, and smarter in some aspects. The test results show that the tool runs well and functions normally, and can effectively assist security users in identifying suspicious programs and collecting important data related to suspicious programs.
Key words: PowerShell; suspicious program; security; forensics
0 引言
防病毒軟件并不能檢測(cè)出所有的惡意軟件(或病毒),特別是新出現(xiàn)的惡意軟件。另外,有些不被識(shí)別為惡意軟件的程序,盡管并無明顯的惡意行為,但是卻會(huì)消耗大量的網(wǎng)絡(luò)帶寬資源、CPU計(jì)算資源或頻繁讀寫磁盤,嚴(yán)重影響合法程序的正常運(yùn)行;有些軟件會(huì)時(shí)不時(shí)地彈出廣告窗口;有些軟件會(huì)誘導(dǎo)用戶修改系統(tǒng)配置或下載安裝其他軟件。這些軟件程序,盡管可能不被識(shí)別成病毒或惡意軟件,但是卻會(huì)影響用戶使用系統(tǒng)的體驗(yàn),甚至?xí)绊憳I(yè)務(wù)系統(tǒng)的正常運(yùn)行[1]。因此,很多企業(yè)的網(wǎng)絡(luò)管理員或安全分析員,以及具有較強(qiáng)安全意識(shí)的普通用戶,都會(huì)經(jīng)常對(duì)系統(tǒng)中正在運(yùn)行的進(jìn)程進(jìn)行分析,以識(shí)別出可疑的程序(如惡意軟件、流氓軟件、間諜軟件、廣告軟件等)。雖然Windows的“任務(wù)管理器”在一定程度上可用于對(duì)可疑的程序進(jìn)行分析,但它并不是一個(gè)很專業(yè)的工具,特別是較早版本的Windows系統(tǒng)(包括Windows 7)的任務(wù)管理器更是如此。另外,某些第三方工具如ProcessHacker雖然能夠很好地用于分析可疑程序[2],但是,如果企業(yè)網(wǎng)絡(luò)禁止安裝第三方軟件的話,則可能無法使用此類軟件。這些工具通常不能對(duì)遠(yuǎn)程系統(tǒng)進(jìn)行分析,在某些方面也缺少一定的智能。
我們利用Windows的PowerShell、WMI和內(nèi)置程序?qū)崿F(xiàn)了一個(gè)可疑程序取證工具。該工具能夠收集可疑程序的相關(guān)信息,輔助安全用戶(主要指安全分析師、網(wǎng)絡(luò)管理員以及具有較強(qiáng)安全意識(shí)的普通用戶等)對(duì)可疑程序進(jìn)行分析和取證。該工具既可以對(duì)本地系統(tǒng)的進(jìn)程進(jìn)行分析取證,也可以對(duì)遠(yuǎn)程系統(tǒng)上的進(jìn)程進(jìn)行分析取證。同時(shí)還能夠智能地識(shí)別出某些可疑的進(jìn)程,從而輔助安全用戶快速定位惡意或流氓程序。該工具能夠在Windows 7及之后的所有Windows系統(tǒng)上運(yùn)行,并且不需要借助任何第三方工具,僅僅依靠Windows自身提供的程序或功能,就可以對(duì)可疑程序進(jìn)行分析、取證。相較于第三方工具,該工具更加方便、安全、可靠,在某些方面也更加智能。
1 功能設(shè)計(jì)
要分析并確定系統(tǒng)中的可疑進(jìn)程或程序,安全用戶需要了解Windows系統(tǒng)中常見的進(jìn)程(特別是系統(tǒng)進(jìn)程),熟悉它們的名稱和上下文環(huán)境。比如特定的父進(jìn)程、特定的執(zhí)行賬戶、固定的程序文件路徑(啟動(dòng)位置)等。如果常見的進(jìn)程在父進(jìn)程、執(zhí)行賬戶或啟動(dòng)位置等方面出現(xiàn)偏離,則可能是惡意程序[3]。對(duì)于系統(tǒng)中不常見的進(jìn)程,也需要從上述幾個(gè)方面進(jìn)行判斷。此時(shí)主要看該進(jìn)程的執(zhí)行賬戶是否合適、父進(jìn)程是否恰當(dāng)、啟動(dòng)位置是否合理。比如,普通進(jìn)程的執(zhí)行賬戶是System而非當(dāng)前用戶帳戶,在資源管理器中啟動(dòng)的程序的父進(jìn)程不是explorer.exe,程序的啟動(dòng)位置不是Program Files和System32,這些都是程序可疑的線索。因此,取證工具需要向安全用戶呈現(xiàn)系統(tǒng)中所有進(jìn)程的如上信息。本工具將以樹型格式顯示進(jìn)程的父子關(guān)系,同時(shí)給出各個(gè)進(jìn)程的執(zhí)行賬戶和啟動(dòng)路徑等信息。為了幫助安全用戶快速定位可疑的進(jìn)程,本工具將借鑒人工智能技術(shù)來嘗試識(shí)別可疑的進(jìn)程。
像惡意軟件、流氓軟件、間諜軟件或廣告軟件之類的可疑程序,為了能夠長(zhǎng)期存活,通常都會(huì)采用某種方式隨系統(tǒng)啟動(dòng)而運(yùn)行。這些方式包括:在啟動(dòng)文件夾中或注冊(cè)表的自啟動(dòng)項(xiàng)中存放本程序文件的路徑或快捷方式,或以服務(wù)或計(jì)劃任務(wù)的方式啟動(dòng)自己[3]。本工具將查看可疑進(jìn)程在上述位置是否存在啟動(dòng)命令。
可疑程序可能還會(huì)與遠(yuǎn)程計(jì)算機(jī)通信,本工具將監(jiān)視可疑程序的網(wǎng)絡(luò)活動(dòng)。可疑程序的創(chuàng)建時(shí)間有時(shí)也能作為分析線索。另外,某些可疑程序?yàn)榱吮4媾渲眯畔⒒虮苊獗话踩脩舭l(fā)現(xiàn),還會(huì)創(chuàng)建新的文件。本工具將查看可疑程序文件的創(chuàng)建時(shí)間并查找與該時(shí)間相近的其他文件的路徑信息。
除了以上功能,本工具還利用惡意程序檢測(cè)網(wǎng)站VirusTotal查看可疑程序是否是惡意程序[4]。除了對(duì)本地Windows系統(tǒng)上的可疑程序進(jìn)行取證,本工具還可以對(duì)遠(yuǎn)程系統(tǒng)上的可疑程序進(jìn)行取證。另外,默認(rèn)情況下,所有的取證結(jié)果都顯示在屏幕上,本工具也可以將各種取證結(jié)果以獨(dú)立的CSV或TXT文件形式保存起來,方便長(zhǎng)期保存和事后分析。
概括而言,本工具具有如下六大功能:①顯示帶有關(guān)鍵信息的進(jìn)程樹;②智能識(shí)別可疑進(jìn)程;③搜集可疑程序的相關(guān)信息;④利用VirusTotal在線檢測(cè)可疑程序;⑤保存取證結(jié)果到文件中;⑥遠(yuǎn)程取證。
2 設(shè)計(jì)要點(diǎn)
2.1 PowerShell版本的選擇
不同版本的Windows使用的PowerShell版本并不相同。比如,Windows 7及Windows Server 2008 R2默認(rèn)安裝2.0版的PowerShell,Windows 10、Windows Server 2016和Windows Server 2019默認(rèn)安裝PowerShell V5.1[5]。不過,基本上來說,PowerShell是向前兼容的,這意味著為舊版本的PowerShell編寫的腳本通??梢栽谛掳姹镜腜owerShell上運(yùn)行。另外,盡管可以通過安裝PowerShell V1.0讓某些早期的Windows系統(tǒng)(比如XP SP2)支持PowerShell,但這些Windows系統(tǒng)已經(jīng)過時(shí),極少有人去使用。還有,盡管微軟已經(jīng)結(jié)束對(duì)Windows 7的支持,但是Windows 7目前仍然占有比較大的市場(chǎng)[6]。所以本工具使用環(huán)境開發(fā)PowerShellV2.0,從而可以在Windows 7及之后的所有Windows系統(tǒng)上運(yùn)行。
2.2 遇到的問題及解決方法
盡管以PowerShellV2.0作為開發(fā)環(huán)境可以保證本工具能夠在主流的Windows上運(yùn)行,但是Power-
ShellV2.0是比較早的版本,缺少實(shí)現(xiàn)本工具的某些功能的命令或函數(shù)。我們采用的解決辦法是利用Windows的某些內(nèi)置程序來實(shí)現(xiàn)這些功能。如表1所示。表1中同時(shí)還給出了PowerShell V2.0之后新增的具有類似功能的函數(shù)。
在中文版Windows中,控制臺(tái)的默認(rèn)代碼頁(yè)是936。在此代碼頁(yè)下,程序schtasks無法正常工作。為了能夠順利使用schtasks獲得系統(tǒng)中的計(jì)劃任務(wù),我們先保存當(dāng)前的代碼頁(yè),然后使用命令chcp切換到代碼頁(yè)437(此代碼頁(yè)下schtasks可以正常工作),然后執(zhí)行schtasks獲得計(jì)劃任務(wù)列表,之后再切換回原來的代碼頁(yè)。
2.3 其他重要設(shè)計(jì)
PowerShell以兩種不同的方式來進(jìn)行遠(yuǎn)程處理,一種稱為一對(duì)一遠(yuǎn)程處理,另一種稱為一對(duì)多遠(yuǎn)程處理。前者實(shí)際上是在遠(yuǎn)程系統(tǒng)上執(zhí)行命令,包括腳本程序,后者是把命令發(fā)送到多個(gè)遠(yuǎn)程計(jì)算機(jī)上,每個(gè)計(jì)算機(jī)獨(dú)立地執(zhí)行命令并返回結(jié)果[7]。當(dāng)使用本工具對(duì)遠(yuǎn)程系統(tǒng)上的進(jìn)程進(jìn)行分析取證時(shí),如果使用第一種遠(yuǎn)程處理方式,則需要事先把腳本程序復(fù)制到遠(yuǎn)程系統(tǒng)上,這樣做不僅麻煩,效率也低。所以,我們采用第二種遠(yuǎn)程處理方式,這種方式使用PowerShell的Invoke-Command命令進(jìn)行一對(duì)多遠(yuǎn)程處理。
為了簡(jiǎn)化遠(yuǎn)程取證的編碼,并以統(tǒng)一的方式處理本地取證和遠(yuǎn)程取證,本工具把所有的數(shù)據(jù)收集功能集中在一個(gè)函數(shù)模塊中。這樣做,一方面,只需用一條Invoke-Command命令調(diào)用該函數(shù)即可完成對(duì)遠(yuǎn)程系統(tǒng)上相關(guān)信息的收集,另一方面,也使得程序的流程更加簡(jiǎn)潔,邏輯更加清晰。
為了幫助安全用戶快速定位可疑的進(jìn)程,借鑒人工智能思想,本工具根據(jù)Windows中程序啟動(dòng)的常見位置、環(huán)境變量path中的路徑、常見的Windows程序啟動(dòng)位置,來判斷系統(tǒng)中的進(jìn)程的啟動(dòng)位置是否異常;同時(shí)判斷部分常見的系統(tǒng)進(jìn)程的父進(jìn)程和執(zhí)行賬戶是否異常。如果異常,則給出進(jìn)程可疑的提示信息,從而輔助安全用戶快速定位可疑的進(jìn)程。
在利用VirusTotal來查看可疑程序是否是惡意文件時(shí),我們把可疑的程序文件和它所加載的所有非微軟官方的DLL文件的Hash指紋提交到VirusTotal來進(jìn)行查詢。之所以不查詢微軟的DLL,一是它們基本上都是Windows系統(tǒng)文件。既然我們信任并使用Windows的內(nèi)置程序,我們也應(yīng)該信任這些DLL;二是可以節(jié)約查詢時(shí)間,提高執(zhí)行速度。
3 軟件實(shí)現(xiàn)
本工具是一個(gè)基于PowerShell腳本的命令行工具,其具體的執(zhí)行結(jié)果或功能依賴于是否使用命令選項(xiàng)以及使用何種選項(xiàng)。當(dāng)本工具不帶任何選項(xiàng)時(shí),將以樹形的格式顯示系統(tǒng)中的進(jìn)程。如圖1所示。
本工具可用的選項(xiàng)及其功能說明如下。
list:以列表的格式顯示系統(tǒng)中各個(gè)進(jìn)程的信息,包括進(jìn)程的名字、ID、父進(jìn)程的ID、用戶賬戶、可執(zhí)行文件路徑、命令行參數(shù)。
p:后跟指定進(jìn)程的ID,將搜索并顯示該進(jìn)程的家族線、加載的DLL、網(wǎng)絡(luò)活動(dòng)、與之相關(guān)的計(jì)劃任務(wù)和服務(wù)、該進(jìn)程在注冊(cè)表中或啟動(dòng)文件夾中的自啟動(dòng)項(xiàng)、進(jìn)程的可執(zhí)行文件的時(shí)間戳等信息。該選項(xiàng)不能和下面的filepath同時(shí)使用。
filepath:后跟指定的程序文件的路徑,將搜索并顯示與給定的程序文件有關(guān)的信息(內(nèi)容和選項(xiàng)p相似)。如果該程序文件作為進(jìn)程在運(yùn)行,還會(huì)顯示進(jìn)程的相關(guān)信息。該選項(xiàng)不能與p同時(shí)使用。
outpath:后跟指定的文件夾路徑,將以CSV或TXT文件的格式在該路徑下保存指定的進(jìn)程(和選項(xiàng)p同時(shí)使用時(shí))或程序文件(與filepath同時(shí)使用時(shí))的有關(guān)信息。
minutes:后跟分鐘數(shù),將搜索與可疑的程序文件的創(chuàng)建時(shí)間相距給定時(shí)長(zhǎng)的文件。
computer:后跟將要分析的遠(yuǎn)程計(jì)算機(jī)的名字或IP地址,將對(duì)遠(yuǎn)程計(jì)算機(jī)進(jìn)行取證。
credential:當(dāng)分析遠(yuǎn)程計(jì)算機(jī)時(shí),可以使用該選項(xiàng)給出遠(yuǎn)程系統(tǒng)的賬戶憑據(jù)。
vcheck:在VirusTotal網(wǎng)站上檢測(cè)可疑進(jìn)程加載的模塊文件(程序文件及其加載的DLL)是否是惡意文件。
從使用命令選項(xiàng)的角度,本工具的主要執(zhí)行流程如圖2所示。無論是本地取證還是遠(yuǎn)程取證(使用選項(xiàng)computer),執(zhí)行流程都是一樣的。需要說明的是,為突出主要流程和避免流程過于復(fù)雜,圖2中省略了minutes選項(xiàng)。minutes只在使用p或filepath選項(xiàng)的時(shí)候使用,并且可以和outpath、vcheck同時(shí)使用。
4 結(jié)束語
許多公司或企業(yè)的網(wǎng)絡(luò)信息系統(tǒng)對(duì)軟件的安裝有著嚴(yán)格的限制,因此安全用戶可能無法使用合適的工具對(duì)系統(tǒng)中的可疑進(jìn)程進(jìn)行分析取證。本文中取證工具利用Windows的PowerShell、WMI和內(nèi)置程序?qū)崿F(xiàn),不受企業(yè)軟件安裝策略的限制,可以運(yùn)行在Windows 7及之后的所有Windows系統(tǒng)上。測(cè)試結(jié)果表明,本工具能夠切實(shí)地輔助安全用戶識(shí)別可疑程序,收集與可疑程序有關(guān)的重要證據(jù)。本工具不僅為嚴(yán)格限制軟件安裝的企業(yè)網(wǎng)絡(luò)提供了一種對(duì)可疑程序進(jìn)行分析和取證的選擇,其特有的功能也是對(duì)現(xiàn)有的可疑程序分析工具的補(bǔ)充。本工具還有進(jìn)一步拓展的空間。比如,增加同時(shí)對(duì)多個(gè)遠(yuǎn)程系統(tǒng)進(jìn)行取證的能力;當(dāng)通過向VirusTotal提交文件指紋來檢測(cè)文件是否包含惡意代碼失敗時(shí),轉(zhuǎn)而提交文件內(nèi)容來進(jìn)行檢測(cè);提供更多自動(dòng)識(shí)別可疑程序的途徑,以增強(qiáng)軟件的智能。未來我們將進(jìn)一步強(qiáng)化本工具的功能。
參考文獻(xiàn)(References):
[1] 陸英.時(shí)下流行的9種惡意軟件[J].計(jì)算機(jī)與網(wǎng)絡(luò),2019,45
(10):55-56
[2] Hoskyn, Jane. FREE SOFTWARE that SPEEDS UP
YOUR PC[J]. Computer Act!ve,2014(426)
[3] 韓筱卿,王建鋒等.計(jì)算機(jī)病毒分析與防范大全[M].北京:
電子工業(yè)出版社,2008
[4] 萬立夫.用客戶端直接到VirusTotal檢測(cè)文件[J].電腦迷,
2014(2):73
[5] How to Check the PowerShell Version Installed? [2020-11-3]
http://woshub.com/check-powershell-version-installed/
[6] Windows 7正式退休 微軟希望提升Win10市場(chǎng)占有率
[2020.01.15]. http://www.techweb.com.cn/it/2020-01-15/2773763.shtml
[7] Don Jones, Jeffery Hicks. Learn Windows PowerShell 3 in
a Month of Lunches (Second Edition)[M]. New York, US, Manning Publications Co,2013