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

3.2 基于硬件的內存獲取技術和工具

Windows、Linux、Mac都是基于Intel架構的桌面操作系統,對于此類操作系統,硬件獲取內存的原理是利用直接內存訪問(DMA,Direct Memory Access)指令獲取物理內存鏡像。根據讀取內存鏡像的硬件接口不同,可將獲取內存鏡像文件的硬件分為5類,分別是:基于PCI接口鏡像物理內存,基于IEEE 1394火線接口鏡像物理內存,使用網卡鏡像物理內存,基于PCI Express接口鏡像物理內存,基于Thunderbolt接口鏡像物理內存。

3.2.1 基于PCI接口獲取物理內存

內存的硬件獲取方法最早由Brian Carrier提出并實現。他開發了名為“Tribble”[9]的一種演示性的硬件設備。利用Tribble設備,取證人員可以將系統物理內存復制到外部存儲設備中。但是,該設備需要插入計算機的PCI卡槽,并在系統中安裝驅動,重新啟動系統后才能應用。因此,這種基于硬件板卡的方法在在線取證中的實用性并不強,容易受到針對性攻擊,不太安全。

在實際的內存取證中,隨著硬件接口技術的不斷發展,逐步出現了利用以下接口實現內存獲取的方法。

3.2.2 基于IEEE 1394接口獲取物理內存

IEEE1394是蘋果公司開發的串行標準,中文譯名為火線,支持外設熱插拔,可為外設提供電源,能夠連接多個不同設備,支持同步數據傳輸。該技術于1995年被接納為IEEE工業標準,憑借其強大的傳輸性能,成為數字音頻、視頻設備及其他高速外設的理想接口。

物理內存鏡像文件的獲取可以通過IEEE 1394設備、協議和相關的軟件相結合而實現。通過IEEE 1394接口與主機相連的設備可以讀取主機內存,其基本原理基于以下幾點。

(1)1394互連的設備是對等(Peer-to-Peer)連接,設備可以向主機發送讀寫數據請求。

(2)作為IEEE 1394協議在主機端的實現,1394 OHCI用一個物理請求DMA控制器支持直接讀取主機內存的請求。

(3)操作系統IEEE 1394總線驅動程序以及OHCI、SBP2等總線傳輸驅動程序。

根據IEEE 1394協議,在設備向主機發送的異步讀寫請求包中包含64 bit的目標地址字段,包括16 bit的Destination_ID和48 bit的Destination_Offset,用于標識接收此請求的目標節點及節點內偏移地址,而對于節點偏移地址位于底層地址空間(0~PhysicalUpperBound-1或0~000100000000H)的異步讀寫請求(此時成為物理請求),將由物理請求/物理讀寫單元處理,即由1394 OHCI芯片通過DMA控制器直接讀寫系統存儲器。

需要注意的是,并非所有設備節點的物理請求都會被主機允許,主機通過設置兩個請求過濾寄存器(Asynchoronous Request Filter和Physical Request Filter)決定是否允許來自設備節點的請求,而這兩個寄存器的值是由操作系統設置的。因此一個設備若想取得向主機發送物理請求的權力,必須讓主機設置過濾寄存器相應位的值,此工作由設備類驅動程序完成。

因此,硬件實現需要配置成操作系統本身自帶驅動并允許物理請求的設備類(如1394 MassStorage),并獲取此設備類的CSR描述和CONFIG ROM描述。實現原理如圖3-2所示:添加帶有某設備類CSR和CONFIG ROM描述的設備到主機→設備向主機報告→主機安裝設備驅動程序→主機向設備開放物理請求功能→設備使用物理讀寫請求與主機內存交換數據。

圖3-2 1394設備讀取主機內存原理

Ruff[10]、Bock[11]、Boileau[12]等都提出了利用IEEE 1394火線接口進行內存鏡像的方法。

然而,隨著計算機硬件技術的發展,配有1394接口的計算機已經很少見了;除此之外,對配備1394接口的蘋果計算機,由于Mac OS X 10.7.2及其以上版本的操作系統不再支持基于IEEE1394協議對內存的DMA訪問,因此基于IEEE1394接口獲取內存的方法只適應于Mac OS X 10.7.2以下的操作系統;再者,由于IEEE1394總線的尋址能力有限,基于此接口獲取的內存大小不超過4 GB,因此,隨著內存大小的不斷增加,此方法無法滿足獲取完整內存的需求。所以,研究人員提出了通過網卡讀取內存的方法和基于PCI Express接口總線獲取內存的方法。

3.2.3 使用網卡獲取物理內存

Balogh[13]使用基于網卡的網絡驅動程序接口規范(NDIS,Network Driver Interface Specification)協議驅動通過DMA方式讀取計算機物理內存,并通過網絡發送到遠程計算機上。然而,如果攻擊者對NDIS庫進行劫持,就能篡改通過網卡傳送的物理內存數據。Wang等[14]利用PCI網卡中的系統管理模式(SMM,System Management Mode)固件獲取計算機物理內存數據。但是,新版的BIOS對SMM模式進行了鎖定,限制了利用固件獲取物理內存的應用。

3.2.4 基于PCI Express接口獲取物理內存

PCI Express接口總線具有64 bit地址空間訪問能力,因此,基于該接口的內存讀寫工具能讀取4 GB以上的物理內存數據。我們開發了PCI Express內存讀寫工具[15],原理如圖3-3所示。

圖3-3 PCIExpress內存讀寫設備原理

