滲透測試中的冷卻啟動攻擊和其他取證技術(shù)
這是一個星期四的晚上,快樂時光即將開始。你會盡快走出辦公室。你整天都忙于準備一份報告,第二天早上還需繼續(xù),因此你將電腦鎖屏。這足夠安全,是嗎?因為你使用了高強度密碼,并全盤加密,Ophcrack或者可引導(dǎo)的linux發(fā)行版例如kali不起作用。你自認為安全了,其實你錯了。為了得到重要材料,攻擊者越來越無所不用其極,這包括使用取證領(lǐng)域的最新技術(shù)。
計算機中存在一個單獨的區(qū)塊:活動內(nèi)存,任何一個攻擊者都愿意把手伸到這個存儲有敏感信息完全未加密的區(qū)塊。系統(tǒng)為了方便調(diào)用,在內(nèi)存中存儲了多種有價值信息;全盤加密機制也必須在內(nèi)存的某個地方存儲密鑰。同樣,Wi-fi密鑰也是如此存儲的。Windows在內(nèi)存中存有注冊表鍵值,系統(tǒng)和SAM hive。許多剪貼板內(nèi)容和應(yīng)用程序密碼也在存儲于內(nèi)存中。即問題在于,內(nèi)存存儲了系統(tǒng)在某時刻需要的大量有價值信息。攻擊者要獲得它,需要使用一些同樣的取證技術(shù)。本文有助于向滲透測試工具包中增加這些技術(shù)。
設(shè)置環(huán)境
信息轉(zhuǎn)儲可以很容易的構(gòu)建系統(tǒng)全貌。近年來,內(nèi)存捕獲價值已經(jīng)得到取證專家的高度重視,但卻并未獲得滲透測試人員的足夠重視。這有眾多原因。取證調(diào)查人員使用專業(yè)軟件捕獲內(nèi)存,同時記錄進設(shè)備中。他們使用這些捕獲信息,尋找惡意軟件或隱藏進程。滲透測試人員將會對哈希值、文件、運行進程更感興趣。如果已經(jīng)擁有系統(tǒng)的訪問權(quán)限,他們很大可能不再需要內(nèi)存捕獲來得到這些信息。
但是,在一些情境下,內(nèi)存捕獲對滲透測試人員作用極大。設(shè)想如下場景:在一個內(nèi)部行動中,測試人員獲得了接觸機器的權(quán)限??蛻魸M信心認為測試人員不可能利用這些機器獲得對系統(tǒng)的訪問。這些機器使用了全盤加密,擁有阻止從Ophcrack和下載hash的功能。運行中的機器全部處于鎖定狀態(tài)。客戶不知道的是,測試人員擁有豐富的技術(shù)經(jīng)驗,能夠抓取運行系統(tǒng)內(nèi)存中的內(nèi)容。需要強調(diào)的是有兩種技術(shù)可以用于這樣的情景:冷啟動攻擊和火線接口攻擊。
冷啟動攻擊
2008年年初,普林斯頓大學電子前沿基金會和溫瑞爾系統(tǒng)公司的研究人員聯(lián)合發(fā)表了一篇題為《鮮為人知的秘密:對密鑰的冷啟動攻擊》的文章,該文詳解了從運行系統(tǒng)獲取內(nèi)存信息的一種新型攻擊方式。該類攻擊基于數(shù)據(jù)遺留。人們的普遍看法是機器一旦斷電,內(nèi)存中的數(shù)據(jù)就會立刻丟失;即按開電源開關(guān),所有數(shù)據(jù)在剎那間消失。
然而,研究人員指出真相并非如此。事實上,數(shù)據(jù)從內(nèi)存中丟失需要一定的時間。斷開一臺機器的電源一到兩秒,大部分數(shù)據(jù)會完好無損。該效果可通過冷卻內(nèi)存延長。研究人員借助一種老式社交游戲,倒置一灌壓縮空氣,做了測試。冷卻內(nèi)存確實可以使數(shù)據(jù)保持很多秒,甚至好幾分鐘。這促使研究人員開發(fā)一系列工具,用來從即將關(guān)閉電源的機器內(nèi)存中提取信息,然后再次啟動系統(tǒng)。
使用這種方法捕獲內(nèi)存,存在小錯誤的幾率會相對較高,這就是它被取證組織大量摒棄的原因。但是,滲透測試人員并不需要內(nèi)存的法律上的取證鏡像。如果密鑰或SAM數(shù)據(jù)庫完好無損,即使內(nèi)存有2%的破壞也是可以接受的。即使有點難,這種方法對內(nèi)部滲透測試人員來說,也是一個合適的攻擊向量。
The Lest We Remember團隊創(chuàng)造了大量用于攻擊的工具,可以在普林斯頓網(wǎng)站https://citp.princeton.edu/research/memory/code/下載到。主要工具是一個USB/PXE鏡像工具,可以下載到源碼。研究團隊制作了許多makefiles文件使編譯更容易,他們也在源碼中打包了優(yōu)秀的文檔。32位的提取器應(yīng)該在32位虛擬機或32位物理機器上編譯,64位的提取器同樣需要在64位虛擬機或物理機器上編譯。需要為目標機器使用合適的提取器,如果32位提取器在64位機器上使用,它將不能抓取全部的內(nèi)存空間,因為32位提取器不能完全訪問到64位的內(nèi)存地址空間。
Makefile編譯的結(jié)果是一個命名為scraper.bin的文件,其實是一個可以拷貝到USB設(shè)備的可引導(dǎo)啟動的鏡像工具。該USB同時需要用于存儲內(nèi)存鏡像,建議使用大存儲量的USB設(shè)備;因為當前主流系統(tǒng)使用4G到8G的內(nèi)存,所以建議使用至少16GB容量的USB設(shè)備。以root用戶權(quán)限,使用dd工具把scraper文件拷貝到USB設(shè)備,命令中sdb是硬盤驅(qū)動器的掛載點:
sudo dd if=scraper.bin of=/dev/sdb
這個時候,為目標系統(tǒng)準備好USB設(shè)備。理想情況下,滲透測試人員準備好一個32位的8G和一個64位的16G可以在內(nèi)部環(huán)境使用的USB設(shè)備,同時備好一罐壓縮空氣。目標機器必須是一個運行中,且鎖定的系統(tǒng),有無用戶登錄無關(guān)緊要。同時,目標必須被全盤加密,否則啟動Kali或Ophcrack,只需少量工作,就可以獲得出色效果。
一旦合適的目標被定位后,滲透測試人員(從客戶處獲得了適當?shù)氖跈?quán))應(yīng)該打開機箱,露出內(nèi)存。同時,他們需要插入USB設(shè)備。一切準備就緒后,滲透測試人員可以倒置灌裝壓縮空氣并噴射覆蓋,以冷卻內(nèi)存。由于這會導(dǎo)致在芯片上成霜,小心使用軟管澆內(nèi)存,不要碰到主板其他部分。圖1顯示了已經(jīng)被冷凍用于攻擊的筆記本內(nèi)存。

