官术网_书友最值得收藏!

3.4 內(nèi)存獲取的其他方式

除了使用軟硬件工具鏡像計算機的物理內(nèi)存,還可以通過其他途徑訪問內(nèi)存數(shù)據(jù),下面分別進行介紹。

(1)虛擬化環(huán)境下獲取內(nèi)存

虛擬機技術(shù)用軟件模擬計算機硬件,可以實現(xiàn)一臺機器運行多個操作系統(tǒng)。現(xiàn)在的大部分虛擬機都具有快照功能,該功能將虛擬機操作系統(tǒng)的當前內(nèi)存以文件的形式保存在相應(yīng)的主機系統(tǒng)中。例如,VMware Workstation虛擬機的快照會在本地磁盤產(chǎn)生一個“vmem”后綴的文件,以保存當前虛擬機系統(tǒng)的全部內(nèi)存數(shù)據(jù),該文件格式與DD工具得到的內(nèi)存格式類似,都保留了原始的系統(tǒng)內(nèi)存內(nèi)容。采用這種方式可以方便地得到某一時刻的系統(tǒng)內(nèi)存數(shù)據(jù)。

雖然實際的目標計算機很少運行在虛擬機中,但是基于其跨平臺、易于操作并可以多次獲取運行中系統(tǒng)內(nèi)存的特性,可以把虛擬機的內(nèi)存文件作為內(nèi)存分析研究階段的內(nèi)存數(shù)據(jù)來源直接使用。

(2)內(nèi)存轉(zhuǎn)儲(Memory Dump)方式

現(xiàn)代操作系統(tǒng)為了調(diào)試和報告錯誤,通常提供了系統(tǒng)出錯時的內(nèi)存轉(zhuǎn)存功能,可以利用系統(tǒng)自帶的或者根據(jù)此功能開發(fā)的取證工具獲取物理內(nèi)存。

(3)Cold-Boot攻擊方式

Halderman[23]發(fā)現(xiàn),芯片在切斷電源后,其電容在極短的一段時間內(nèi)還會保留信息。根據(jù)這一原理,通過使用液氮對剛剛關(guān)機的內(nèi)存芯片進行迅速冷凍保存,將該芯片安裝到新的系統(tǒng)后可以獲取到原來系統(tǒng)殘留的內(nèi)存信息。這是一種極端的方式,理論上非常有趣,實用價值不大。

(4)休眠文件保存的內(nèi)存信息

很多操作系統(tǒng)提供了休眠功能,休眠時內(nèi)存信息往往以文件的形式保存在磁盤中,如Windows系統(tǒng)中的hyberfile.sys文件、Mac OS的/var/vm/.sleepimage.swp文件等。

(5)頁面交換文件中的內(nèi)存信息

物理內(nèi)存在整個計算機體系中是相當寶貴的,為了解決內(nèi)存不足的問題,引入了虛擬內(nèi)存的概念。系統(tǒng)在運行過程中,只對真正需要內(nèi)存的進程分配所需的內(nèi)存,這樣才能保證每個進程都有內(nèi)存可以使用。但是當系統(tǒng)中同時執(zhí)行很多個程序,或者某個程序需要使用的內(nèi)存數(shù)據(jù)超出了物理內(nèi)存的容量時,內(nèi)存還是會被占用完,這樣便無法繼續(xù)執(zhí)行其他的應(yīng)用程序。為了解決這個問題,操作系統(tǒng)在磁盤空間中專門創(chuàng)建了文件對內(nèi)存數(shù)據(jù)進行緩存,可以將這部分磁盤空間當作真正的物理內(nèi)存來使用,操作系統(tǒng)通過一些換入換出操作完成該文件和真正物理內(nèi)存的數(shù)據(jù)交換。對于上層的應(yīng)用程序來說,這個過程是透明的。這些文件中或多或少地保存有內(nèi)存數(shù)據(jù)。在內(nèi)存取證分析過程中,為了盡可能多地利用這部分數(shù)據(jù),也需要對該文件進行獲取和分析。

操作系統(tǒng)一般會限制用戶對這類文件的訪問,在系統(tǒng)運行時,無法直接使用操作系統(tǒng)的文件管理功能獲取。下面以Windows操作系統(tǒng)的頁面交換文件pagefile.sys為例,說明如何直接根據(jù)磁盤的文件系統(tǒng),從底層獲取到這些文件的內(nèi)容。

