當前位置:
首頁 > 新聞 > 惡意軟體監控之利用PyREBox進行惡意軟體分析

惡意軟體監控之利用PyREBox進行惡意軟體分析

在2017年7月,思科Talos團隊發布了PyREBox,一個用Python腳本編寫的逆向分析沙箱的開源工具。其實,這個工具一開始只是Talos 為改進惡意軟體監控流程而進行優化項目的其中一個小的部分,PyREBox是一種基於QEMU的通用工具框架。

PyREBox允許分析人員在虛擬環境中運行整個操作系統(模擬器),並在運行時檢查和修改其內存和寄存器。對QEMU進行略微修改後,PyREBox就允許用戶對某些惡意行為進行測試,例如指令執行或內存讀寫。

在此基礎上,PyREBox利用虛擬機內省技術來消除語義鴻溝,即理解操作系統的抽象概念,如進程、線程或庫。你可以在該篇博文中找到該框架及其功能的更詳細的原始描述。

在過去的幾個月里,Talos團隊的研究人員收到了來自各種技術社區對PyREBox的積極反饋,並修正了其中的漏洞。除此之外,研究人員還添加了用戶建議的一些比較好的分析功能。更重要的是,研究者們還增加了對GNU/Linux guest虛擬機的支持,並實現了一個代理程序(程序運行在模擬guest端),它允許主機和guest之間進行文件傳輸,並在guest端按需執行要分析的惡意樣本。

由於PyREBox工具非常地受歡迎,所以今天Talos團隊的研究人員又發布一組用於幫助惡意軟體分析的PyREBox腳本——惡意軟體監視器。這些腳本自動執行不同的任務,例如代碼覆蓋率分析、API跟蹤、內存監控和進程內存轉儲。

這個新的工具集還包括IDAPython腳本,IDAPython是IDA的一個功能強大的擴展特性,對外提供了大量的IDA API調用。另外,還能在使用python腳本語言的過程中獲得能力提升,這些腳本幫助分析人員將程序執行中提取的信息進行可視化分析。所有這些工具都可以通過JSON配置文件進行配置,並有助於自動執行樣品執行和分析。

這些腳本第一次發布,是在阿姆斯特丹舉行的「黑客大會」中,有關commsec-track的討論話題中出現的。

對代碼覆蓋率的分析

在逆向分析過程中,理解二進位代碼中執行的代碼路徑對分析人員非常有用。雖然靜態分析提供了一個相當完整的代碼視圖,但我們通常無法預先知道某段代碼是否會執行。

對代碼路徑的分析常常需要對複雜計算和異常路徑的條件作出提前預判,為了克服這個複雜的提前預判,逆向分析會將靜態分析與動態分析工具(如沙箱或調試器)混合使用。理解代碼路徑是否被執行,需要逆向分析師通過指令跟蹤樣本指令,或者設置斷點讓樣本運行,等以便在執行過程中的某個時間點發現其中一個斷點。

跟蹤樣本指令的方法可能是緩慢的,而設置斷點讓樣本運行的方法可能需要多次嘗試,有時甚至要讓樣本自由運行,即不觸及任何斷點,且讓系統完全受到感染。這就要求分析人員通常需要恢復乾淨的設備快照(machine snapshot)並重新啟動分析過程。

在這樣的情況下,掌握代碼覆蓋率的信息對於更好地理解哪些指令已經被執行,是非常有用的。此時,惡意軟體監視器中的代碼覆蓋率模塊會自動跟蹤模擬器轉換塊的執行情況。

為了簡單起見,我們可以將轉換塊定義為基本塊,儘管QEMU在將指令分為轉換塊和基本塊時有著不同的定義標準。

在任何情況下,代碼覆蓋率模塊都會生成兩個不同的輸出文件:一個二進位跟蹤文件和一個文本摘要。分析人員可以將二進位跟蹤導入到IDA中,以便對模擬器中已執行的代碼塊進行標記。這樣,用戶可以檢查執行過程中要採用哪些代碼路徑進行分析。

如此圖所示,就是一個IDA圖,在該圖中,被執行的代碼塊用橙色進行了標記,而非執行的基本塊仍然是白色的。

第二個文件則提供了對已執行內存區域的粗粒度總結,此外,當執行從一個虛擬地址描述符(VAD)區域跳轉到另一個虛擬地址描述符區域時,就會顯示執行轉換。VAD是Windows使用的內部結構,它以樹的形式記錄給定虛擬地址空間中保留的不同內存區域。

進程的主模塊,導入的DLL,堆棧,堆以及其他分配的內存區域都在此樹中表示為獨立的VAD區域。因此,該日誌允許用戶找到跟蹤中的點,這些跟蹤的點會執行跳轉到主模塊或DLL之外的內存緩衝區,這些行為通常都是在某些運行時進行加殼時所出現的特徵。