圖1 為冷啟動攻擊冷卻內(nèi)存
內(nèi)存冷卻足夠后,滲透測試人員需要盡可能快地切斷并恢復(fù)供電。在桌面計算機上,這相對簡單,按reset電源鍵就可實現(xiàn)。但是大部分的筆記本并沒有reset按鍵,進行這樣快速的重置電源操作本質(zhì)上很困難。最好的辦法是快速替換電池,并按電源鍵。上述兩種機器環(huán)境,越是快速恢復(fù)供電,內(nèi)存鏡像就越完好。
當滲透測試人員從USB啟動機器,scraper工具會自動復(fù)制內(nèi)存鏡像至USB設(shè)備。圖2的屏幕截圖顯示了scraper工具在工作。

圖2 Scraper工具
根據(jù)內(nèi)存大小和USB端口速率,捕獲過程需要一會兒,對大容量內(nèi)存則需要數(shù)小時。Scraper程序完全復(fù)制內(nèi)存后,它將立即重新啟動系統(tǒng)。滲透測試人員只需移除USB設(shè)備并插回編譯scraper的機器。在源碼中有一個叫做USBdump的工具,它只是簡單地使用如下命令:
sudo ./usbdump /dev/sdb > memdump.img
把USB設(shè)備上的每個字節(jié)拷貝至滲透測試人員的機器。再次,根據(jù)內(nèi)存捕獲鏡像的大小,這可能需要數(shù)小時。最終結(jié)果是內(nèi)存鏡像的完全拷貝文件,包含目標機器的一個字節(jié)一個字節(jié)的捕獲鏡像,同時有望使錯誤最少。
火線接口攻擊
電氣和電子工程師協(xié)會的1394接口,是初始設(shè)計用于取代SCSI的一個高速通信接口,更因為蘋果公司以火線命名實現(xiàn)而知名?;鹁€的主要部分是它的高速數(shù)據(jù)傳輸速率,這也是它大量應(yīng)用于音視頻傳輸?shù)脑??;鹁€接口高速率的一個主要特征是,它可以完全繞過CPU,通過直接內(nèi)存訪問DMA的方式訪問內(nèi)存。這對從相機下載數(shù)小時連續(xù)鏡頭的視頻編輯者來說是一個好消息,對于滲透測試人員同樣如此。
火線接口的直接內(nèi)存訪問使具有目標機器物理接觸能力的滲透測試人員,可以通過重寫包含訪問控制功能的內(nèi)存部分,繞過操作系統(tǒng)的密碼保護機制。DMA同樣可以讓滲透測試人員下載小于4GB內(nèi)存鏡像。即使火線接口僅能訪問少于4GB的內(nèi)存且能使用反病毒軟件保護DMA,這類型的訪問還是揭示了IEEE1394標準中重大的安全缺陷。由于火線接口的熱插拔功能,即使目標機器在鎖定情況下,攻擊同樣能夠進行。此外,雖然大部分操作系統(tǒng)試圖對知名火線接口設(shè)備如iPods進行DMA授權(quán)限制,但是欺騙設(shè)備很容易。
由于攻擊主要針對火線接口,對同一總線下的任何設(shè)備同樣有效;這些包括ExpressCard,PC Card和所有蘋果新產(chǎn)品都可以使用的雷電端口。
Carsten Maartmann-Moe已經(jīng)開發(fā)了一個叫做Inception的工具,可以輕松利用火線接口。該工具可在http://www.breaknenter.org/projects/inception/找到。Inception必須從一個Linux桌面運行。這種情況下,Linux系統(tǒng)不能是一個虛擬機,因為虛擬機不能實現(xiàn)火線接口傳輸(出于安全原因)。另外,滲透測試人員需要Python3和Freddie Witherden的1394包。最后,攻擊和目標機器都需要具備一個火線接口,EC,雷電或者PC card接口。
Inception安裝準備就緒后,滲透測試人員僅需通過一個火線接口電纜,簡單的連接攻擊和目標機器,并在root權(quán)限模式下運行命令
incept
Incept將會訪問內(nèi)存中負責訪問控制的部分并“修補”它們,使我們可以無密碼訪問機器。當然,目標機器內(nèi)存含有豐富的信息,滲透測試人員可以使用
incept –d
命令轉(zhuǎn)儲小于4GB的內(nèi)存鏡像。
內(nèi)存轉(zhuǎn)儲分析
轉(zhuǎn)儲內(nèi)存鏡像是一會事,分析數(shù)據(jù)則是一個更難的阻礙。幸運地是,一系列專注于此目的的工具可以獲得。在思路上,很少工具是設(shè)計用于滲透測試的。許多是取證分析工具用于尋找運行的進程,惡意軟件和隱藏的數(shù)據(jù)。內(nèi)存取證仍然是一個相對嶄新的領(lǐng)域,尤其是64位環(huán)境下的分析。許多出色的工具仍然局限于法律取證使用。這就是說,大量可執(zhí)行的任務(wù)可以向客戶揭示風險。
Lest We Remember團隊也創(chuàng)建了一個分析工具,用于捕獲內(nèi)存鏡像。他們論文的主題是密鑰可以從內(nèi)存中恢復(fù);他們的工具命名為AESKeyFind,用于在捕獲的內(nèi)存鏡像中搜索AES密鑰次序表并恢復(fù)密鑰。該工具可從下載Scraper程序的同一站點下載。最后,該工具攜帶一個易于編譯的makefile文件。該工具編譯后,可以用命令
./aeskeyfind –v memoryimage.raw
運行,在內(nèi)存鏡像文件中執(zhí)行搜索AES密鑰并在顯示屏上打印它們。AESKeyFind將搜索128位和256位的密鑰,即使鏡像不完全或存在錯誤,該工具也可能恢復(fù)密鑰。例如,圖3顯示了從一個包含大量錯誤的鏡像文件中恢復(fù)AES密鑰。