Windows系統(tǒng)創(chuàng)建的內(nèi)存交換文件pagefile.sys,通常存儲在%SystemRoot%目錄下。默認情況下,其大小與物理內(nèi)存大小相同,也可以在系統(tǒng)設(shè)置中調(diào)整其占用的磁盤空間。在Windows操作系統(tǒng)運行過程中,該文件是被內(nèi)核鎖定的,無法使用Windows系統(tǒng)提供的文件復(fù)制功能來提取該文件。

目前,Windows系統(tǒng)中最常用的文件系統(tǒng)為NTFS(New Technology File System)。NTFS是微軟為其旗下的Windows NT操作系統(tǒng)和Windows NT高級服務(wù)器網(wǎng)絡(luò)操作系統(tǒng)開發(fā)的文件系統(tǒng)。它對FAT和HPFS(高性能文件系統(tǒng))做了若干改進。例如,支持元數(shù)據(jù),使用了高級數(shù)據(jù)結(jié)構(gòu),以便于改善性能、可靠性和磁盤空間利用率,并提供了若干附加擴展功能,如訪問控制列表(ACL)和文件系統(tǒng)日志。NTFS文件系統(tǒng)中一個非常重要的概念是文件相關(guān)的元數(shù)據(jù)文件,簡稱“元文件”。主文件表(MFT,Master File Table)是NTFS的核心,它包含了所有文件和目錄的信息。只要找到了頁交換文件的MFT記錄就可以知道頁交換文件在硬盤上的起始位置和大小,接著就可以通過直接讀取磁盤扇區(qū)的方法來復(fù)制這個頁交換文件。

軟件實現(xiàn)通過NTFS文件系統(tǒng),獲取pagefile.sys文件的主要步驟如下[24]

①主文件表(MFT)定位

分析操作系統(tǒng)所在分區(qū)的BPB(BIOS Parameter Block)數(shù)據(jù)區(qū),該數(shù)據(jù)區(qū)位于NTFS分區(qū)中的第一個區(qū)域。通過查找MFT(Master File Table)的起始邏輯簇號、每簇扇區(qū)數(shù)和每扇區(qū)字節(jié)數(shù)可以計算出根目錄的位置。具體實現(xiàn)是選中磁盤,獲取磁盤句柄,然后讀取該磁盤引導(dǎo)扇區(qū)中的BPB參數(shù),獲得MFT邏輯簇號MFT_Logic_Address。如此就可以找到$MFT的偏移位置。

②頁面文件的文件記錄定位

MFT為NTFS文件系統(tǒng)的第一條文件記錄。磁盤中的每個文件都有自己的文件記錄(File Record),每條文件記錄是固定的1 kB,而且在磁盤中連續(xù)存放。從$MFT的文件記錄開始的16條記錄是系統(tǒng)文件的文件記錄。每條文件記錄由若干文件屬性組成,每個屬性有相同的格式,開始是一個標準屬性記錄頭,然后是屬性的數(shù)據(jù)段。

搜索文件名需要用到文件的FILE_NAME屬性,該屬性值存放的內(nèi)容是文件名,在NTFS中用0x30作為屬性標識符。從$MFT的文件記錄開始,挨個搜索系統(tǒng)分區(qū)的文件記錄,提取文件記錄中文件名屬性,與字符串“pagefile.sys”進行匹配,即可找到頁面文件的文件記錄。

③獲取頁面文件的物理地址

找到pagefile.sys的文件記錄之后,需要用到文件記錄中的另外一個屬性DATA,在NTFS中以0x80作為標識符。NTFS中文件記錄的屬性頭有兩種格式:駐留屬性和非駐留屬性。駐留屬性中文件的數(shù)據(jù)直接存儲在文件記錄中,大小不能超過700 KB。pagefile.sys文件的大小默認和物理內(nèi)存的大小相同,遠大于700 KB,因此文件記錄的DATA屬性頭采用的是非駐留屬性格式。通過分析DATA屬性便可得到pagefile.sys文件的物理偏移地址和文件大小。

利用得到的文件偏移地址和文件大小,直接讀取磁盤的數(shù)據(jù),并將數(shù)據(jù)寫到目標文件中,即可完成pagefile.sys文件的提取。

主站蜘蛛池模板: 罗江县| 浦北县| 灵山县| 漯河市| 永泰县| 阿尔山市| 三江| 五华县| 万年县| 北宁市| 蛟河市| 白玉县| 荆州市| 海兴县| 华池县| 衡阳县| 湖南省| 安徽省| 秦皇岛市| 阜宁县| 皋兰县| 垫江县| 西盟| 江陵县| 思茅市| 司法| 宁波市| 琼海市| 宝清县| 巴东县| 永平县| 沧源| 桃园县| 专栏| 屏东县| 合江县| 沁阳市| 绵竹市| 友谊县| 南和县| 洛隆县|