三、基于社會(huì)工程學(xué)的技巧
1.檢測(cè)電腦中常用軟件的使用情況
名為 Intelligent Software Solutions Inc.doc 的惡意軟件樣本文件使用了下面的反虛擬機(jī)技巧,SHA256值為048fc07fb94a74990d2d2b8e92c099f3f986af185c32d74c857b07f7fcce7f8e。
RecentFiles對(duì)象表示系統(tǒng)最近打開(kāi)過(guò)的歷史文檔。
通常,安裝了word程序的用戶(hù)可能會(huì)打開(kāi)超過(guò)2個(gè)或更多數(shù)量的文檔。然而,當(dāng)該惡意軟件植入到新創(chuàng)建的虛擬機(jī)和word環(huán)境中后,總是狀況不斷,不能正常運(yùn)行。每次測(cè)試時(shí)手動(dòng)打開(kāi)一兩次,總是出現(xiàn)程序異常。即使是保存了虛擬機(jī)鏡像狀態(tài),重啟調(diào)試分析后,惡意程序仍然不能正常執(zhí)行。
從DKTxHE函數(shù)功能可以看出,惡意軟件以RecentFiles數(shù)量來(lái)判斷是否身處VM環(huán)境中,如果在VM環(huán)境中,它將不會(huì)執(zhí)行任何惡意行為。之后,隨意創(chuàng)建了3個(gè)不同名稱(chēng)的word文檔,逐一打開(kāi)并關(guān)閉,讓歷史文檔數(shù)量為3,最終成功運(yùn)行并檢測(cè)到了惡意軟件。
2. 探測(cè)殺毒軟件公司相關(guān)的IP地址
同樣是上面的惡意軟件,它在另一個(gè)子程序中使用了下面的反虛擬機(jī)技巧。
首先,它通過(guò)向遠(yuǎn)程地址 https://www.maxmind.com/geoip/v2.1/city/me 發(fā)出某種認(rèn)證請(qǐng)求,之后設(shè)置請(qǐng)求信息中的HTTP Refer屬性和User-Agent值,訪問(wèn)鏈接 https://www.maxmind.com/en/locate-my-ip-address 以此獲取宿主系統(tǒng)的地址信息。
獲取信息封裝于JSON格式文件中,包含國(guó)家、城市、或者與IP相關(guān)的組織機(jī)構(gòu)等信息。IP信息的organization字段顯示為美國(guó)Comcast寬帶網(wǎng)絡(luò)供應(yīng)商。
惡意軟件發(fā)出訪問(wèn)請(qǐng)求后,獲取到宿主系統(tǒng)的相關(guān)信息將存儲(chǔ)于某個(gè)數(shù)組中。如果獲取到的組織機(jī)構(gòu)名稱(chēng)與JSON文件中的任何機(jī)構(gòu)字符串匹配,惡意軟件將發(fā)生異常并停止運(yùn)行。當(dāng)然,列表中的機(jī)構(gòu)名稱(chēng)在代碼中是經(jīng)過(guò)混淆的。
四、虛擬機(jī)逃逸
VMware等軟件中或多或少都存在一些安全漏洞,可以利用這些漏洞使宿主操作系統(tǒng)崩潰或者是在宿主操作系統(tǒng)中運(yùn)行代碼。當(dāng)主機(jī)系統(tǒng)被感染后,一些公開(kāi)可用的工具可以用來(lái)對(duì)VMware等軟件進(jìn)行攻擊。
五、總結(jié)
當(dāng)遇到的惡意代碼似乎不能運(yùn)行時(shí),在使用調(diào)試或反匯編惡意代碼搜索其反虛擬機(jī)探測(cè)代碼之前,應(yīng)該考慮使用一個(gè)卸載了VMware Tools的虛擬機(jī)。VMware中有一些未文檔化的功能可以幫助減輕反虛擬機(jī)技術(shù)的探測(cè)。將下面的代碼放到VMware的.vmx文件中,以減輕虛擬機(jī)被探測(cè)的可能。
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"
參數(shù)directexec可以使用戶(hù)模式下的代碼被模擬執(zhí)行而不是直接在硬件上運(yùn)行,因此它可以挫敗一些反虛擬機(jī)技術(shù)。
前四條設(shè)置被VMware后門(mén)命令使用,它們的作用是使得運(yùn)行在Guest系統(tǒng)中的VMware Tools不能獲取宿主系統(tǒng)的信息。這些設(shè)置會(huì)禁用VMware Tools的一些有用功能,并可能對(duì)虛擬機(jī)性能有嚴(yán)重負(fù)面影響。所以,僅當(dāng)其他技術(shù)無(wú)效時(shí)再添加這些選項(xiàng)。當(dāng)然,也可以將惡意代碼在其他虛擬環(huán)境或者物理主機(jī)上運(yùn)行。
同反調(diào)試技術(shù)一樣,要想發(fā)現(xiàn)惡意代碼中的反虛擬機(jī)技術(shù)需要在長(zhǎng)期調(diào)試過(guò)程中積累更多經(jīng)驗(yàn)。例如,看到一個(gè)代碼在一個(gè)條件跳轉(zhuǎn)處過(guò)早終止,這可能就是反虛擬機(jī)技術(shù)造成的結(jié)果。一如既往地警惕這種類(lèi)型的問(wèn)題,然后查看其之前的代碼,來(lái)確定它到底執(zhí)行了什么操作。
和反調(diào)試技術(shù)一樣,通過(guò)修改條件跳轉(zhuǎn)指令或者使用NOP指令覆蓋來(lái)繞過(guò)相關(guān)探測(cè)。
最后讓我們總結(jié)一下提到的內(nèi)容:
騰訊2016游戲安全技術(shù)競(jìng)賽有一道題,大概意思就是給一個(gè)exe,要求編寫(xiě)一個(gè)Tencent2016C.dll,并導(dǎo)出多個(gè)接口函數(shù) CheckVirtualPCX、CheckVMWareX、CheckVirtualBoxX。X為1-100之間的數(shù)字。函數(shù)功能是檢測(cè)自己是否處于相應(yīng)的虛擬機(jī)中,是返回TRUE,否則返回FALSE。函數(shù)的原型都是 typedef BOOL (WINAPI* Type_CheckXXXXXX)();。
編譯好dll之后,放在Tencent2016C.exe的同目錄,運(yùn)行Tencent2016C.exe,點(diǎn)擊檢測(cè)按鈕,在物理機(jī)中運(yùn)行時(shí)函數(shù)接口輸出為0,在VMware虛擬機(jī)、VirtualBox虛擬機(jī)和VirtualPC虛擬機(jī)中運(yùn)行時(shí),相關(guān)的接口輸出1。我們把提到的知識(shí)綜合一下完成這道題目。
解題的參考代碼和題目相關(guān)信息:https://github.com/houjingyi233/test-virtual-machine/
1.《惡意代碼分析實(shí)戰(zhàn)》第17章反虛擬機(jī)技術(shù)(本文的主體框架)
2.這個(gè)惡意軟件“奇葩”的反虛擬機(jī)技巧
3.天樞戰(zhàn)隊(duì)官方博客(本文大部分代碼的來(lái)源)
4.虛擬機(jī)檢測(cè)技術(shù)剖析
-
Mac
+關(guān)注
關(guān)注
0文章
1106瀏覽量
51490 -
惡意代碼
+關(guān)注
關(guān)注
0文章
12瀏覽量
7636 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
917瀏覽量
28217
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論