圖3 在破損內(nèi)存鏡像中找打AES密鑰
這些AES密鑰序列可以被大量不同的應(yīng)用使用。它們可能是用于全盤加密,VPN,無線網(wǎng)絡(luò)的主要密鑰。如果它們被恢復(fù),接下來的步驟就是破譯。
另一個有用的工具是Volatility,一個開源的內(nèi)存取證分析框架。Volatility擁有眾多模塊可以讓滲透測試人員抽取運行進程中有用信息和目標機器設(shè)置。如果內(nèi)存鏡像完好,滲透測試人員甚至能夠抽取出Windows的hashes。
首先是識別出內(nèi)存鏡像的架構(gòu),這樣Volatility才知道到哪個位置找,該項工作由imageinfo模塊完成。圖4顯示了imageinfo模塊被調(diào)用,且內(nèi)存配置文件結(jié)果被Volatility識別。

圖4 Imageinfo模塊識別出鏡像架構(gòu)
使用這些信息,滲透測試人員可以用額外的模塊識別出SAM和來自注冊表的系統(tǒng)hives文件。由于在機器使用時,windows在活動內(nèi)存中存儲注冊表信息;Volatility的hivelist模塊可以用于識別內(nèi)存中的每個注冊表位置。圖5顯示了hivelist模塊正在被imageinfo模塊識別出的配置文件調(diào)用。

