国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Volatility的圖形化用戶界面的實(shí)現(xiàn)和應(yīng)用

2021-04-01 14:04李嘉鑫張國(guó)榮梁成輝唐遠(yuǎn)新翟繼強(qiáng)

李嘉鑫 張國(guó)榮 梁成輝 唐遠(yuǎn)新 翟繼強(qiáng)

摘要:Volatility是一個(gè)基于Python語(yǔ)言的開(kāi)源內(nèi)存取證框架,因功能強(qiáng)大而廣泛應(yīng)用在計(jì)算機(jī)內(nèi)存取證和分析領(lǐng)域。針對(duì)Volatility基于命令行用戶界面(CLI)參數(shù)繁多和使用不便的問(wèn)題,使用Visual Studio 2016 C++集成開(kāi)發(fā)環(huán)境,在詳細(xì)分析Volatility命令數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,利用匿名管道和進(jìn)程執(zhí)行技術(shù)設(shè)計(jì),實(shí)現(xiàn)了一個(gè)通用的Windows圖形用戶界面的Volatility操作程序,中文界面、交互性強(qiáng),方便用戶對(duì)內(nèi)存轉(zhuǎn)儲(chǔ)文件進(jìn)行解析和研究。

關(guān)鍵詞:取證;Volatility;命令行用戶界面;圖形用戶界面

中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2021)01-60-4

0引言

內(nèi)存取證作為計(jì)算機(jī)取證科學(xué)的重要分支,是指從計(jì)算機(jī)物理內(nèi)存和頁(yè)面交換文件中查找、提取、分析易失性證據(jù),是對(duì)傳統(tǒng)基于文件系統(tǒng)取證的重要補(bǔ)充,是對(duì)抗網(wǎng)絡(luò)攻擊或網(wǎng)絡(luò)犯罪的有力武器[1]。Volatility是一個(gè)使用Python語(yǔ)言編寫(xiě)的內(nèi)存取證工具的框架[2],可以對(duì)現(xiàn)有絕大多數(shù)操作系統(tǒng)進(jìn)行內(nèi)存取證分析,并且支持多種內(nèi)存鏡像格式。

但是Volatility作為一款基于CLI的命令行工具[3],只能通過(guò)手動(dòng)輸入命令來(lái)使用各種功能,并且命令種類繁雜,每種命令還包含多個(gè)參數(shù),對(duì)于非專業(yè)人士來(lái)說(shuō)難于使用。

因此本文提出使用Visual Studio 2016 C++集成開(kāi)發(fā)環(huán)境[4]設(shè)計(jì)和實(shí)現(xiàn)一個(gè)Windows平臺(tái)上運(yùn)行的Volatility圖形化界面操作程序,用戶可以利用本程序方便快速地進(jìn)行內(nèi)存分析和取證。

1系統(tǒng)設(shè)計(jì)

Volatility圖形化界面操作程序采用Windows的窗口消息機(jī)制進(jìn)行構(gòu)建,免去了多余的第三方依賴。同時(shí),為了能夠讓非專業(yè)人士方便快速地進(jìn)行內(nèi)存分析和取證,設(shè)計(jì)了一套簡(jiǎn)單且高效的操作模式替代原本繁雜的手工指令輸入操作。

界面全部采用圖形化操作,為了以線性方式更為直觀地進(jìn)行操作,系統(tǒng)將操作步驟劃分為打開(kāi)鏡像文件、選擇鏡像信息、選擇操作命令和設(shè)置命令參數(shù)。系統(tǒng)整體的運(yùn)行流程是接收用戶輸入、構(gòu)建命令文本、執(zhí)行命令及取回執(zhí)行結(jié)果,主要分為構(gòu)建模塊和控制模塊,其中構(gòu)建模塊負(fù)責(zé)處理用戶輸入以及構(gòu)建對(duì)應(yīng)的操作命令,控制模塊負(fù)責(zé)使用操作命令對(duì)Volatility進(jìn)行控制并取回運(yùn)行結(jié)果。

1.1操作命令的構(gòu)建

Volatility作為一個(gè)功能強(qiáng)大的內(nèi)存取證框架,支持多種命令,不同的命令對(duì)應(yīng)的參數(shù)字段又各有不同。為了實(shí)現(xiàn)可視化的命令構(gòu)建并且減少重復(fù)的樣板代碼,必須提高代碼的抽象程度。這就要求程序?qū)τ诓煌拿顟?yīng)該采取統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)進(jìn)行抽象,并且能夠根據(jù)該數(shù)據(jù)結(jié)構(gòu)繪制出對(duì)應(yīng)的配置面板。

本模塊包括三部分:

(1)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)

Volatility操作命令包含命令名、命令描述和多個(gè)命令參數(shù),操作命令的數(shù)據(jù)結(jié)構(gòu)如下:

分別定義了該參數(shù)在窗后標(biāo)簽上提示的文本、構(gòu)成實(shí)際命令的參數(shù)文本、該參數(shù)是單選參數(shù)或多選參數(shù)(如指定進(jìn)程標(biāo)識(shí)符和指定進(jìn)程名稱都是單選參數(shù),在構(gòu)成命令時(shí)只能取其中的一個(gè);而顯示詳細(xì)信息就是多選參數(shù),可以附加在單選參數(shù)后)、負(fù)責(zé)選定參數(shù)的控件、參數(shù)是否默認(rèn)選定、參數(shù)值的提供類型(如使用下拉框或文本框提供)、負(fù)責(zé)參數(shù)值的控件、下拉框的默認(rèn)內(nèi)容以及值的檢查類型(如整數(shù)、十六進(jìn)制數(shù)、字符串等)。

通過(guò)以上數(shù)據(jù)結(jié)構(gòu),可以把Volatility支持的命令統(tǒng)一且完整地錄入至程序中。

(2)配置面板的繪制

選擇不同命令后應(yīng)該根據(jù)命令本身的使用方法繪制出對(duì)應(yīng)的配置面板。首先清空當(dāng)前面板,重新初始化上一次選擇命令后的現(xiàn)場(chǎng),然后根據(jù)該命令參數(shù)的個(gè)數(shù)來(lái)調(diào)整整個(gè)面板的布局,最后根據(jù)每個(gè)命令參數(shù)調(diào)出對(duì)應(yīng)的選擇控件和輸入控件。

(3)構(gòu)建命令文本

通過(guò)上一節(jié)的操作,用戶在設(shè)置完成參數(shù)后,點(diǎn)擊運(yùn)行會(huì)生成對(duì)應(yīng)的命令文本,構(gòu)建命令時(shí)會(huì)使用參數(shù)數(shù)據(jù)結(jié)構(gòu)中的pszParam字段以及用戶在面板中輸入或選定的值進(jìn)行拼接,還要使用參數(shù)數(shù)據(jù)結(jié)構(gòu)中的ValidationType字段進(jìn)行對(duì)應(yīng)的輸入檢查(如整數(shù)或十六進(jìn)制數(shù)格式的檢查)。

1.2使用操作命令對(duì)Volatility的控制

Volatility是一款基于命令行操作的內(nèi)存取證框架,使用給定參數(shù)啟動(dòng)后會(huì)把相應(yīng)結(jié)果輸出至標(biāo)準(zhǔn)輸出,為了讓圖形界面得到結(jié)果需要將Volatility的結(jié)果輸出重定向。

(1)創(chuàng)建子進(jìn)程用于運(yùn)行Volatility

主進(jìn)程本身已經(jīng)負(fù)責(zé)圖形界面的運(yùn)行,不能用于實(shí)際運(yùn)行Volatility,否則在等待Volatility運(yùn)行時(shí)圖形界面會(huì)失去響應(yīng),必須使Volatility運(yùn)行在新建的子進(jìn)程中。

創(chuàng)建進(jìn)程需要使用CreateProcess函數(shù),其函數(shù)定義如下:

下面只介紹程序中用到的參數(shù),其余參數(shù)均為默認(rèn)值NULL。

參數(shù)lpCommandLine指定子進(jìn)程運(yùn)行程序的命令行文本,在參數(shù)lpApplicationName為NULL時(shí)必須包含要運(yùn)行的應(yīng)用程序文件名;參數(shù)bInheritHandles指定創(chuàng)建的子進(jìn)程是否可以繼承父進(jìn)程擁有的句柄;參數(shù)dwCreationFlags指定創(chuàng)建的子進(jìn)程的創(chuàng)建標(biāo)志,如CREATE_NEW_CONSOLE和CREATE_NO_WINDOW分別表示子進(jìn)程需要新的控制臺(tái)和子進(jìn)程無(wú)需啟動(dòng)窗口;參數(shù)lpStartupInfo指定預(yù)設(shè)置啟動(dòng)信息結(jié)構(gòu)體的指針,啟動(dòng)信息結(jié)構(gòu)體標(biāo)識(shí)進(jìn)程啟動(dòng)時(shí)的初始信息,如標(biāo)準(zhǔn)輸入句柄、標(biāo)準(zhǔn)輸出句柄、標(biāo)準(zhǔn)錯(cuò)誤句柄等;參數(shù)lpProcessInformation指定接受進(jìn)程信息結(jié)構(gòu)體指針。

(2)創(chuàng)建匿名管道傳遞Volatility運(yùn)行結(jié)果

在創(chuàng)建進(jìn)程時(shí)設(shè)置的啟動(dòng)信息結(jié)構(gòu)體包含關(guān)于標(biāo)準(zhǔn)輸出句柄和標(biāo)準(zhǔn)錯(cuò)誤句柄的設(shè)置,為了重定向Volatility的運(yùn)行結(jié)果,需要?jiǎng)?chuàng)建匿名管道用于子進(jìn)程向父進(jìn)程傳遞結(jié)果。

創(chuàng)建管道需要使用CreatePipe函數(shù)[5],其函數(shù)定義如下:

參數(shù)hReadPipe和hWritePipe分別指定接收管道讀寫(xiě)句柄的指針;參數(shù)lpPipeAttributes指定安全參數(shù)結(jié)構(gòu)體指針,該結(jié)構(gòu)體標(biāo)識(shí)了管道句柄是否可以被新進(jìn)程繼承。

父進(jìn)程使用CreatePipe函數(shù)創(chuàng)建匿名管道后使用CreateProcess函數(shù)創(chuàng)建子進(jìn)程,并在啟動(dòng)信息結(jié)構(gòu)體中指明輸出重定向至匿名管道的寫(xiě)入句柄,父進(jìn)程就可以使用ReadFile函數(shù)讀取匿名管道中Volatility的運(yùn)行結(jié)果。

2應(yīng)用測(cè)試

應(yīng)用測(cè)試中,程序運(yùn)行于Windows 10 64位主機(jī)上,測(cè)試鏡像為Windows 7 32位的系統(tǒng)內(nèi)存鏡像[6],目標(biāo)是提取系統(tǒng)鏡像中的敏感資產(chǎn),如圖1所示。

使用pslist命令獲取當(dāng)前系統(tǒng)鏡像中的所有進(jìn)程信息,可以看到,存在iexplore.exe,notepad.exe,mspaint.exe,TrueCrypt.exe等進(jìn)程,如圖2所示。

使用netscan命令查看系統(tǒng)鏡像的網(wǎng)絡(luò)連接情況和套接字信息,分析后沒(méi)有異常,如圖3所示。

在分析網(wǎng)絡(luò)連接無(wú)異常之后,可以對(duì)cmd歷史命令進(jìn)行提取,如圖4所示。

最為關(guān)鍵的是,可以使用memdump命令來(lái)提取以上可疑進(jìn)程的dmp數(shù)據(jù)。

在notepad.exe進(jìn)程數(shù)據(jù)中成功獲取一個(gè)非偽加密的zip壓縮包文件,嘗試爆破密碼無(wú)果,使用strings命令對(duì)原始數(shù)據(jù)敏感信息進(jìn)行過(guò)濾分析操作,strings -e l ./3524.dmp| grep "pan"-B 5 -A 5>notepad.txt,如圖5所示。

在對(duì)加密磁盤(pán)軟件TrueCrypt.exe程序提取之后,將其掛載至主機(jī)磁盤(pán),可以獲取key,如圖6所示。

至此,通過(guò)內(nèi)存取證軟件對(duì)目標(biāo)系統(tǒng)鏡像完成了敏感資產(chǎn)的搜集與提取測(cè)試工作。

3結(jié)束語(yǔ)

針對(duì)Volatility只能進(jìn)行輸入繁瑣命令的問(wèn)題,使用Visual Studio C++語(yǔ)言設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)通用的Windows圖形化界面操作程序,測(cè)試結(jié)果表明,可以方便實(shí)現(xiàn)Windows平臺(tái)下Volatility內(nèi)存取證框架的快速使用,更好地發(fā)揮Volatility內(nèi)存取證框架強(qiáng)大的取證分析能力。

參考文獻(xiàn)

[1]張瑜,劉慶中,李濤,等.內(nèi)存取證研究與進(jìn)展[J].軟件學(xué)報(bào), 2015,26(5):1151-1172.

[2] LIGH M H,CASE A,LEVY J,et al..The Art of Memory Forensics [M].Indianapolis:Wiley,2014.

[3] MICHALAS A,MURRAY R.MemTri: A Memory Forensics Triage Tool Using Bayesian Network and Volatility[C]//The 9th ACM CCS International Workshop on Managing Insider Security Threats.Dallas:ACM,2017:57-66.

[4]孫鑫.VC++深入詳解:第3版[M].北京:清華大學(xué)出版社, 2019.

[5]王耀輝.Windows匿名管道技術(shù)及DOS命令重定向技術(shù)在可視化系統(tǒng)集成中的應(yīng)用[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,33(3):274-277.

[6]翟繼強(qiáng),肖亞軍,楊海陸,等.基于內(nèi)存池標(biāo)記快速掃描技術(shù)的Windows內(nèi)核驅(qū)動(dòng)對(duì)象掃描[J].西北工業(yè)大學(xué)學(xué)報(bào),2019,37(5):1044-1052.

新丰县| 正安县| 聂拉木县| 安西县| 孟村| 涟水县| 肃南| 宜兰市| 永修县| 黔东| 肥西县| 岫岩| 廊坊市| 罗源县| 北碚区| 石河子市| 海淀区| 海城市| 汉寿县| 安西县| 蒙自县| 从江县| 综艺| 贞丰县| 微山县| 徐汇区| 深水埗区| 潮州市| 芜湖市| 德格县| 河北省| 资中县| 霍林郭勒市| 大安市| 宜黄县| 织金县| 白河县| 娱乐| 连南| 文安县| 耿马|