基於unicorn-engine的虛擬機的實現(WxSpectre)
* 本文作者:比爾.蓋茨(twitter@ma1fan),本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
反病毒虛擬機是一個很有優勢的工具,可以說反病毒軟體是否存在模擬器是衡量反病毒軟體能力的一個指標。反病毒虛擬機不光是內嵌在反病毒軟體內部,來動態執行樣本。這種虛擬機一般也可以單獨用來動態執行批量樣本,檢測樣本惡意行為,因為它相對virualbox+cuckoo更加的輕巧,節省資源。所以還是有很高的價值的。正因為其高效性與複雜性,現在公開這方面的資料很少。
一、虛擬機vs模擬器
對於惡意樣本分析領域,沙箱,虛擬機,模擬器,一個原則就是執行指令不會影響host環境.
virtualbox除過特權指令和部分ring0中運行的指令,是直接在宿主機上運行的。所以運行速度與宿主機沒有很大差異。Bochs是純粹的軟體模擬器,另外加上對硬體的模擬,所以其指令執行速度是非常慢的。Unicorn-engine基於動態翻譯技術,速度相對於純粹的指令模擬快的多.
所以如果關心系統模擬度當然選擇virtualbox,bochs,但是virtualbox會耗費更多的系統資源。
Unicorn-engine可以虛擬執行x86,x64,arm等指令集。因為其基於動態翻譯和部分模擬來執行目標指令,效率比bochs快的多。
很顯然,unicorn-engine只是一個」CPU」,所以要想運行樣本還缺的是一個windows的運行應用程序的環境。
WxSpectre就是這樣基於unicorn-engine的windows模擬環境來實現的虛擬機。
二、關於WxSpectre
Windows是一個多進程環境,這是現代操作系統的普遍的標配。但是在運行惡意樣本的時候,我們只關心的惡意樣本做了什麼,而且為了避免產生干擾一次只能運行一個樣本,這就造成了很大的浪費,其實只要滿足樣本運行所需要的環境就可以,但是我們卻提供了一個完整的windows環境,顯然殺雞用了宰牛刀。如果我們只提供運行目標樣本所需的基本環境,顯然這將節省很多的資源。WxSpectre基本上實現了這一目標。
WxSpectre
由兩大部分組成:Unicorn-engine+模擬WINDOWS系統環境.WxSpectre實現了大部分的windows執行應用程序的環境,包括文件系統,對象管理,註冊表,線程調度,內存管理,異常/中斷處理,Windows API(ring3).pe 執行環境初始化模塊。
WxSpectre可以跨平台在windows,linux,Mac os,下運行,可以虛擬執行EXE/VBS腳本。
目前實現的功能是:1.api trace.2.運行時內存dump.3.指令trace,4,虛擬調試5.內存字元串提取等。
WxSpectre的框架結構:
1.內存管理:
包括內存的申請釋放,堆內存管理。
2.線程調度:
線程切換,線程調度。
3.異常處理:
將cpu的異常傳送到hyperviror,然後經過過濾處理,然後分發給相應的處理函數。
4.對象管理:
主要是指對象初始化,對象同步,對象釋放,對象的訪問。
5.WxVFS:
指的是虛擬文件系統,有點類似於linux的VFS系統,但是所不同的是這裡不是為了實現一個統一的文件系統界面,這裡主要是虛擬出文件系統的結構。從而使WxSpectre中所有樣本訪問文件系統的操作得以執行。比如讀寫文件,創建,刪除,文件,目錄等。
6.Wxhelper:
所用的api調用將會重定位到這個模塊中,然後執行。
7.腳本引擎(WxNscript):
這裡的腳本引擎主要用來執行vbs,js腳本.因為現在越來越多的病毒會利用腳本文件了來作為傳播載體.
8.兼容層:
在WxSpectre執行應用程序的時候,有的時候需要打補丁,patch某些指令序列從而讓樣本能順利執行下去(因為存在某些反虛擬機,反模擬器樣本或者其他的異常行為導致執行出現錯誤,或者奔潰)。
9.虛擬註冊表(WxRegistry)
Windows程序執行需要依賴註冊表。WxRegistry是對註冊表的虛擬。
10.網路訪問模塊(WxNetwork)
WxNetwork會虛擬出一個sever模塊,當有樣本請求數據,wxnetwork會與其回話。
WxSpectre的功能:
1. API trace
Api trace是勾勒樣本動態行為的一個很重要的方面。這裡只記錄樣本直接調用的api日誌。不會記錄嵌套在api內部的api調用,這樣分析者更加能抓住重點。Cuckoo不好的一點api的記錄沒有做過濾。
2. 虛擬文件系統(WxVFS)
因為完成了文件系統所以WxSpectre如果捕獲到有文件的創建,寫入都會被監控。且可以dump創建出的文件。
3.虛擬調試(virtual debugger)
這個功能是非常有用的。因為通常情況下調試病毒必須在虛擬機裡面調試。分析者通常需要反覆的還原虛擬機,將樣本用調試器載入起來,這樣會耗費很多的時間。WxSpectre的虛擬調試,完全不依賴虛擬機,啟動非常的快。對調試病毒非常的方便。
4. 虛擬註冊表&文件監控
監控註冊表的訪問,讀,寫,設置,文件及文件夾的創建,讀,寫,刪除等。
5. 進程創建監控
6. 內存dump&及內存字元串dump
三、demo情況
Api trace:
病毒名:DDoS:Win32/Nitol.A
Md5: 4666a8eef0e51323f85f569e083f5bc4、
VT: https://virustotal.com/en/file/c454119514c44e64df45d83160ca7b8a06c87a2b167b16700baa4e0cacafe95a/analysis/
Drop樣本釋放的文件:
病毒名:wanncry2.0
Md5: 84c82835a5d21bbcf75a61706d8ab549
VT: https://virustotal.com/en/file/ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa/analysis/
WxVFS監控到的病毒創建出來的文件
對應的文件內容
更多關於脫殼能力,註冊表監控,進程創建監控,虛擬調試,內存字元串dump,執行速度,這裡完整的演示視頻。
四、待完成部分
目前腳本執行模塊還在完善,調試功能還沒有完成。網路模塊還沒有完成,脫殼能力還需要改善。等到機會合適我將放出這個工具。
* 本文作者:比爾.蓋茨(twitter@ma1fan),本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
※你可以用U盤黑掉一輛馬自達
※企業安全建設之路:埠掃描(下)
※VM真的比Container更安全嗎?
※CAN匯流排簡介:如何以編程方式控制汽車
※漏洞預警 | Windows修復兩個嚴重遠程代碼執行漏洞(CVE-2017-8543/8464)
TAG:FreeBuf |
※Moto Hagio的新Poe Clan Unicorn Manga
※使用Centos7.5+Nginx+Gunicorn+Django+Python3部署blog項目
※The Golden of Unicorn 黃金麒麟
※捨不得下地系列!adidas Pro Bounce 「Unicorn」 PE 明日登場!
※Unicorn正式上線區塊鏈瀏覽器UIC-Explorer
※UnicornGo推全新AR區塊鏈遊戲,Butterfly公布世界首款AR遠程醫療技術
※2017 「獨角獸」UNICORN Centre for Art
※DeepMind新智能體架構Unicorn:持續學習能力勝過多個基準智能體
※AR+區塊鏈遊戲《UnicornGo》開始提供第一代獨角獸
※恭喜1124、YTG、CBT 、 Unicorn、DLG 、RNG成功晉級PCL夏季賽
※全新區塊鏈商業生態,Unicorn會是一個谷歌嗎?
※萬鏈之家-全球首款Unicorn智能設備——長虹R8麒麟手機問世
※小鬼新歌《Unicorn》上線,他的童心藏不住了
※《Unicorn》唯願遠離喧囂繁雜,重獲寧靜…
※AR手機遊戲UnicornGo具備科技金融等元素 開始提供第一代限量寵物領養
※長虹R8麒麟開箱測評:「首款Unicorn區塊鏈手機」到底是噱頭還是真有料?
※鏈動未來!浙江省之江區塊鏈科技研究院今日揭牌,全球首款Unicorn智能設備成功發布!