qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          滲透測(cè)試中的冷卻啟動(dòng)攻擊和其他取證技術(shù)

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

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

           這些AES密鑰序列可以被大量不同的應(yīng)用使用。它們可能是用于全盤加密,VPN,無(wú)線網(wǎng)絡(luò)的主要密鑰。如果它們被恢復(fù),接下來(lái)的步驟就是破譯。
            另一個(gè)有用的工具是Volatility,一個(gè)開(kāi)源的內(nèi)存取證分析框架。Volatility擁有眾多模塊可以讓滲透測(cè)試人員抽取運(yùn)行進(jìn)程中有用信息和目標(biāo)機(jī)器設(shè)置。如果內(nèi)存鏡像完好,滲透測(cè)試人員甚至能夠抽取出Windows的hashes。
            首先是識(shí)別出內(nèi)存鏡像的架構(gòu),這樣Volatility才知道到哪個(gè)位置找,該項(xiàng)工作由imageinfo模塊完成。圖4顯示了imageinfo模塊被調(diào)用,且內(nèi)存配置文件結(jié)果被Volatility識(shí)別。
            
          圖4 Imageinfo模塊識(shí)別出鏡像架構(gòu)
            使用這些信息,滲透測(cè)試人員可以用額外的模塊識(shí)別出SAM和來(lái)自注冊(cè)表的系統(tǒng)hives文件。由于在機(jī)器使用時(shí),windows在活動(dòng)內(nèi)存中存儲(chǔ)注冊(cè)表信息;Volatility的hivelist模塊可以用于識(shí)別內(nèi)存中的每個(gè)注冊(cè)表位置。圖5顯示了hivelist模塊正在被imageinfo模塊識(shí)別出的配置文件調(diào)用。
            
          圖5 hivelist模塊顯示SAM和System Hives地址
            在32位系統(tǒng)中,Volatility有一個(gè)hashdump模塊,當(dāng)給出SAM和System hives地址時(shí),能夠自動(dòng)抽取密碼hash。遺憾的是,這個(gè)模塊當(dāng)前在64位系統(tǒng)中不能工作,所以限制了它的用途。就是說(shuō),Volatility是開(kāi)源的,沒(méi)有理由不能實(shí)現(xiàn)64位模塊。另外,一旦SAM和System hives地址確定,一個(gè)技術(shù)性可能是從鏡像文件中抽取它們并使用其他工具抽取密碼hashes。
            小結(jié)
            微軟公司的安全響應(yīng)中心有10個(gè)不變的安全法則。第3號(hào)法則是,如果一個(gè)壞家伙不受限制地訪問(wèn)你的機(jī)器,這已經(jīng)不是你的機(jī)器了。許多客戶認(rèn)為,全盤加密和強(qiáng)密碼彌補(bǔ)了攻擊者對(duì)機(jī)器的任何物理直接訪問(wèn)。他們沒(méi)有考慮到活動(dòng)內(nèi)存的危險(xiǎn)。活動(dòng)內(nèi)存中存儲(chǔ)了足夠多的信息,滲透測(cè)試人員可以從其中獲得重要信息或?qū)?nèi)部網(wǎng)絡(luò)的訪問(wèn)權(quán)。這從來(lái)沒(méi)有被認(rèn)為是問(wèn)題,因?yàn)閷?duì)外部攻擊者來(lái)說(shuō)不存在事實(shí)方式獲得內(nèi)存鏡像。但是,特定環(huán)境下冷卻啟動(dòng)和火線接口攻擊,不但使獲得內(nèi)存訪問(wèn),而且使獲得密鑰的突破訪問(wèn)成為可能。

          posted on 2014-01-20 10:06 順其自然EVO 閱讀(494) 評(píng)論(0)  編輯  收藏 所屬分類: 安全性測(cè)試

          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 杭州市| 香港| 定陶县| 于田县| 贵阳市| 新乡县| 镇江市| 姚安县| 额尔古纳市| 咸宁市| 沙田区| 万安县| 荥经县| 石屏县| 凤山县| 扎囊县| 衡山县| 普宁市| 楚雄市| 肥城市| 古丈县| 闸北区| 延川县| 前郭尔| 香港| 哈巴河县| 临沂市| 金秀| 淄博市| 高台县| 三亚市| 遵化市| 五华县| 锡林浩特市| 长阳| 沁源县| 宝坻区| 玉山县| 武穴市| 长寿区| 夹江县|