PCI Express內存讀寫設備通過PCI Express總線讀取計算機物理內存,主要包括USB控制器、PCI-E橋接控制器、供電模塊、時鐘模塊、復位模塊、數據傳輸接口轉換模塊、配置接口轉換模塊、總線邏輯模塊等。

其中,供電模塊、時鐘模塊給USB控制器和PCI-E橋接控制器分別提供電源和時鐘脈沖信號;USB控制器與PCI-E橋接控制器之間通過CPLD邏輯器件實現兩者之間的數據傳輸,并且兩者均具有雙向數據傳輸的作用。USB控制器上的USB接口與取證計算機相連接;PCI-E橋接控制器上的PCI Express接口與目標計算機相連接。CPLD邏輯器件可確定USB控制器與PCI-E橋接控制器的主從狀態、進行時序和總線寬度的轉換以及在DMA模式下將內存數據傳輸至取證計算機。

USB控制器中有復位模塊、程序存儲模塊。程序存儲器采用EEPROM存儲固件程序。USB控制器的16 bit數據端與PCI-E橋接控制器的低16 bit數據端相連接,PCI-E橋接控制器的高16 bit數據端經數據傳輸接口轉換模塊與USB控制器的16 bit數據端相連接;USB控制器、PCI-E橋接控制器的控制信號均與配置接口轉換模塊相連接,USB控制器、PCI-E橋接控制器的總線仲裁信號均與總線邏輯模塊相連接。

PCI Express內存讀寫設備與取證計算機和待取證計算機相連接的示意如圖3-4所示。

圖3-4 設備間連接示意

使用該設備讀取內存的流程如圖3-5所示。其具體流程如下。

(1)設備連接,將取證計算機與內存讀取設備的USB接口相連接,目標計算機與內存讀取設備的PCI Express接口相連接。

(2)設備配置,將內存讀取設備配置為以PCI-to-PCI橋與目標計算機相連接的內存控制器,避免目標計算機上出現查找驅動程序的提示信息。

(3)分配PCI總線號、設備號,目標計算機為內存讀取設備分配PCI總線號和PCI設備號,目標計算機自動加載內存讀取設備的驅動程序。

(4)參數發送,取證計算機將讀取命令、寫入命令、內存地址、內存長度信息作為參數,通過USB接口發送至USB控制器中。

(5)配置PCI-E橋接控制器,以USB控制器為總線上的主機、PCI-E橋接控制器為從機,將取證計算機發出的參數發送至PCI-E橋接控制器,PCI-E橋接控制器根據參數構造讀寫物理內存的數據包。

(6)配置繞開UMA地址段,繞開目標計算機內存中的Upper Memory Area地址段,獲取目標計算機的內存數據。

圖3-5 讀取內存流程

(7)采用DMA模式傳輸數據,PCI-E橋接控制器通過PCI Express總線獲取目標計算機的內存數據,以PCI-E橋接控制器為總線上的主機、USB控制器為從機,在DMA模式下通過USB控制器將內存數據發送至取證計算機。

(8)內存數據分析,取證計算機對獲取的內存數據進行校驗和分析。

3.2.5 基于Thunderbolt接口獲取物理內存

Thunderbolt(又名雷電)是由Intel公司2009年設計完成的,并于2011年正式發布的一項新技術,其初始設計理念是用于連接PC和其他設備,用于替代計算機上數量繁多而性能參差不齊的擴展接口。對最初的Thunderbolt接口而言,每條通道都提供雙向10 Gbit/s的帶寬,目前,Thunderbolt3的傳輸率可達40 Gbit/s。Thunderbolt技術被廣泛應用于蘋果系列計算機中,在某些廠商(如惠普、戴爾)生產的部分Windows系統的筆記本計算機中也配有此接口。

美國的TALINO[16]數字取證工作室對Thunderbolt接口取證技術開展過相關研究。可以將3.2.3節中介紹的PCI Express內存讀寫器與一個PCI Express轉Thunderbolt的轉換器(如Sonnet Echo ExpressCard Thunderbolt 2 toExpressCard adapter)相連,使用轉換器的Thunderbolt接口與目標計算機相連接,可讀取帶有Thunderbolt接口的蘋果計算機Mac OS的物理內存。然而,對Windows 10以前的版本而言,由于其不支持Thunderbolt接口設備熱插拔功能,在使用Thunderbolt讀取計算機物理內存時,必須先連接上設備,然后重啟目標計算機,使Windows系統識別出Thunderbolt設備,最后才能成功讀取計算機物理內存。

以上都是基于DMA方式實現對計算機物理內存數據的訪問,采用該方式能夠在不干擾操作系統和CPU的情況下,較為準確地鏡像物理內存。然而,Intel SGX和VT-d技術都會對以DMA方式獲取內存數據產生一定影響。

主站蜘蛛池模板: 略阳县| 于都县| 上思县| 顺昌县| 信宜市| 汉源县| 夏邑县| 嘉兴市| 成武县| 常州市| 弥勒县| 潮州市| 项城市| 新巴尔虎右旗| 芦山县| 东莞市| 中阳县| 隆子县| 遂平县| 伊通| 怀柔区| 绵竹市| 苏尼特左旗| 两当县| 云安县| 确山县| 曲周县| 沂水县| 会理县| 苏州市| 芜湖县| 灵台县| 东阳市| 隆安县| 潮安县| 东源县| 德阳市| 水城县| 马尔康县| 南川市| 横山县|