圖5 hivelist模塊顯示SAM和System Hives地址
在32位系統(tǒng)中,Volatility有一個hashdump模塊,當給出SAM和System hives地址時,能夠自動抽取密碼hash。遺憾的是,這個模塊當前在64位系統(tǒng)中不能工作,所以限制了它的用途。就是說,Volatility是開源的,沒有理由不能實現(xiàn)64位模塊。另外,一旦SAM和System hives地址確定,一個技術(shù)性可能是從鏡像文件中抽取它們并使用其他工具抽取密碼hashes。
小結(jié)
微軟公司的安全響應(yīng)中心有10個不變的安全法則。第3號法則是,如果一個壞家伙不受限制地訪問你的機器,這已經(jīng)不是你的機器了。許多客戶認為,全盤加密和強密碼彌補了攻擊者對機器的任何物理直接訪問。他們沒有考慮到活動內(nèi)存的危險。活動內(nèi)存中存儲了足夠多的信息,滲透測試人員可以從其中獲得重要信息或?qū)?nèi)部網(wǎng)絡(luò)的訪問權(quán)。這從來沒有被認為是問題,因為對外部攻擊者來說不存在事實方式獲得內(nèi)存鏡像。但是,特定環(huán)境下冷卻啟動和火線接口攻擊,不但使獲得內(nèi)存訪問,而且使獲得密鑰的突破訪問成為可能。
引用
1. Dieterle,D.(2011).Memory Forensics:How to Pull Passwords from Memory Dump. Cyber Arms – Computer Security.Retrieved 2013-11-18.
2. Halderman,J.Alex;Schoen,Seth;Heninger,Nadia;Clarkson,William;Paul,William;Calandrino,Joseph A;Feldman,Ariel J.;Appelbaum,Jacob et al.(2008-02-21).Lest We Remember: Cold Boot Attacks on Encryption Keys. Princeton University. Retrieved 2013-11-18.
3. Maartmann-Moe(Last update 2013).Inception.
Available at http://www.breaknenter.org/projects/inception/. Accessed 2013-11-18.
來源聲明:本文來自Jonathan Fallone的文章《Using Cold Boot Attacks and Other Forensic Techniques in Penetration Tests》,由IDF實驗室成伯敬翻譯。