2012年10月11日 星期四

惡意程式密碼解讀:淺談記憶體分析技術


惡意程式密碼解讀:淺談記憶體分析技術

內頁-主圖
physical memory(實體記憶體),也叫作RAM(隨機存取記憶體),每部電腦上都會配置有記憶體。記憶體的一個很大的特點就是「揮發性」,當電腦系統運作時用來儲存程式及網路連線所需的資料,當電腦系統關機時資料就會不見。記憶體中存有很多有用的資訊,例如系統載入的模組及DLL(動態連接資料庫)、每個執行中程式開啟的網路連線及檔案資訊、密碼、電子郵件及附件等。相對於硬碟資料的分析,實體記憶體的內容能提供更多的資訊,因此在數位鑑識及惡意程式分析等相關領域而言是很有價值的。

早在多年前,很多的研究人員就知道記憶體內容具有很大的價值,但相對硬碟內容的分析,記憶體內容的分析就難上許多。記憶體分析的挑戰在於其資料儲存方式並沒有一定的結構,另外不同的作業系統版本上記憶體內容的資料儲存格式也不同,甚至不同的service pack,資料的儲存格式也會因而不同。
所以,要對記憶體內容進行分析時,第一個課題就是要確認作業系統的版本,確認了版本之後還要有相對於這個作業系統版本的記憶體儲存方式的資訊,才能取出有用的資訊來進行後續的分析。這使得研究人員空知前有一個大寶庫,但卻無開門的鑰匙。所以相關的研究單位及社群一直希望能有一些工具能很方便地取得及分析記憶體傾印檔(dump)。

2005年DFRW研討會算是記憶體分析領域上一個重要的里程碑,在當年的會議上提出了一個記憶體分析的挑戰(memory analysis challenge)。這個題目是提供兩個記憶體傾印檔(memory dump),所有人均可下載回去進行分析,以文件回答挑戰題中所提的問題,以所使用的技術、萃取資訊量的多寡及文件的質量做為評選的標準。最後的優勝者有兩個,兩組優勝者對問題的解答及文件可由DFRWS網站上取得,雖然兩組優勝者並沒有提供所開發的工具,但這開啟了近代記憶體分析的相關研究以及工具的開發。

為何要去收集及分析記憶體內容呢?它有什麼用途?為何它很重要呢?直到今天,還是有很多的研究人員希望由收集到的記憶體內容中找到扣押的硬碟中找不到的資訊,特別是密碼。有些程式會要求使用者輸入密碼,通常在輸入介面中是看不到密碼的,但通常可以在記憶體內容中找到。另一個常見的應用是用來處理加殼(shell)或加密的惡意程式。惡意程式有很多種手段來進行混淆(obfuscated)的動作,阻撓惡意程式分析的工作。但無論如何,當它開始放進記憶體中執行時,就必須解殼、解碼。也就是說,只要惡意程式被執行了,那它就會以解開的狀態存在於記憶體內容中。最後是關於木馬程式,它通常有匿蹤的能力,能隱藏程序、檔案、registry key以及網路連線,在被感染的系統中是看不到的,但通常透過記憶體內容的分析可以找到相關的資訊。

惡意程式分析是國網中心資安團隊主要的核心工作之一,目前已自行研發出惡意程式分析平台,台灣惡意程式分析平台(TWMAN),用以進行惡意程式行為之自動化分析。面對惡意程式日益精進的匿蹤技術,傳統的惡意程式分析方法難以取得有效之資訊。預期記憶體分析技術的導入能有效克服惡意程式之匿蹤機制,突破傳統惡意程式分析技術的瓶頸,讓惡意程式分析人員足以面對更複雜多變的挑戰。

文/網路與資安組 邱敏乘
轉載自《國網中心》