雷 春 李 娜
(四川大學(xué)計(jì)算機(jī)學(xué)院 成都 610065)
(lcamry@163.com)
2016年至今,勒索軟件家族及其數(shù)量劇增,同時(shí)據(jù)Carbon Black發(fā)布的2017年勒索軟件經(jīng)濟(jì)報(bào)告顯示其造成的經(jīng)濟(jì)損失高達(dá)百億美元[1-2].同時(shí)RaaS(勒索軟件即服務(wù))的興起,在巨大利益沖擊下加劇了勒索軟件的迅猛增長(zhǎng).根據(jù)Nomoreransom國(guó)際反勒索軟件組織定義,勒索軟件是一種能將您的電腦和移動(dòng)設(shè)備上鎖或能加密您的電子文件的惡意軟件[3].
在惡意代碼動(dòng)態(tài)分析技術(shù)中,針對(duì)自動(dòng)化檢測(cè)勒索軟件方面[4-5],現(xiàn)在較為常用的方法有以下3種:
1)利用文件指紋技術(shù).在特定目錄下生成勒索軟件關(guān)注類型的文件,將其設(shè)置為陷阱文件,記錄初始狀態(tài)散列值.在樣本執(zhí)行過(guò)程中,檢測(cè)陷阱文件散列值是否發(fā)生改變.當(dāng)發(fā)生改變時(shí)確定執(zhí)行樣本為勒索軟件[6].
2)利用API HOOK技術(shù).設(shè)置陷阱文件,并對(duì)陷阱文件操作行為進(jìn)行監(jiān)控.在特定目錄下生成陷阱文件,通過(guò)對(duì)ReadDirectoryChangeW應(yīng)用層API進(jìn)行文件系統(tǒng)監(jiān)控,當(dāng)陷阱文件修改或刪除或其他修改狀態(tài)等操作時(shí),確定為勒索軟件行為[7].
3)動(dòng)態(tài)檢測(cè)過(guò)程中對(duì)進(jìn)程行為進(jìn)行監(jiān)控.根據(jù)美國(guó)ESET安全公司Michael van der Vaart發(fā)布的《ESET Anti-Ransomware》[8],對(duì) wscript.exe,cscript.exe等進(jìn)行監(jiān)控,當(dāng)創(chuàng)建該進(jìn)程后對(duì)其行為進(jìn)行控制,從而判斷是否為勒索軟件.
以上文件指紋技術(shù)和API HOOK技術(shù)在當(dāng)前實(shí)際應(yīng)用場(chǎng)景中較為常見(jiàn),這2種方法都比較直觀地體現(xiàn)陷阱文件是否在樣本運(yùn)行過(guò)程中被改變[6].同時(shí)方法易懂,且易操作,應(yīng)用程度較廣.但是以上2種方法過(guò)于粗粒度,通過(guò)一個(gè)陷阱文件的狀態(tài)變化或操作行為,不能武斷地作為勒索軟件的一般化行為特征值.其他類型的惡意代碼(TrojanDownloader:Win32/Vibrio.A等)同樣對(duì)陷阱文件進(jìn)行操作,從而對(duì)檢測(cè)結(jié)果造成很大的誤報(bào)率.同時(shí)因API HOOK繞過(guò)技術(shù)也會(huì)造成一定的漏報(bào)率.而ESET提到的方法主要是針對(duì)JS型惡意代碼,盡管其對(duì)于JS型勒索軟件等有一定的檢測(cè)和防御效果,但是對(duì)于其他類型的惡意樣本無(wú)法作出判斷.為有效檢測(cè)文件加密型勒索軟件,本文提出了基于文件損壞度的勒索軟件檢測(cè)方法.
本文主要針對(duì)文件加密型勒索軟件,在Brewer的“ransomware attacks:detection,prevention and cure”[9]中提到的文件加密型勒索軟件大致分為漏洞攻擊→勒索軟件執(zhí)行→清除備份→文件加密→通知勒索信息.在勒索軟件執(zhí)行過(guò)程中,對(duì)文件進(jìn)行加密是勒索軟件的核心過(guò)程.根據(jù)Scaife等人的“Stopping ransomware attacks on user data”[9]中提到勒索軟件主要關(guān)注文件對(duì)象為用戶存儲(chǔ)信息類,其類型一般為PDF,DOCX,XLS,JPG等.
通過(guò)對(duì)大量文件加密型勒索軟件樣本進(jìn)行理論和實(shí)驗(yàn)分析,勒索軟件在對(duì)文件加密過(guò)程中會(huì)對(duì)文件內(nèi)容、文件頭有較大程度的修改,同時(shí)文件名在部分勒索軟件中也會(huì)有較大程度的修改[10].本文利用3個(gè)指標(biāo)分別對(duì)文件內(nèi)容、文件頭、文件名是否發(fā)生修改進(jìn)行細(xì)粒度化檢測(cè),通過(guò)3個(gè)指標(biāo)定量計(jì)算該文件損壞度,從而準(zhǔn)確判斷樣本執(zhí)行過(guò)程中對(duì)文件修改程度.
特征1.完整性校驗(yàn).通過(guò)對(duì)文件進(jìn)行完整性校驗(yàn)來(lái)檢測(cè)樣本為勒索軟件的可能性,當(dāng)前在陷阱文件中常被采用.當(dāng)文件內(nèi)容發(fā)生改變時(shí)其完整性遭到破壞.而文件加密型勒索軟件正是讀取文件并通過(guò)加密算法對(duì)其進(jìn)行加密,加密過(guò)程中對(duì)文件的修改正是破壞了文件的完整性.本文采用HASH方法對(duì)文件進(jìn)行MD5計(jì)算,計(jì)算其初始散列值.在樣本執(zhí)行后,再次對(duì)文件進(jìn)行散列值計(jì)算,并與初始散列值進(jìn)行比較.結(jié)果相同時(shí)說(shuō)明樣本肯定不是文件加密型勒索軟件.當(dāng)結(jié)果不同時(shí)可能為勒索軟件.
特征2.文件類型改變.文件加密型勒索軟件根據(jù)讀寫操作順序分為3類:第1類為讀取文件,加密數(shù)據(jù)直接覆蓋在原文件位置上,一般在該過(guò)程中會(huì)對(duì)文件進(jìn)行重命名;第2類則將文件移動(dòng)到臨時(shí)目錄后讀取臨時(shí)文件并加密,將加密后的文件寫回到原始路徑下,同樣地在這個(gè)過(guò)程中一般會(huì)進(jìn)行重命名操作;第3類讀取原文件,將加密后的文件寫入到一個(gè)新的文件,刪除原文件.以上3類勒索軟件對(duì)文件名和類型一般有修改.
在對(duì)文件名或者文件類型進(jìn)行修改時(shí),勒索軟件一般存在2種形式:第1種形式采用原文件的名字作為文件名,將后綴修改為自定義的格式;第2種形式則與原文件的文件名沒(méi)有任何關(guān)系,直接命名為自定義的文件名.對(duì)文件名和文件類型進(jìn)行檢測(cè),如果文件名發(fā)生了以上2種形式的改變,說(shuō)明較大概率地發(fā)生了文件勒索行為.
特征3.相似度檢測(cè).利用文件相似度檢測(cè)勒索軟件,該方法在Nolen Scaife的CrytoLock[11]中作為一個(gè)指標(biāo).本文將文件相似度計(jì)算對(duì)象分為2個(gè)部分:文件內(nèi)容相似度和文件頭相似度.
文件內(nèi)容相似度:勒索軟件一般采用AES,DES等強(qiáng)加密手段對(duì)文件進(jìn)行加密,文件在加密前后會(huì)發(fā)生較大的變化,其相似度將變得較低.采用模糊哈希方法,對(duì)樣本執(zhí)行前后的散列值進(jìn)行比較,可得到2個(gè)文件的相似度.如果是文件加密型勒索軟件,樣本執(zhí)行前后文件的相似度值較低.
文件頭相似度:在PDF,DOCX,XLS,JPG等文件中,文件頭一般表示該類型文件結(jié)構(gòu)的數(shù)據(jù),內(nèi)容較為固定.當(dāng)文件正常修改時(shí),文件頭只有固定的部分字節(jié)修改,例如表示長(zhǎng)度的字節(jié)等.而文件加密型勒索軟件在加密過(guò)程中會(huì)以二進(jìn)制方式讀取文件,并利用強(qiáng)加密算法對(duì)數(shù)據(jù)進(jìn)行加密,文件頭會(huì)有較大程度的修改.
在動(dòng)態(tài)檢測(cè)中,我們的檢測(cè)模型為:惡意樣本上傳到沙箱平臺(tái)后,經(jīng)沙箱平臺(tái)進(jìn)行檢測(cè),然后將樣本下發(fā)到虛擬機(jī)中進(jìn)行動(dòng)態(tài)檢測(cè).虛擬機(jī)將動(dòng)態(tài)執(zhí)行的結(jié)果回傳到沙箱平臺(tái),沙箱平臺(tái)進(jìn)行數(shù)據(jù)處理后得出結(jié)論.為增強(qiáng)該模式對(duì)勒索軟件的識(shí)別,在樣本執(zhí)行過(guò)程中,從虛擬機(jī)中選取勒索軟件關(guān)注的格式類型文件,稱之為標(biāo)記文件,記為sign,對(duì)標(biāo)記文件進(jìn)行多維度變化信息采集,根據(jù)算法計(jì)算該標(biāo)記文件損壞度,記為dmge(sign).根據(jù)多個(gè)標(biāo)記文件損壞度計(jì)算當(dāng)前系統(tǒng)損壞度,記為FILEdmge.最后根據(jù)系統(tǒng)損壞度判斷該樣本是否為勒索軟件.
該方法主要分為2部分,第1部分是在虛擬機(jī)中選定多個(gè)標(biāo)記文件,并提取樣本執(zhí)行前后每個(gè)標(biāo)記文件變化特征.第2部分根據(jù)每個(gè)標(biāo)記文件變化特征計(jì)算文件損壞度,構(gòu)建標(biāo)記文件結(jié)果集,計(jì)算當(dāng)前系統(tǒng)損壞度,根據(jù)閾值判斷是否為勒索軟件.
標(biāo)記文件特征提取分別在樣本執(zhí)行前后執(zhí)行,下面介紹標(biāo)記文件變化特征提取過(guò)程.表1為本文中所有的變量.
表1 本文變量解釋
獲取用戶自定義的標(biāo)記文件個(gè)數(shù)N,隨機(jī)N次選取目錄,并在該目錄下獲取或生成標(biāo)記文件sign,提取每一個(gè)標(biāo)記文件特征,包括FM(sign),FS(sign),FW(sign).再將提取的特征回傳至沙箱平臺(tái).具體方法如算法1所示.
算法1.樣本執(zhí)行前標(biāo)記文件特征提取方法.
樣本執(zhí)行時(shí)間,即沙箱平臺(tái)下虛擬機(jī)執(zhí)行時(shí)間,該參數(shù)在沙箱平臺(tái)中由用戶進(jìn)行定義.讀取該時(shí)間t,在虛擬機(jī)開(kāi)機(jī)后的(t-5)s時(shí)再次啟動(dòng)標(biāo)記文件特征提取程序.樣本執(zhí)行后獲取執(zhí)行前的標(biāo)記文件集Set(sign),并對(duì)文件集中的每個(gè)標(biāo)記文件再次進(jìn)行特征提取.最后將提取特征回傳至沙箱平臺(tái).具體方法如算法2所示.
算法2.樣本執(zhí)行后標(biāo)記文件特征提取方法.
經(jīng)過(guò)樣本執(zhí)行前后標(biāo)記文件特征提取,得到樣本對(duì)應(yīng)數(shù)據(jù).通過(guò)樣本執(zhí)行前后數(shù)據(jù)FM(sign),FS(sign),FW(sign)比對(duì),得出文件內(nèi)容是否發(fā)生損壞以及損壞度,根據(jù)FC(sign)得出文件類型是否損壞以及損壞度.結(jié)合文件類型和文件內(nèi)容的損壞度計(jì)算單個(gè)標(biāo)記文件損壞度.
1)計(jì)算文件內(nèi)容損壞度,記為Self(sign).以下為文件內(nèi)容損壞度計(jì)算方法:
采用Smith-Waterman算法,對(duì)樣本執(zhí)行前后的標(biāo)記文件頭的FW(sign)進(jìn)行相似度計(jì)算,結(jié)果記為Wi,且Wi∈[0,1];
采用SSDEEP算法,對(duì)樣本執(zhí)行前后的標(biāo)記文件的FS(sign)進(jìn)行相似度計(jì)算,記為Si,且Si∈[0,1];這里對(duì)結(jié)果進(jìn)行調(diào)整,當(dāng)結(jié)果因相似度過(guò)低,無(wú)法計(jì)算結(jié)果時(shí),為適應(yīng)該方法,將其結(jié)果記為0;
對(duì)樣本執(zhí)行前后標(biāo)記文件的FM(sign)進(jìn)行結(jié)果比較,結(jié)果記為Mi,當(dāng)二者比對(duì)結(jié)果相等時(shí),結(jié)果為1,反之結(jié)果為0,則Mi∈{0,1};
文件內(nèi)容損壞度結(jié)合Mi,Wi,Si進(jìn)行計(jì)算,則Self(i)計(jì)算方法為
其中a為M i和Si的權(quán)重值.為準(zhǔn)確衡量文件內(nèi)容損壞度,本文在不同情況下,a的取值有所不同.
2)結(jié)合FC(sign)和Self(sign),計(jì)算標(biāo)記文件sign損壞度,將其記為dmge(sign).以下為dmge(sign)的計(jì)算方法:
根據(jù)標(biāo)記文件集Set(sign)的文件損壞度dmge(sign),計(jì)算系統(tǒng)損壞度,記作FILEdmge.
標(biāo)記文件集合Set(sign)中標(biāo)記文件個(gè)數(shù)為N,系統(tǒng)損壞度計(jì)算方法如下:
對(duì)標(biāo)記文件Set(sign)集合取加權(quán)平均,計(jì)算當(dāng)前系統(tǒng)的損壞程度.當(dāng)N足夠大時(shí),即N為系統(tǒng)中所有文件個(gè)數(shù)時(shí),系統(tǒng)損壞程度將覆蓋整個(gè)文件系統(tǒng),根據(jù)上述方法能夠準(zhǔn)確地定量系統(tǒng)損壞度.當(dāng)N小于系統(tǒng)中所有文件個(gè)數(shù)時(shí),一般采取抽樣調(diào)查,采用隨機(jī)方法保證結(jié)果的相對(duì)準(zhǔn)確性.
本文利用文件加密型勒索樣本對(duì)上述方法進(jìn)行了驗(yàn)證.對(duì)大量勒索樣本、正常樣本進(jìn)行動(dòng)態(tài)執(zhí)行,計(jì)算其文件損壞度和系統(tǒng)損壞度.從系統(tǒng)損壞度實(shí)驗(yàn)中確定損壞度閾值,從而檢測(cè)加密型勒索軟件.
本文選取木馬動(dòng)態(tài)檢測(cè)引擎cuckoo sandbox作為檢測(cè)平臺(tái),宿主平臺(tái)為ubuntu14.04,同時(shí)虛擬機(jī)選取1 GB RAM的Win7 sp1(32 b).為能讓樣本充分執(zhí)行,這里關(guān)閉虛擬機(jī)中防火墻和其他反病毒軟件,同時(shí)將樣本執(zhí)行時(shí)間調(diào)整為20 min,標(biāo)記文件文件N為10個(gè).
從 malware-traffic-analysis①http://www.malware-traffic-analysis.net,virusshare②https://www.virusshare.com,hybrid-analysis③https://www.hybrid-analysis.com,virustotal④https://www.virustotal.com平臺(tái)上下載相關(guān)樣本,得到176個(gè)適用于該實(shí)驗(yàn)的勒索軟件樣本,同時(shí)準(zhǔn)備84個(gè)其他類型的惡意樣本(botnet,spy等類型).通過(guò)手工檢測(cè),確定樣本能夠在實(shí)驗(yàn)環(huán)境中順利執(zhí)行.而這些樣本主要包含WANNACRY,PETYA,CryptoWall等類型的樣本.
在文件內(nèi)容損壞度Self(i)計(jì)算方法中,本文采用了參數(shù)a對(duì)M i和Si進(jìn)行權(quán)重衡量.根據(jù)大量正常樣本和勒索樣本進(jìn)行實(shí)驗(yàn),對(duì)Self(i)中的a取值情況進(jìn)行實(shí)驗(yàn).在Wi≥Si的情況下,a=0.7.在Wi<Si的情況下,a=0.3.在Mi=0,Si=0的情況下,a=0.5.
選取代表性樣本W(wǎng)ANNACRY,PETYA等,計(jì)算系統(tǒng)損壞度,結(jié)果如圖1所示:
圖1 部分樣本系統(tǒng)損壞度
通過(guò)對(duì)以上數(shù)據(jù)分析可知,代表性樣本文件系統(tǒng)損壞度基本集中在0.5~1區(qū)間內(nèi).以0.70作為閾值對(duì)176個(gè)樣本進(jìn)行系統(tǒng)損壞度檢測(cè),檢測(cè)率為88.64%;當(dāng)閾值為0.6時(shí),176個(gè)勒索樣本被檢測(cè)率為91.48%;當(dāng)閾值為0.5時(shí),176個(gè)勒索樣本被檢測(cè)率為99.43%.
而對(duì)于其他文件修改類型惡意代碼,botnet,spy類型惡意代碼系統(tǒng)損壞度基本接近0.而其中PDF,DOC等payload注入型的惡意代碼,經(jīng)實(shí)驗(yàn)得出系統(tǒng)損壞度小于0.5(內(nèi)容修改量不同,損壞度也不同,但均小于0.5).因此將閾值設(shè)置為0.5時(shí),實(shí)驗(yàn)樣本誤報(bào)率為0.
從實(shí)驗(yàn)數(shù)據(jù)分析得知,閾值相對(duì)較小時(shí)檢測(cè)率會(huì)隨之提升,但誤報(bào)率則呈相反的走勢(shì).而為了準(zhǔn)確檢測(cè)勒索軟件,本文將系統(tǒng)損壞度閾值設(shè)定為0.5,能有效地區(qū)分文件勒索型勒索軟件與其他文件修改類型的惡意代碼.當(dāng)文件損壞度大于0.5時(shí),系統(tǒng)判斷該樣本為加密型勒索軟件.
在本文的實(shí)驗(yàn)環(huán)境中,因選取的標(biāo)記文件類型為多種,而每個(gè)勒索軟件樣本針對(duì)的文件類型不同;同時(shí)勒索軟件采用的加密算法、加密密鑰等的不同,導(dǎo)致每個(gè)樣本造成的系統(tǒng)損壞度不同.最后的主觀原因是為躲避勒索軟件的繞過(guò),我們采取隨機(jī)的方法、對(duì)文件名、文件內(nèi)容、文件類型隨機(jī)寫入,因此不同的樣本對(duì)于標(biāo)記文件損壞程度不同.同樣地每個(gè)樣本每次運(yùn)行的結(jié)果也不相同,但是通過(guò)大量實(shí)驗(yàn)可知,盡管每次實(shí)驗(yàn)結(jié)果會(huì)有所差異,但是基本都在允許范圍內(nèi),能夠做到勒索軟件的準(zhǔn)確檢測(cè).
本文設(shè)計(jì)的方法對(duì)于BLUFISH等VBA宏勒索型惡意代碼不能做到精確檢測(cè),因其加密方法與上述樣本加密手段不同,采用VBA宏對(duì)特定文件類型進(jìn)行加密勒索.而本文選定的標(biāo)記文件類型為多種,盡管該類型文件的文件損壞度能做到檢測(cè),但其他類型并未發(fā)生加密,系統(tǒng)損壞度相對(duì)較低,本文提出的方法未能有效地檢測(cè)該類型勒索軟件.
本文提出了一種基于文件損壞度的文件加密型勒索軟件檢測(cè)方法,并將該方法在動(dòng)態(tài)檢測(cè)引擎CUCKOO SANDBOX中進(jìn)行實(shí)際檢測(cè).通過(guò)實(shí)驗(yàn)證明該方法能夠有效檢測(cè)出文件加密型勒索軟件,但對(duì)于BLUFISH等單類型文件加密勒索型還未能做到準(zhǔn)確檢測(cè).
[1]趨勢(shì)科技.勒索軟件的過(guò)去、現(xiàn)在和未來(lái)[OL].[2018-02-15].https://www.cisco.com/c/dam/assets/global/CN/products/security/pdf/talos/ransomware.pdf.
[2]Black C.The Ransomware Economy[OL].[2018-02-15].https://www.carbonblack.com/wp-content/uploads/2017/10/Carbon-Black-Ransomware-Economy-Report-101117.pdf
[3]Luo X,Liao Q.Awareness education as the key to ransomware prevention[J].Information Systems Security,2007,16(4):195-202
[4]Andronio N,Zanero S,Maggi F.HelDroid:Dissecting and detecting mobile ransomware[C]//Proc of Int Workshop on Recent Advances in Intrusion Detection.Berlin:Springer,2015:382-404
[5]Yang T,Yang Y,Qian K,et al.Automated detection and analysis for Android ransomware[C]//Proc of IEEE Int Conf on High Performace Computing and Communications.Piscataway,NJ:IEEE,2015:1338-1343
[6]Kim G H,Spafford E H.The design and implementation of tripwire:a file system integrity checker[C]//Proc of ACM Conf on Computer&Communications Security.New York:ACM,1994:18-29
[7]Cabaj K,Mazurczyk W.Using software-defined networking for ransomware mitigation:The case of cryptoWall[J].IEEE Network,2016,30(6):14-20
[8]ESET.ESET anti-ransomware setup[OL].[2018-02-15].http://www.nod32.com.hr/Portals/66/PDF/anti-ransomwaretechbrief-en.pdf
[9]Brewer R.Ransomware attacks:Detection,prevention and cure[J].Network Security,2016,2016(9):5- 9
[10]Kharraz A,Robertson W,Balzarotti D,et al.Cutting the gordian knot:A look under the hood of ransomware attacks[M]//Detection of Intrusions and Malware,and Vulnerability Assessment.Berlin:Springer,2015:3-24
[11]Scaife N,Carter H,Traynor P,et al.CryptoLock(and Drop It):Stopping ransomware attacks on user data[C]//Proc of IEEE Int Conf on Distributed Computing Systems.Piscataway,NJ:IEEE,2016:303-312