日誌還包括每次轉換後在每個VAD區域執行的第一條指令的地址,這有助於在某些情況下識別解壓縮二進位文件的原始入口點(OEP)。

此圖就是覆蓋文本日誌文件的一個片段,顯示了VAD區域之間的幾個轉換。

API跟蹤

惡意軟體監控的第二個組件可以幫助分析人員通過跟蹤函數調用普通的Windows DLL來理解樣本的行為。Windows API)。惡意監控程序的API跟蹤完全是在guest系統之外完成的,而大多數其他API跟蹤框架和沙箱還使用的是使用傳統的API掛鉤,這就需要修改進程內存並引入潛在的可檢測的構件。

API跟蹤器模塊只提供特定的指令(例如call /jmp),並檢測其中一個控制流指令何時跳轉到任何Windows API函數的第一個位元組。

API跟蹤器可以在兩種模式下運行——精簡模式和完整模式。如果啟用了精簡模式,它只會記錄API函數調用,但是它不會檢查函數調用的參數,而完整模式則會在每次發生API函數調用時檢查堆棧和寄存器。

完整模式會利用包含有關API參數數量、名稱和數據類型信息的資料庫。該模塊能夠刪除指針和嵌套結構。

完整模式下生產生成的分析信息可以寫在文本文件中,也可以保存在二進位文件中,然後在IDA中載入,以便將文本信息可視化。一旦這些信息被導入到IDA中,就有兩種方法來可視化它——一個是具有搜索功能的專用選項卡;一個是針對每個跟蹤呼叫顯示的上下文菜單。

此圖就是在IDA中顯示的一個專用選項卡,該選項卡允許檢查函數調用及其輸入和輸出參數,此圖就是API調用跟蹤的文本日誌片段。

內存監控

第三個新組件就是內存監視器,在執行樣本期間,該組件會跟蹤不同的內存相關事件,包括:

·進程的創建;

·遠程進程內存讀寫;

·內存共享(共享內存區域);

·文件讀寫;

·文件映射到內存中;

·內存分配;

·內存訪問許可權的更改;

分析人員可以根據監控的事件來了解樣本的內存相關行為,重點關注這些緩衝區的解壓縮、過程創建和過程注入。該模塊還可以監視文件刪除事件,也就是說,當分析中的樣本將二進位文件寫入到磁碟並執行它時。

與內存行為相關的信息最後會被壓縮成兩份報告,第一個報告包含所有與上述類別相關的事件,而第二個報告則只會對所收集到的信息進行簡單摘要,這些信息包括:

·開始和注入過程;

·由這些進程載入的模塊/ DLL;

·每個進程的VAD區域,包括heuristics(是指在入侵檢測中使用AI思想),那些包含潛在注入代碼、異常許可權以及訪問許可權的更改;

·內存映射(映射文件和內存共享);

·內存注入;

·文件操作;

摘要信息可以有助於分析人員對惡意軟體引導程序的快速理解,許多惡意軟體家族都包含必須部署在系統內存中的組件。作為部署組件的一部分,惡意軟體經常將有效載荷注入一個或多個系統進程中,並創建其他進程或將部署組刪除。

而PyREBox的內存監視器組件能夠在部署階段向分析人員提供包含該樣本的內存相關行為的原始信息。

內存自動轉儲

惡意軟體監視器的最後一個組件是一個可配置的內存轉儲程序,可以轉儲進程內存,包括主模塊、載入的DLL以及其他內存區域(如堆、棧和分配的緩衝區)。轉儲內存的時間則必須分析人員進行選擇,並在主JSON配置文件中配置。可配置的選項包括:

·在進程退出時轉儲內存;

·在調用某個API函數時轉儲內存;

·在執行某個地址時轉儲內存;

為了在樣本完全解壓縮的情況下轉儲內存,分析人員需要了解樣本操作的方式。但是,其他的惡意軟體監控模塊應該能夠幫助用戶識別出要轉儲進程內存的位置。

一旦內存轉儲和有關進程的內存區域的相關信息被創建,我們就可以在IDA中手動載入經過轉儲的片段,並對正在進行的進程進行靜態分析。

總結

這些新發布的惡意軟體監控組件對於收集樣本執行信息,以及增加從傳統的沙箱和調試器中提取數據非常有用。

總之,PyREBox是一種功能強大、且非常容易上手的工具,每個分析人員都可以根據自己的分析環境創建適合自己的分析腳本。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

AMD對上周的安全漏洞做出了回應並採取修復措施
醫療影像領域安全狀況令人擔憂

TAG:嘶吼RoarTalk |